Friday, November 1, 2013

How to run an IISNODE (node.js for IIS) app in a virtual directory OR how to build a node.js app that works regardless of virtual directories in IIS

How's THAT for a lengthy title?

I spent more time than I care to admit trying to figure out how to get an existing node.js app running in a virtual directory on IIS. The entire reason I set out to use node on IIS was to be able to use it inside an existing asp.net app and that meant either a sub-app or a virtual directory and in this case, the latter seemed the better (easier) choice but the virtual directory name was causing reference issues for "Dynamic" requests (actual node.js app files).

The solution turns out to be well addressed, at least for "express" framework apps using app.use()

When you call app.use(app.router), you can pass a namespace prefix for your virtual directory and then requests will succeed BUT who would want to hard-code their virtual directory name into their app [yuck!]?

The solution turns out to be quite simple because IISNODE promotes appSettings to environment variables. Taking advantage of this fact, you can add an entry to the apps web.config such as:

<appSettings>
        <add key="appvirtdir" value="/nodetest" />
</appSettings>

Then you can make one simple modification to your server.js file like this:

app.configure(function () {
....
    app.use(process.env.appvirtdir || '', app.router);
....
});

This way your app is flexible but not even tied to the existence of the environment variable let alone its value UNLESS you want it to be and even then, the variable is local to the app (not really an environment variable).

I'm still working on the static requests and will update this post when I nail that. From what I'm reading everywhere, it should be as simple as updating the relevant rewrite rule but so far it seems that the rule isn't being applied so the settings are irrelevant. I'm still trying to determine why but I'm not quite competent with URLRewrite. Below is what I currently have.

My virtual directory is "nodetest"
~/public/stylesheets/style.css exists
/nodetest/stylesheets/style.css returns "Cannot GET /nodetest/stylesheets/style.css"
/nodetest/public/stylesheets/style.css returns the expected CSS

<rewrite>
            <rules>
              <rule name="LogFile" patternSyntax="ECMAScript" stopProcessing="true">
                <match url="^(?:[a-zA-Z0-9_\-]*/)*[a-zA-Z0-9_\-]+\.js\.logs\/\d+\.txt$" />
              </rule>
             
              <rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true">
                  <match url="^server.js\/debug[\/]?" />
              </rule>
       
              <rule name="StaticContent" patternSyntax="Wildcard">
                <action type="Rewrite" url="public/{R:0}" logRewrittenUrl="true" />
                <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                </conditions>
                <match url="*.*" />
              </rule>
       
              <rule name="DynamicContent">
                  <conditions>
                      <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True" />
                  </conditions>
                  <action type="Rewrite" url="server.js" />
              </rule>
            </rules>
        </rewrite>

How to install Node.js on Windows and integrate with IIS

I've decided that it's time for me to look at using node.js on Windows because I want a JSON web service that will run inside IIS, using SQL Server and I've learned that node.js is now a first-class citizen on Microsoft platforms.

My goal is to develop a web service that can consume my SQL Server DBs natively and run inside IIS using Node.js for [theoretically] maximum performance.

