A new office in Oakdale, CA

We pride ourselves on our organizational culture. Our team members and contractors decide where they want to work and are allowed to flourish. But after much discussion, a group of said members and contractors decided that time and distance were at their advantage to open a new sort of space, a collaborative space. Some might call it it an office. We call it a creative satellite, errr, office.

So we’ve leased the old Carnegie Building on F Street in Oakdale, CA. It has that historical appeal, as well as modern wiring (nothing like cutting through hardwood lathe to run cable). We’ve taken the bottom floor and should you be interested in some space, we’re subleasing the top for now.

Why Oakdale? As noted, some of the team lives in the nearby area and it’s so nicely positioned right in the middle between San Francisco (hello clients) and Yosemite (hello hiking and camping). Well, close to the middle (it’s technically shorter to get to Yosemite). It’s a lovely town, very nice people.

The process of build out of said office is still in the works, but it is operational. We’ve got 112 square feet of whiteboard space which makes everyone happy (you can never have enough whiteboard space), some assorted other gear for a couple projects in the works, and very fast pipe (never enough fiber either, but we’ll take the copper at 115).

Once we get everything fully up and running, we’ll be offering the local small business community a little something something in September to say hello.

Posted in launch, office | 1 Comment

Increasing transform speed in Chrome with transform-style and preserve-3d

David and I were having some issues the other day getting a somewhat complicated set of CSS3 transforms working smoothly within Chrome. By default Chrome doesn’t have hardware acceleration turned on for 2D transforms. Subsequently things were choppy and very slow.

While you can surely turn on GPU compositing on all pages with about:flags, that’s not exactly what we generally want to tell a user to do. Surely, there must be some way to make Chrome perform the transforms faster. Enter -webkit-transform-style: preserve-3d.

This little style declaration puts the 2D object in a 3D space. While that may or may not be fine based on what your end goal is, for our intents in purposes, it’s irrelevant. What we want is what comes with the declaration: hardware acceleration on the GPU to do our transforms. Simply declaring that single CSS line on the needed objects created a smooth, fast animation experience.

How do you know that the line actually is hardware accelerating your animation? The visuals often become slighly soft on the edges. The easiest way however is to go into the about:flags and enable the FPS counter, which will then show the frames per second when hardware acceleration is enabled.

What to try it yourself? We’re setup a little lab demo to show the declaration in action. With the FPS counter enabled, you’ll notice it pop up when the preserve-3d is toggled (see screenshot below).


FPS counter in Chrome for preserve-3d

If you’re running this demo in Firefox, you’ll note the demo works fine (sans that fact it ignores the preserve-3d since that’s not available in Firefox). If you toggle on box shadow for the gears, you will note that Firefox slows down a bit and grinds at about ~25% CPU utilization. This is likely a result of Firefox doing the same thing that Chrome does by default, which is to not GPU accelerate 2D transforms except for certain layers (ala canvas and what not). Just an observation on our part.

If you want to learn more about the under the hood portions of Chrome, be user to check out the article “Web Graphics – Past, Present and Future”.

Posted in animation, Chrome, CSS3, transforms | Leave a comment

The chase for the wifi-only device fix for PayPal X MPL on Android

Catching up from last time, PayPal’s MPL lib for Android has been somewhat hit or miss for us. It works great, as long as you’re not on a wifi only device (irregardless of the Android OS version). We filed a ticket, we got a quick response that they were aware of the problem, and we waited. And we waited. We heard nothing back from developer technical services for 10 days.

Low and behold, Bill over on the original thread makes note that a version 1.5 had appeared on the site, dated May 18th. Odd…we had looked on the 23rd before we filed our support ticket and saw no new version. He recommended we give it a try to see it resolved the issue.

We loaded it up in a couple of our projects, clean, build and no, it didn’t fix the issue at first glance. Or does it? Upon further digging around in the forums, we see an old post from April had come back to the top, claiming that version 1.5 had fixed the issue. So we check the changelog…but there isn’t one. There is a readme.txt, but it offers no insight if the version fixes the problem. We ping DTS, we get no response.

So we start digging through the developer doc and the code and low and behold, though it is not mentioned there is a single new line of code in some of the examples:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

Sure enough, though the docs fail to mention it, this magic line in the AndroidManifest.xml in combination with the version 1.5 MPL lib resolves the issue.

This was good news, but also left us scratching our head. Developer evangelist Praveen Alavilli reached out and made note that he had published this information on his blog on the 27th. That’s great…but it’s not on the main PayPal X MPL site, and the forum posts (there were others besides ours) was never updated. And DTS never updated the ticket with said information or fix, not until we pointed out the error in the documentation.

