App inventor first fiddlings

I’m finally getting a chance to try out App Inventor.

The first thing I found is that Java applets and jnlp seem to crash firefox on Fedora 13. That’s a shame. But the Chrome browser seems to do better, so I proceeded forward with that. Also, it looks like Google heard my complaint and, in addition to a .deb package, now provides a simple tarball for non-deb Linux users (that wasn’t so hard, was it?).

The first thing that comes up when you visit the site and have access is some kind of UI builder thing. Among the first things I noticed about this is that it only has LinearLayout and TableLayout. I guess that’s for the sake of simplicity, but… no RelativeLayout? It’s not obvious how to use everything that’s there, or how to hook anything up to actions. Things became more interesting when I discovered the “Blocks Editor”.

BTW, was there some kind of manual to read? I don’t remember seeing one, but I probably breezed by it. Ah yes – I started there and headed down the installation rabbit trail. Back to the intro; it brings up both the Designer (that’s the first thingy) and the Blocks Editor right away. So there it is.

Of course I quickly built a layout with a text editor and button and deployed it to my phone (emulator, actually) right off to see it in action. That worked. However later on when I was working on a regular app in Eclipse and tried to deploy it, that seemed to fail. The log was full of errors I’m not used to – something about not matching a certificate. Did app inventor’s tooling ruin my emulator for other development? Good to find out before I try it on my actual phone.

So, I just tried the first tutorial. It’s fairly cool that while you’re building your app in the tool, it’s being updated at the same time on the phone. Obviously, there’s an app inventor component running on the phone to make that happen. When you’re done building it, you can package it as a standalone app. While I was waiting for that to finish, I brought up adb logcat to see what was going on. It said that the adb server was “out of date” and restarted it – this apparently cut app inventor’s connection. I don’t know if this is specific to Linux or even my system, but it doesn’t seem like you can use it in parallel with the other SDK tools. Then again, logcat didn’t get cut off when I reconnected app inventor.

As I read initially, there doesn’t seem to be any ability to create multiple screens. But there’s a “canvas” block that looks promising for achieving a multi-screen effect.

When I went to add some contacts for the second tutorial, the act of leaving the app inventor setup evidently triggered the “server is out of date” problem again. I wasn’t able to reconnect app inventor to the emulator; I eventually restarted the Blocks Editor. It seems to be necessary to re-download the Blocks Editor each time – I can’t just re-start the one I already have, or it doesn’t come up with the project contents.

That’s about all I have time for now. It looks like an interesting way to introduce someone to creating simple apps to the phone – especially if they’re graphically minded. I’ll show this to my Android group tomorrow.



Reverse proxy resource usage – httpd 2.2.15

Recently I had reason to find out what happens when your httpd config includes a LOT of ProxyPass statements. The particular use case involved an application farm with one VirtualHost per domain for hundreds of domains, each very similar (though not identical) with dozens of ProxyPass statements to shared backend apps. But just a few dozen domains resulted in very high memory and CPU use.

I set up a simple test rig (CentOS 5 VM,1GB RAM, single x86 CPU, ERS 4.0.2 httpd 2.2.15) and ran some unscientific tests where the config included 20,000 ProxyPass statements with these variables:

  1. Unique vs. repeated – unique statements each proxied to a unique destination, while repeated ones proxied different locations to the same destination.
  2. Balancer – the statements either proxy directly to the URL, or use a pre-defined balancer:// address.
  3. Vhost – the ProxyPass statements were either all in the main_server definition or inside vhosts, one per.
  4. MPM – either prefork or worker MPM is used.

No actual load was applied to the server – I just wanted to see what it took to read the config and start up. Settings were defaults per MPM (5 children for prefork, 3 children for  worker) – obviously you’d tune these depending on usage. I tried to wait for things to settle down a bit after startup before reading “top” sorted by memory usage.

I also tried some other methods for accomplishing this task to see what the memory footprint would be.

Continue reading

Dear GWT

Do you just hate Linux or what?

I just want to try out App Engine. Let’s bring up the development site in Chrome. Whoops! There’s no GWT development plugin for Chrome on Linux. (Why? Why is Chrome so behind on Linux?) OK fine, let’s try Firefox. Install the plugin and… it’s not working. Trying to follow the workaround… wow, this svn download just takes forever. Just so I can recompile something that oughta work in the first place.

Can this experience suck any worse?