My development platform (where I'll first run all these steps) is Windows 8.1 but as I understand it, this should all work from Windows 7 to 8.1 with virtually no differences. At this time, I'm using WPI 4.6.

This process will give you an environment where IIS uses url-rewrite to send all requests to server.js in the project folder and it will do the routing and then web.config uses the iisnode section to cause certain files/folders to get processed through node so that IIS is the web server and node is essentially the application processor.

The first step is to install Web Platform Installer (WPI). At present, this can be found at: http://www.microsoft.com/web/downloads/platform.aspx

WPI is essentially an IIS package manager but it does a LOT more than just manage packages. Using WPI, we will install WebMatrix which does even more than WPI (setup entire sites, with dependencies and provide a simplistic (yet still powerful) development tool that can then publish an entire site (with dependencies) to IIS AND run locally for development.

WPI is a 114KB download (web installer itself) that takes just a couple minutes to install and run.

First run will look something like the following except you may see newer packages (they're listed newest to oldest by default):

The next step is to simply use WPI to install WebMatrix. In reality, you can install WebMatrix directly (though I think that might install WPI anyway), but WPI is akin to NPM and you'll likely want it soon anyway.

At the top-right of WPI, in the search box, type "WebMatrix" and press enter/return. Find the latest version (currently 3) then click the "Add" button for it. Next, hit the "Install" button at the bottom.


I have a fairly fast connection (150Mb Cox Ultimate) and a fast machine so my install took about 20 seconds. When the install is complete, exit WPI and launch "Microsoft WebMatrix" from your Start Menu (or MetroUI if you've managed to live with it. I use StarDock's Start8 to give me back my start menu to and basically do away with metroUI).

Once you've launched WebMatrix (here-unto referred to as WM), deal with the Azure marketing content (I hit "not now" at the bottom right) and you're ready to setup a Node.js site.

Click the big "New" icon then "Template Gallery".


On the left, select "Node.js" template group then pick one of the templates. I'm using "Starter Site" for this tutorial. Next provide a "Site Name" at the bottom then click "Next".


As you click "Next" on the next few screens, the "magic" happens. ALL the dependencies are identified, downloaded, installed and configured rather than you having to locate all the compatible libraries, apps, modules, etc.. Just click "I accept" and sit back with WebMatrix does all the hard work. This will also install NPM by the way :)

This process will install "IISNode for Express" by default. If you are running full IIS (real development machine or server), you can now go back into WPI and search for and add "IISNode" to install the version for IIS, otherwise you now have a fully working Node.JS site ready to be opened in Visual Studio, run locally as-is, or published to an IIS Server.



OPTIONAL:

If you're running full IIS locally and want to deploy locally (or on a machine with IIS), then follow the steps below (found them HERE). Also, using WPI, install "IISNode for IIS (IIS exists)".

Here is the quick version of what I found that is more recent guidance and was enough for my demo:
  1. 1.Install Web Deploy 3.5 for Hosting Servers [using WPI]
  2. 2.Bounce IIS and IIS Manager [Restart IIS]
  3. 3.Configure the Management Service I used parts of this: http://blog.scnetstudio.com/post/2011/01/08/How-to-Configure-Windows-Server-2008-R2-to-support-Web-Deploy-(for-Web-Matrix).aspx
  4. 4.Install Web Matrix to another machine. (You cannot deploy to the local machine.) [Yes you can, you just can't deploy to 'localhost', you must use your machines FQDN]
  5. 5.Deploy from the machine in 4 to the machine configured in 3. [Which can be the same]
Hope that helps others through the process
Matt 
I still had some issues afterwards and one was resolved by opening "Programs and Features" from the control panel, searching for "Web Deploy", then click "Change" and select the deselected options (like the IIS extension).

UPDATE:

Of course, after taking the time to put this post together, while searching for Razor related content, I ran across the following (which is basically my post with follow-up related to Node.js code): http://www.microsoft.com/web/post/how-to-use-the-nodejs-starter-template-in-webmatrix

Thursday, September 12, 2013

[RESOLVED] Windows 8 Remote Desktop Client Crash

I've been running Windows 8 in various forms as long as it's been available to MSDN subscribers and even with 8.1 about to release, MS has continually failed to address a major crash issue.

At first I figured it was a remnant of my forced upgrade from Windows 7 to 8 beta/preview/rtm etc. But when I started Googling in July of 2013, I discovered that I wasn't alone. Many were reporting issues with remote printers that could be resolved by either deselecting "Printers" on the "Local Resources" tab while others indicated that changing the default printer would help. Still others reported having to uninstall certain printer drivers.

Alas, these suggestions made no difference for me so I started digging. After downloading what I understood to be the Win7x64 binaries (turns out they weren't which was a blessing in disguise) and trying to run it with the same error, I gained a new perspective on the issue which was wrong, but still led me in the right direction.

Event viewer reported Event ID 1000 on Source Application Error. In the details I found the Faulting Application Path: %windir%\system32\mstsc.exe

I started investigating and discovered that hardlinks were being used (I have Link Shell Extension installed from http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html). When I executed the other enumerated file and got the same error but saw a different Faulting Application Path and the same Faulting application module (NTDLL.DLL), I started to suspect that the issue wasn't MSTSC itself so much as the context it was running it. The other path (specific to x64 install) was %windir%\WinSxS\amd64_microsoft-windows-t..minalservicesclient_31bf3856ad364e35_6.2.9200.16384_none_a6a5f4f9aadbc5f5 (this is where I had to adjust settings).

To cut to the chase, my suspicions led me to start playing with the compatibility settings and "Run As Administrator" and after thinking I had found the magical combination to run mstsc.exe at the amd64 specific path, I tried my "Remote Desktop Connection" start menu shortcut only to find that the error still existed.

UPDATE: Turns out that I had an instance running in the background and when I closed it, the crashes returned which led me to my final solution. Since I'd replaced my Start Menu shortcut, I had full permissions to modify the shortcut so I went to the compatibility tab and set "Run as Administrator" again and the crashes were once more gone. It appears the solution might be as simple as right-clicking your existing shortcut and using the Run as Administrator context menu item. Can anyone confirm it to be that simple or if the shortcut must be replaced to point directly to the instance under WinSxS?

In the end, I resolve the issue but can't even explain how. I CAN tell you what I did in general terms.

  1. I changed the owner of the amd_64_microsoft-windows-t..minalservicesclient_ folder to myself from TrustedInstaller.
  2. I granted myself FULL permission on the folder.
  3. I tested
  4. I changed compatibility settings and Run As Administrator on the WinSxS instance of MSTSC.exe
  5. I tested
  6. I undid the compatibility settings.
  7. I tested
  8. I replaced my Start Menu shortcut
  9. I tested
  10. I reverted owner to NT Service\TrustedInstaller
  11. I tested
Somewhere in there the problem was resolved and even though I believe everything except the shortcut back to its original state, the problem has remained resolved.

I wish I had a cleaner solution and perhaps once I try to repeat the process on my laptop later I will have a better answer, but for now, this works for me. Even though MS hasn't resolved the problem in some years, I can no use Remote Desktop the way it was intended.




Tuesday, July 23, 2013

How to REALLY move your Google Drive folder WITHOUT re-syncing or "not your original Google Drive" error

I've read article after article which was just a copy/paste of the flawed (read... BROKEN) directions provided by Google on how to "Move your Google Drive Folder".

THEY DON'T WORK (unless you're one of very few lucky people in which case you should go grab some lottery tickets).

If you follow the directions, you'll get an error about the new folder not being the original. Umm, isn't that the point of MOVING your folder? By definition, the new one isn't the old one even if it has all the same contents.

The problem and solution both lie in 2 files which you will find in the folder %userprofile%\AppData\Local\Google\Drive (for Windows anyway, not sure about other operating systems though I suspect the file names will match).


Those files are:

  • snapshot.db
  • sync_config.db

I can't give detailed instructions because the "fix" required hex editing these files and those directions will vary a bit but I use UEStudio (fantastic text/hex editor with syntax highlighting) and it has an ASCII find/replace option which I used to change my old path to the new.

The entire process was:
  1. Stop Google Drive Sync (right-click and Quit)
  2. Move the entire Google Drive folder (default is in Documents and Settings)
  3. Open each of the two files and do a find/replace from the old path to the new.
  4. Start Google Drive
  5. Be done (NO SYNC REQUIRED)
Why Google refuses to provide the action in the GUI after something like a year is beyond me and clearly isn't not difficult (sure, I may possess above average intelligence...) but this took me all of 5 minutes to accomplish once I had been enlightened to the AppData files for Drive (by another rather crude if not erroneous article).

I really do hope this will help a significant number of people out there. If it helps you, PLEASE share this article using the following link and do it on all the Google Drive support boards so that others can find it and Google will see it also.

http://goo.gl/q9Ehgr <-- Share this article using this link please so I can do tracking to show Google

Related: Recent issue I had, Google wouldn't resolve and I figured out myself. "Google Drive Failure Comes to a Head ... Read More"

UPDATE 2014-04-07: After researching other sync-app solutions, I've discovered one that seems to address the 3 most significant issues I've had with every other sync solution out there.
  1. Not having to re-download files that are already up-to-date (or at least REALLY close)
  2. Syncing folders that don't exist in the "Google Drive" folder OR syncing all the folders you want and NOT the ones you don't.
  3. Moving your "Google Drive" root folder (less significant in light of points #1 and #2) without having to redownload everything.
I've tried a good number of solutions and am on the verge of developing my own anyway because I think I can still make a more responsive and efficient client with plenty of options, but in the meantime, for my own purposes I am using SyncDocs. I have more than 140,000 files and roughly 70GB to manage right now (growing daily) for business purposes so Google Drive Sync didn't work for me. For starters it is a 32bit client and crashes during initial sync (or random re-downloads). This is a confirmed issue from a senior engineer on the Drive team that I've been in touch with.

If you're interested in a premium client that has real flexibility, a good UI, will allow you to seed with existing files, is fast, and efficient at syncing, please comment below. I'm considering a Kickstarter project to help make a final determination of whether I should move forward and how aggressively I should do so. If I move forward, I will be doing a proper beta program (REAL beta meaning I will actively engage to collect feedback, correct issues, update the client, etc..), provide multiple levels of backing which will dictate the level of support beyond beta, featureset, licensing (if I don't go perpetual), etc..

I will also use surveys to get a feel for what is most wanted, needed and what people might be interested in paying for.

Comment below to let me know your thoughts and interest.

UPDATE 2017-04-06: It's been nearly 4 years since my original post, 3 since my last update, and almost 1 since this topic was an issue for me. Somewhere along the way the Drive Sync client was given a registry-controlled feature to help the Sync client recognize existing files rather than ONLY recognizing files synced by the Drive Sync client. In recent history (I'm not sure, but I'd estimate 3 months ago) that feature has been turned on by default so now (in theory), you should just be able to point the client at a folder during setup, and it will merge the contents with Drive, identifying existing files when it's reasonable rather than creating duplicates.

tl;dr: This shouldn't be an issue anymore if you're on a current sync client and Google auto-updates them so you should be.

Sunday, February 3, 2013

No less than 12 years I've waited for Meta View...

...or at least the concept they are bringing to life. I have so much to say that I'm too overwhelmed to write a long post so I'll keep this simple. If you have heard my rants about the future of computing interfaces (Augmented Reality, aka NO MORE MONITORS), then you have heard me describe Meta View though until now, nobody had brought all the technology together with the same intent which I had. It's finally happened! Go check them out and if you know me and my ideas, PLEASE comment here to encourage them to get me setup to develop my idea (the software side) using their hardware. I don't know if it's just a matter of selection (like the Leap Motion I got), cost, or what so any encouragement is good.

http://www.meta-view.com

My message to Meta View:

I began working with "VR" as a novice developer circa 1994 on a Zenith Data Systems 8086 with CGA Amber Monochrome screen where I was writing my own graphics libraries in assembly language and consuming them in qbasic (though I started coding in gwbasic) to build a virtual bob-sledding simulator. Next I incorporated a mouse and built my own 3D asset system to import, parse, visualize and manipulate wireframe objects. That "3D viewsystem" was also my own doing with the help of nothing both the built-in documentation for syntax/methods and a college algebra book (when I was in middle school) to learn the needed trig from. Since those days I have been tracking the progress of all things VR/AR and as far back as 12 years ago I have been preaching the future (more like the current now) of computing interfaces. My vision was simple. A transparent, stereoscopic HMD integrated with head/location tracking that would allow me to overlay (the term Augmented Reality wasn't one I'd heard of back then) my computing environment onto my real world instead of fitting it onto a monitor. Now I sit with 8.7 million pixels in front of me (one each of 1080p, 1200p, and 1600p monitors) and STILL feel like I'm trapped. I wanted to put application elements (windows, tickers, videos, etc..) where they made sense in my environment. Now I'm developing for Leap Motion (I have a gen 6 unit) and next month my Occulus Rift shows up. The rift is a stop-gap solution that I intend to hack by adding cameras that I can redirect to create the illusion which meta looks to be tackling head on (with transparent AMOLED I would guess). My goal with these products is to create a gesture-based, window management solution (ideally for DWM in Windows, but most likely as a plugin for Compiz-Fusion) that will allow me to get rid of my monitors for primary usage.

Meta-view would take all the hackery out of the equation for a proof of concept (I haven't seen any specs yet about resolution or pixel density so I don't know if the product will be appropriate for general computing) and let me focus on the end goal of the software interface (gestures, window management and the likes). All these years I've not had the resources to patent my ideas, build prototypes and see it through and at the same time I've been skeptical that I would succeed in that type of business field (though I'm very self motivated and confident otherwise). You would be hard-pressed to find anyone outside of your company and myself that is MORE enthusiastic about the vision we share where the future of computing interfaces is concerned.

I will be entirely honest and say that my professional experience with project management, architecture and development is not strong with the exact tools I'll need for this project but at the same time, i'm experienced enough to already know WHAT I need (hooking DWM or building for compiz, gesture recognition, etc..) and I imagine you'll be providing an API and SDK considering the sensors I see on the unit. I have been a professional developer for 12 years now thanks to a quick-start in the US Marine Corps (and easily 7 as an enthusiast before that). I have a Bachelors of Science in Information Systems Security and on any given day am either building software, building/maintaining databases, managing our IT assets (networking, desktops, etc..) for my current venture or hacking/tinkering with the latest of tech. I've been to Google I/O twice and plan on going again this year, own http://AllDroid.org (the first major Android hacking site aside from XDA-Developers though we've since gone quite) and ultimately I hope to see this tech be incorporated well enough with a mobile device to see TRUE mobile, AR be a reality. I think that we have all the technology needed now. We just need companies like yours to provide the hardware and people like me to provide the ideas/software.

Please seriously consider me for early access to a developer unit so that I can begin working with the best solution for my idea as soon as possible instead of being forced to make due with other solutions not quite ideal for it.

As a developer myself, I'm fully familiar with NDAs and beta testing and can assure you that I'm a good candidate even aside from my ideas.

Sincerely and enthusiastically,

Michael Richardson

Friday, October 5, 2012

Roll Your Own File/Folder Sync Solution the Easy Way

Well, easy is a relative term but I find RSync on Windows to be painful at best and Unison is better but no UI for those who aren't terminal-crazy. I'm somewhere in the middle.

So anyway, here are the links you need (and to give credit where it's due):

  To actually be able to sync files/folders in various way and have a UI to configure the rules.
  To fire off sync operations when files or folders are changed.
  To hide any command windows that might popup.

I'm in a hurry so I won't give you a step-by-step, but basically use the 1st link to install and configure SyncToy then go Google the syntax to execute a command-line sync of a "folder pair".

Once you have that syntax, use the 2nd link to create a .cmd (or .bat) file and .vbs file that will call the .cmd so that you can sync without a window popping up to annoy you.

Finally, use the 3rd link to download and configure TFS (TheFolderSpy) to monitor the folder your're syncing (the "Left" folder in SyncToy terms) and then use wscript to execute the vbs script and pass the .cmd file path so the sync won't popup.

Now anytime you change anything in the source ("left") folder or sub-folders, the sync will occur. Pretty much the same concept as Google Drive Sync, Drop Box, etc... except it doesn't require your data to go over the Internet, it can be used even locally on multiple drives, etc...  Complete control!

Enjoy!

Wednesday, August 29, 2012

3D Vision Support for YouTube Requires Firefox?!

This COULD be my shortest entry ever because I'm next to speechless. YOUTUBE (owned and managed by Google) doesn't provide HTML5 3D support for Chrome (or the other way around if you want to look at it that way) but DOES for FireFox?!

Are you serious Google?

Don't believe me? http://blogs.nvidia.com/2011/05/youtube-now-in-3d-vision/

Sunday, August 5, 2012

Thoughts about the Oculus Rift and other display tech 1.0

Today I made my $335 pledge toward the Oculus Rift KickStarter project and that's led to some interesting conversations on Google+. The following was originally intended as a reply to ? on the posts comments, but it got a bit long-winded so I'm blogging instead.

I've been searching for more tech details (about the Rift) like mad and so far I can't find a damn thing! :)  Someone on here said something that did get me thinking though and I have an idea of what they may have done to use such a low-res screen (relatively speaking) to get an amazing picture. I just put in my $335 pledge and I'm going to try and reach someone to confirm (with an NDA in place) because if I'm right, then I'd be happy to explain the approach if they'll let me. If I'm wrong, then I have another idea that they might be able to use to take this up another notch still :)  What I will say right now is that the reason 720p / 2 per eye doesn't sound like much, is because 720p (and every other display out there that sits on a table/desk/wall/etc... is built so that no matter where you look ON THE DISPLAY, you get an equally high-quality image and that's necessary because the display doesn't actually take up much of your entire FOV and it's not tired to head-tracking (unless you're using TrackIR or similar tech). If a system knows exactly where you're looking and the display takes up most of your FOV, then it only needs a lot of detail in a fairly small area and the remainder of the display can actually be quite low-res/low-quality. Eye tracking is one way of doing this that's been experimented with, but that's very complicated and expensive. You can follow me here on G+ to see what I find in the way of tech and I may even share my own ideas independently, but my G+ shares will just be links to my blogger site ( http://rainabba.blogspot.com ) so I have more presentation control so you may want to just go subscribe there so you can get more immediate alerts you're less likely to miss. I don't blog often so you won't get spammed by alerts :)

Another cool display tech you might want to check out is a home-brew project using an approach that's well known in the $1m+ flight sim industry called collimated light displays. These guys seem to have figured out an approach that allows for the use of an off-the-shelf projector and less than $100 in materials to create one hell of a wide FOV display appropriate for flight/racing sims on the PC. Walk around of the DIY collimated display.They have quite a few other videos showing the setup and theory but what makes this display so amazing is that as you move around, the image appears to remain effectively the same just as it would if you were looking "out the window" of a vehicle. That's what makes these especially useful for simulators. Their build could EASILY use a DLP display with active-shutter glasses and you'd not only have that OTW effect, but stereoscopy as well and it would be mind blowing without an HMD. Depending on what I can do with the Rift SDK, this might be my next major project for use to replace my primary desktop monitors (24" 1200p, 30" 1600p, 24" 1200p).

It could also be a nice enhancement to a multi-mon desktop setup if you can afford a projector with seriously wide-res OR matrox display adapters that do edge blending and some cheaper projectors (could even use a bunch of really cheap ones turned vertical if you have the Matrox hardware). Example HERE (this isn't collimated though so if you move your head too much, you'll see distortion).

My hope for the Rift though is to see someone get a 3D desktop work space going for Windows (like Compiz-Fusion) and then add cameras to make AR possible then my "work-space" will be my entire environment. A project I've been evolving for no less than 10 years in my head. Basically, using compositing technology, imagine being able to place your windows anywhere in 3D space (though most likely perpendicular to virtual walls you setup which are aligned to the real walls in your space, or as normals to a virtual cylinder that exists around you. Then when you "focus" a window, it snaps to a position that will allow for the best possible 1:1 pixel mapping of the physical display so that text can be as sharp as possible. Anyway, that's just the tip of a VERY involved idea I have and should be another post (or 10) and by now many others have come up with very similar ideas.

Wednesday, July 11, 2012

My thoughts on the "AllDroid" issue as of 20120711





This was a reply to someone on Google+ which I recently left and since this was a very public issue and this reply represents my current feelings and perspective, it just makes sense to throw it out there for the few who might want to hear it (or those who don't but can't resist).


I don't fault bird much if any in what I'm talking about. He was a hard-working, low-key dev that I pushed to make noise if anything. Steven is another story. When he came on "the scene", he "wanted to learn how to code", was a nobody on the Android scene, and was gung-ho to be an admin for AllDroid so long as I agreed with his ideas. He and I fundamentally differ though and he just said it clear as day, "it's a business". He was always out for money and/or attention. "I" was out to support developers by providing any resources I could manage through AllDroid. This including borrowing $5,000 to buy the rights from Brent Fishman. Every dime the site earned went to developers or into improving the site itself even though I should have been paying back that loan. *One* admitted exception was a phone upgrade for myself. Another fundamental difference between Steve and I is that I didn't play games (read "politics") unless it was absolutely critical and this meant that I had no problem calling out people when I saw fit (like when they sold code that wasn't theirs to sell, or store ideas from devs and claimed it as their own). So of course Steve "seems" nice to most people. That doesn't mean he wasn't sincere with you. I'm not trying to speak to the nature of your relationship with him. I'm just saying that it often wasn't sincere.

Anyway, I don't even have a problem with how RW is run. It's how it came to be that demonstrates his true nature. He stabbed me in the back once and I forgave him only for it to happen again and the second time, he and his buddies used outright lies (under the guise of ignorance that was more like naivety at best) to drag my name and AllDroid through the mud, killing the site. If it wasn't for my willingness to make him an admin, give him the freedom and control I did, then the humanity to forgive him the first time, I have no reason to believe anyone would even know his name today. I gave him AllDroid as a platform to stand on thinking he was interested in bettering the Android community and instead he used it to make a name, gain a cult following, then burn me at the stake and to this day he's always got some excuse, reason, or hollow words to try and make it seems like something other than what it is. I can't tell you how many months ago he and Bird told me that they'd be throwing some money my way to help out in light of what went down and I haven't heard from them since.

I'm sure that there are few people out there who both believe me and care what I say, but I've accepted that and as bitter as I am about what went down, the fact is that I (my better nature) made it possible and I had many chances to prevent it. In the end, I'm likely better off for it anyway because AllDroid was consuming WAY too much of my time and since it's gone, I've been able to go back to school, advance my business, and now I'm about to have another child (literally any day) and I couldn't have managed AllDroid along with any of those things. What I am sad about is how much the Android community had to pay because of the way AllDroid played out. When Brent shut the site down, he severely fractured the community (as if he hadn't done enough harm before-hand with the way he was playing politics). When Steve and friends (led by Tom Spear) executed the final blow, they saw to it that the Android community would forever be split even more ways and dominated by commercial sites who will always appear to have an interest in Android, but in my experience, are more concerned with their pocket-books.

A wise woman by the name of Maya Angelou once said something that I wish I'd heard and taken to heart before encountering the likes of Tom and Steve (along a few others), "When someone shows you who they are believe them the first time."

Now tell me, who is looking to help Android more; they guy who spent hundreds of hours for the community, borrowed thousands of dollars, trusted others claiming to do the same then getting stabbed in the back, or the guy who did the stabbing and turned around to launch a site built off ideas he received from his victim, and did so for "a business"?

Everyone is entitled to an opinion, but shouldn't it be based on obvious facts?

I'm going to end on that note because the other thing I learned through this experience is not to get sucked into the drama. Speaking my mind once in a while is one thing, but engaging in an on-going dialog is another and I have much more important things to spend my time and passion on. Android is clearly taking very good care of itself thanks (ironically since they are the reason AllDroid came to be) to XDA. I'm sure RW does its part somewhere too, but I use XDA exclusively these days and virtually never hear about RW which suits me just fine. :)

Tuesday, March 13, 2012

Go GOOGLE! Way to respect the developers for Google I/O 2012

The new prices might be tough to swallow, but the restrictions on being able to buy 1 ticket and NOT being able to sell them should severely limit the abuse that occurred in years past where people basically hocked tickets which seriously limited the number of REAL developers that could attend I/O.



Input/Output ExperimentCreate your own machine 
in our Chrome Experiment.
Start Building

Google I/O 2012 registration terms and conditions:

  • An individual can only purchase one ticket.
  • Tickets may only be used by original purchaser. Tickets may not be resold. The resale of a ticket will render the ticket null and void without any responsibility to Google.
  • Tickets may be transferred at Google’s sole discretion. Google reserves the right to reject any transfer requests.
  • Persons who are:
    1. residents of embargoed countries,
    2. ordinarily resident in embargoed countries, or
    3. otherwise prohibited by applicable export controls and sanctions programs may not attend the conference.
  • In order to register, users must have a Google Account and access to Google+.
  • Photographs and/or video taken at Google I/O by Google, or others on behalf of Google, may include your image, voice, or likeness. You agree that Google may use such photographs and/or video recordings for any purpose without compensation to you.

Followers