Which brings us to the following: if you have a library, have a proper public issue tracker that you update. Have a single location for updates and releases so we don’t have to play track-down-the-update game. It would just make everyone’s life a lot easier.

Posted in article, Java, PayPal | Leave a comment

AndEngine physics and Honeycomb Android 3.x accelerometer data

We’re working on a couple of games at the moment that are making the jump to Honeycomb (better known as Android 3.x to some) using the very cool AndEngine. AndEngine is a 2D OpenGL game engine that makes life easier, offers some very nice plugins, and has many examples to pull inspiration and understanding from.

Now, you may have noticed that if you’ve compiled and tried to run some of the physics examples on your fancy new Android tablet, you may have found some unusual behavior. Everything seems kinda backwards, things are not following where you believe the gravity should be. What gives?

Tim Bray’s “One Screen Turn Deserves Another” explains in nice graphical detail exactly how the sensor system works. In the case of Honeycomb, the default orientation is landscape, which means you X axis is pointed up, your Y axis pointed to the left.

This poses a problem, as we need to determine just which way is up, and which way is down so that we can set our gravity properly. Let’s take the physics in the PhysicsJumpExample.java, which has the following code in the onAccelerometerChanged() :

   this.mGravityX = pAccelerometerData.getY();
   this.mGravityY = pAccelerometerData.getX();
 
   final Vector2 gravity = Vector2Pool.obtain(this.mGravityX, this.mGravityY);

On our Honeycomb device, you’ll notice that objects fall to the right of the screen. This is because this.mGravityX is mapped to the Y axis, and hence as Tim notes the “sensor coordinate system no longer lines up with the screen’s coordinate system” and hence gravity falls along Y…which is to the right.

So, let’s pretend we only want to fix this demo for a Honeycomb tablet. How do we do it?

   this.mGravityX = pAccelerometerData.getX();
   this.mGravityY = pAccelerometerData.getY();
 
   // our gravity needs to be to the bottom of the screen; -x
   final Vector2 gravity = Vector2Pool.obtain(this.mGravityX * -1, this.mGravityY);

The only thing we’ve done is flip the mappings of mGravityX and mGravityY, and set the gravity of our X axis to be negative. Why negative? Because the X axis sensor is pointing up on device in landscape; if it were positive, gravity would be to the top of the screen.

But Justin you say, won’t this “fix” break on other phones that aren’t running Honeycomb? Yes, yes it will. You’d need to check and remap you sensor data to the appropriate variables so that your gravity and objects would always go where you wanted. But that’s for another day.

References

AndEngine @ Google Code
AndEngine examples @ Google Code

Posted in AndEngine, Android, article, games | Leave a comment

PayPal MPL: Wifi only Android devices fail with NullPointerException

If you’ve been using PayPal’s MPL lib for Android, you may have noticed some unusual behavior on certain devices: a NullPointerException error when the library is initialized. We’ve run into it here, and after a serious amount of device testing, have determined that it only happens on Wifi only Android devices (your Xoom’s, Tab’s, and related tablets and PMP’s). Annoying to say the least.

On the bright side, the PayPal Developer Technical Services team did respond quickly to our ticket and had this to say yesterday:

This is a known issue we just discovered. I will get back to you on the ETA or possible workaround as soon as I have the information.

Still no solution yet, but hopefully we’ll have one soon. See the ongoing thread over at PayPal’s X.com forums.

Posted in Android, Java, PayPal | Leave a comment

Stop Sugarcoating It makes an appearance

In a joint effort from the web product guys and design department, we’ve come up with a little tounge-in-cheek site called Stop Sugarcoating It which focuses on the things people often say that frankly do not mean much. It’s based on a large number of 1940′s and 1950′s advertisements (the front page alone was a doctors-approve-cigarettes ad…yes, really) that were brought into the 21st century. Some ad styles never go out of style.

Look, we like sugar as much of the next guy. It’s sweet, it makes bad things taste less bad, it’s the thing that the high fructose folks and the natural sugar folks keep arguing about. The sad truth of the matter is it’s just used too much, both on your food, your work, your truth. That’s just not good for anyone.

Beyond the satire, the site itselfs makes heavy use of CSS3, JavaScript, and HTML5 when needed. If it could be rendered without an image, the guys tried it. So have a look, a laugh, be inspired. And stop sugarcoating it!

GO TO: StopSugarcoatingIt.com

Posted in article, CSS3, design, HTML5, JavaScript, jQuery | Leave a comment

From the animation department: David’s Minecraft ep 0

Most people don’t realize that Stickman has an animation department. We don’t advertise that fact as much as we should; most of the jobs that leave that department don’t get stamped with the Stickman name (for good reason: they’re not ours at the end). Our Chief Artist David Steele doesn’t lack in the skill department. Most people are used to seeing his paintings, his sculptures, his single frame renders. He guides that team and does it well.

David has been working on a series of Minecraft themed episodes for fun. Here is Episode 0 for a series of Minecraft themed episodes that he’s been working on. The rigs, lighting, textures…that’s all David. Note, the audio isn’t done in this clip (the guys that do the audio have not finished their mix yet, hence, the episode 0 moniker), but it gives you a clear idea of the quality that can be produced.

Be on the lookout for more episodes in the coming weeks, and if you have questions about how we can help you with your animation needs, ping us at team@stickmanventures.com or on Twitter: @teamstickman.

Posted in design, Microsoft, video | Leave a comment

Microsoft + Skype deal: overpaid?

I’m not entirely sold on the fact that Microsoft purchased Skype. If you look over the numbers, it just screams “overpaid” in every way. For all the users in the world and an interesting platform (we use it, it works in certain cases), Skype hasn’t really determined a solid means to turn that into ready profit. It just has that feeling that Microsoft continues to see it’s place in the interactive Internet errode (can something that largely never existed errode?) with the likes of Facetime and Google Talk/Voice making inroads and they just don’t have anything like that. So hey, we have piles of cash, let’s buy Skype.

It’s all going to play out how they end up positioning Skype within their existing portfolio. I can’t imagine you’ll see the Skype brand name in say Office, but you have to expect that the consumer brand will live on and some level of intergration of the technology to extend both their small business and enterprise messaging offerings will happen. The current suggest structure is interesting; I can’t help but wonder how long it’ll talk to get Microsoft engineers integrated into the Skype team to start guiding the unit (to think it’s just a straight pairing…well, I just can’t buy into that).

The deal is still better then the unsolicated attempt Microsoft made for Yahoo. At least there appears to be some idea of what to do with this.

Posted in deals, Microsoft, Skype | Tagged , , | Leave a comment

Google Chromebook for business: an interesting use case

Today’s annoucement at Google I/O about the Google Chromebook is sure to be debated to death (our own Justin Ribeiro is at I/O and will likely tell us more about it). I don’t want to get into the debate to deeply, but let’s talk about the Google Chromebook for business.

While it may or may not be a hit with consumers, the bigger question is will businesses adopt such a radical new platform for their workforce. Increasingly, businesses continue to leave the desktop in the past, moving to software as a service providers such as Salesforce and NetSuite and having their own internal applications built as web applications (we should know, we build those very web apps for a numbers of corporate customers). With virtualization giants Citrix onboard, it further decreases the barriers to entry, allowing organizations at the very least to give them to employees in trial runs to see just how well the puzzle pieces fit.

We’ll be polling on our own just to see what kind of reaction businesses have to this, in particular what use cases they see it working in. There are definitely some win-win’s available that might be able to bring down costs for certain branches of an organization. Note, I say certain branches; to say it’ll replace all systems in an organization is ludicrous claim (one which makes us chuckle, and on that Google did not make today).

Posted in Uncategorized | Tagged , , | Leave a comment

NetSuite announces new enterprise deals and cloud based options

NetSuite has announced several new large deals at their recent SuiteWorld conference. Netsuite is not exactly new at the on-demand game, but has been increasingly uping their play from the small and medium sized corps into the much larger (and lucrative) enterprise markets. New subscribers include the likes of GroupOn and Qualcomm.

The more exciting news is probably that NetSuite has announced further integration deals with Google on Google Apps and in the Marketplace (press release), as well as with partnering with Oracle to bring their Exadata Database Machine into NetSuite cloud (press release). This should give NetSuite not only a performance boost, but also solidify them in the minds of larger enterprise customers who don’t want to sacrifice performance for cost savings (but want a more integrated office enviroment with less infrastructure overhead).

Cloud based ERP solutions don’t often make the biggest waves in the mainstream press (it’s not terribly shiny like say the current tablet wars) but it’s an important ongoing need that must be addressed. Increasingly, cloud based enterprise solutions can offer similar levels of performance but offer significantly less overhead when setup in a cohesive manner.

Posted in enterprise, NetSuite, Uncategorized | Leave a comment