Skip to content

All posts by moore - 66. page

Popups in GWT and IE8

Just starting to test some GWT applications against IE8.  (Using IE Collection, which is very useful.  It includes standalone versions of IE from IE1 to IE8.  Very useful, even if the version of IE8 doesn’t include the developer tools.)

The only issue I’ve seen so far is that popups don’t work correctly.  Some appear, but not where they are supposed to.  Others, particularly with the lightbox we’re using (from the GWT-Widget project), just don’t appear at all.

For the latter, you get the very helpful message:

Line: 2618
Char : 324
Error: Not implemented
Code: 0
File: url to your GWT cache.js file.

(This is with GWT 1.5.3.)  After compiling the GWT with “-style DETAILED”, I looked at the precise line causing the error message.

It was in this method:

function com_google_gwt_user_client_ui_impl_PopupImplIE6_$onShow__Lcom_google_gwt_user_client_ui_impl_PopupImplIE6_2Lcom_google_gwt_user_client_Element_2(popup){
var frame = $doc.createElement($intern_1350);
frame.src = $intern_1351;
frame.scrolling = $intern_1352;
frame.frameBorder = 0;
popup.__frame = frame;
frame.__popup = popup;
var style = frame.style;
style.position = $intern_1314;
style.filter = $intern_1353;
style.visibility = popup.style.visibility;
style.border = 0;
style.padding = 0;
style.margin = 0;
style.left = popup.offsetLeft;
style.top = popup.offsetTop;
style.width = popup.offsetWidth;
style.height = popup.offsetHeight;
style.zIndex = popup.style.zIndex;
/*
style.setExpression($intern_110, $intern_1354);
style.setExpression($intern_111, $intern_1355);
style.setExpression($intern_91, $intern_1356);
style.setExpression($intern_93, $intern_1357);
style.setExpression($intern_1358, $intern_1359);
*/
popup.parentElement.insertBefore(frame, popup);
}
You can see where I commented out the style.setExpression calls, which seemed to fix the issue (the $intern strings are css property names like 'left').  Obviously not very sustainable. The other fix available right now is to add this meta tag to the HEAD section of your HTML documents:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

For more information on this, follow the GWT issue tracker bug 3329.

Speeding up Thunderbird Search with IMAP

I like the Thunderbird email client a lot (Thunderbird2).  I used to use and love pine, though, so perhaps you should take any accolades with a grain of salt.

I use Thunderbird with IMAP so that I don’t have to worry about backing up my email locally, and so that I can always ssh in and view new mail if I’m on a different computer (‘less’ is my mail client then!).

It has a lot of plugins, but the only one I really used was lightning, the calender/task management plugin.  And then I got a Palm, and haven’t been able to find any way to hook the calendar on the palm up to lightning (there is support for syncing contacts).

Anyway, one thing that got me really riled me up was the slow search.  This post illuminated the facts for me; it wasn’t Thunderbird that was slow, it was my IMAP server.  I upgraded my IMAP server to dovecot 1.1.7, that being what my hosting provider supported.  Dovecot has a nice full text search installed by default.  Or at least I thought it was nice.  It couldn’t be worse than no full text indexing at all, I figured.

However, my hosting provider didn’t provide that plugin–whoops!  I downloaded the same version of dovecot, ran ‘configure; make; make dist’ and copied over all the fts *.a *.so and *.la files for both fts and fts_squat to the plugin directory.  Then I enabled the fts plugin in the dovecot.conf file, including changes recommended for fts_squat, and restarted dovecot.  My full text searches (in Thunderbird quick search) for folders with 6000 messages, went from 4.5 seconds to 1 second.  Quite the success.

I then wanted to figure out some way to search for multiple areas in the quick search box.  I already found that you can use the pipe symbol as an or operator but that only applies to a given type of search (for subject, or body, etc).  What I was looking for was a way to search for ‘from sue’ ‘to anton’ and ‘body contains spaghetti’, all in one search.

I searched and searched, looking at the IMAP rfc and trying many different variations.  I looked at plugins.  I looked through the config editor.  I tried the Thunderbird tips page.  No luck.

Then I read a post that talked about the two ways to search.  Quick search (the box in the upper right hand corner of the email client) and normal old search, the one you get to by typing ‘control-shift-f.

This does exactly what I want!  But it’s cumbersome.  It’d be great to take a page from Yahoo Mail and implement their search shortcuts in the quick search bar: ‘from: ‘ for from, etc.  It’s a killer feature for me.

Anyone know of a plugin that does this?  This page has some keyboard shortcuts, but that’s not really what I’m looking for.  And I didn’t see anything in the Thunderbird bug list, though this bug seems like it might be heading down that path.

Anyway, those are my recent adventures in email.

Notes from Tom Malaher’s cloud computing presentation

A former colleague, Tom Malaher, did an online presentation about cloud computing on Mar 11 at the Calgary JUG.  You can view the recording of it now.  It was titled: Cloud Computing and Amazon Web services (AWS), and was a great survey of cloud computing and then a nice dive into AWS.  I used to work with Tom and always enjoy the depth and breadth of his presentations.

Below are some of my notes.

  • This was their first online meeting, due to cash flow issues (lack of sponsorship), and to make it easier for speakers out of the Calgary area.  It was put on using Elluminate.com.  (This client was installed using JNLP; very easy to install and setup).  You can use Elluminate for up to three participants for free (but you cannot record your session).
  • Definition of cloud computing is in tug of war in vendor land.  According to Infrastructure Executive Council, cloud computing is elastic, multi-tenant, on-demand, usage based metering (no long term contracts), self service

Tom outlined a number of variations on cloud computing

  • Infrastructure as a service (s3, ec2)
  • Platform as a service (Google app engine, Microsoft Azure)
  • Software as a service (Google docs, salesforce.com)
  • Grid computing–more homogenous, but lots of overlap

Diving into Amazon Web Services, he outlined all the webservices that Amazon provides.  I had already heard of a number of these, but two caught my eye:

  • DevPay–pass through payment for Amazon Web Services.
  • Public Data Sets–public domain data sets easily available for computation on the AWS platform

Composing AWS services makes sense, since there are no bandwidth charges between Amazon service calls within Amazon’s data centers (e.g. EC2->S3).

He had some interesting figures from the IEC: 70% surveyed are not using cloud computer (40% aren’t even considering it).  Only 10% are hosting an ‘app’ on the cloud (with no definition of an app).  I asked a question of Tom about what is considered an app.  I have a client who is hosting backups and images on s3, and friends who regularly back up servers to s3.  Is that an ‘app’?  I don’t think so, but Tom didn’t have a definition of ‘app’ for this survey.

Tom also did an interesting cost analysis when he was looking at pros and cons for AWS.

The 1and1.com high end hosting agreement: 1gb ram 50gb hd, 2000gb transfer: $59/month.

For a comparable AWS instance, with an ec2 image, 1.7 MB ram, 160gb hard drive (ephemeral), 2000 gb transfer, persistent 50gb hard drive: worst case $479.50/month, but for one day: ~$16.

In my opinion, this is the key con of AWS right now, at least for full fledged applications. It’s simply not cost competitive with some of the hosting you can find out there.

And with regular hosts, you don’t have to deal with as much infrastructure overhead. Tools like ElasticFox and S3Fox can help.  I’ve used S3Fox and love it.
The development model is suprisingly similar (Tom mentioned building his demo on his home machine and using some of the more exotic services, like SQS; then, when he was ready for the full cloud deployment, he just moved his war file to the appropriate image after some setup).

Then Tom demoed an app built by composing a number of Amazon web services.  Starting an an ec2 machine image (AMI) takes a long time (but still less than building a machine from scratch :).  During entire presentation and demo (1 hour, 3 instances, some messaging, he was only charged 50 cents.

Other interesting uses: The NY Times used it to build a bunch of web friendly pngs from tiffs of papers past.
You can use a regular RDBMS, with Elastic Block Storage.

Someone asked: where does AWS fit in larger organizations?  Tom thought it was a good fit for small organizations…  But he was not really sure about large organizations.

In my opinion, many of the technical decision makers I know are willing to use S3 as a storage mechanism, but they still want a backup solution, in case Amazon is unavailable (as it sometimes is).  This unavailability would be even more damning if you had an entire webapp running off ec2 and the other services.

Buying your own dedicated server has its own risks, but many people are still used to that paradigm.  But, for quickly scaling, or for a special one time project that needs a lot of firepower (like the NYTimes project above), it makes sense.

Stepping back from AWS, the idea of cloud computing seems to be continuing to make progress and attack the issues of network connectivity, security and cost that make it a hard sell at the present.  I love the delineation of the variations (infrastructure as a service, etc), and not all cloud computing will look like AWS.
Overall, a great presentation.  If you have the time (I stayed for some of the Q&A, and left at the 90 minute mark), it’s worth a listen. Go ahead, check it out.

[tags]cloud computing,cjug[/tags]

Supporting cutting and pasting in web applications

Dion has a long, interesting, painful article about supporting cut, paste, and copy operations for Bespin, a web based code editor.

In our world with the editor [in webkit], we use the before events to set things up, and we have to do something pretty hacky to make it happen. The copy event itself only actually goes through if you are on an element that supports it. There are hacks around this too. For example, if you want to be able to get a copy event on a div, you need to turn on contentEdible and set the tab index to -1. Strange huh?

All I can say is ‘Ow!’

Review of etendi BRIDGE: a family distance communication product

I have some friends who recently launched etendi BRIDGE, a product aimed at making family communication easier, especially when the family is divided by distance.  You can view a slightly heavy handed video that gives a good overview of the feature set (though not the best sound).  Features include calendaring, email (which they call ‘Thinking of You’ messages), a shared whiteboard, video messages, and notes.  All the action happens in a pretty slick Flash interface.  It also sends all traffic over SSL, which is the same standard that banks use, etc.

In addition to clicking around this myself, I set etendi up with my girlfriend and mother (yes, yes, perhaps they shouldn’t be in communication, but what can you do?).  I ended up kicking the tires on the video chat with my girlfriend; video chat seems to be the killer feature.  I was able to fairly easily set up the sound.  I did have an issue with the microphone–at its default setting, the software couldn’t hear me, and kept giving me an error message.  This happened even though I’d had no trouble using the mic at that level with skype.  Video chat didn’t work for me, as I had no video camera.  But my girlfriend also had issues with it; we didn’t have time to dive in, but it may be her system, as she has had webcam issues before.

One final note about usability–in general it is great, but when you are adding a user to your etendi house, no cues are given if the password isn’t long enough; the save button is just disabled.

From a web application developer’s point of view, it’s a very cool app that feels much like a desktop app.  I’m not sure what it means for our society that there’s a niche for this type of remote communication application with children, but it’s a very cool app.

I’m not going to pretend to have done a wide survey of solutions in this space, but here are some other options that solve some of the same problems:

  • roll your own solution with youtube/email/im/netmeeting/phpbb/phpgallery/etc: You can do this, but security is an issue–never put anything in an email that you wouldn’t put on the back of a postcard!  However, make sure you read and understand the etendi terms of service.  The amount of work to bring this together would be substantial to be feature complete with etendi.  On the other hand, you can customize it as you like, and it is free except for your time.
  • Facebook/other social networks: Facebook, and myspace and friendster, etc, solve some of the same issues. As far as I know, there’s no video messaging service that integrates with FB, but it does have most everything else (email, whiteboard, photo gallery ).  However, with facebook, your child has to have an email address and there are as far as I know, no parental controls.  Also, every bit of content you upload to Facebook grants them a right to use that content for any purpose as long at is up there (see the user content section of their TOS for more).  But, it is prevalent, easy to use, and free.
  • Ning: Ning lets you create your own private social network, solving some of the control issues.  You can share videos, photos, blog posts and events.  You can invite your friends, but again they have to have an email address to be invited.  You have some pretty granular control over what members can do (you can choose to approve photos before they appear, etc).  They don’t have quite as nice an interface as etendi does, but they do have 141 widgets you can add (and a nice API).  You also have to deal with advertisements, or you can pay $25/month to remove them.  Ning seems like a nice alternative to etendi, but is definitely aimed at more sophisticated (read, adult) users (users under 13 are explicitly asked to avoid Ning networks) and doesn’t have the tight focus on families.
  • Obscurity.

etendi has been live for a few months, so I’m glad they are starting to get some press, and I hope they continue to update the blog.  If you need to keep in touch with family over long distance and both ends have high speed internet and webcams, you should give etendi BRIDGE a try.

Disclaimer: I have worked with these FOLKS in the past, way back when I was concerned about testing Korean content, and have had a beer or two at their office.

[tags]zia,etendi,telepresence,children of divorce[/tags]

A web presence in two hours

Being a computer guy is a bit like being a doctor.  Not in the vast amount of learning (I don’t even have a degree in CS), nor in the paycheck (no mid six figure salary here).  Rather, on finding out that you have some job associated with computers, people will ping you with questions:

  • Why is my computer running slow?
  • How do I send video with my email?
  • Can you make me a website?

I usually beg off the first two questions claiming lack of expertise.  The third question always perks up my ears–building websites and web applications is my area of expertise.

However, many times, I find that people don’t need a website, they need a web presence.  This is entirely different–websites imply a level of maintenance that is often more than is needed.  A web presence is perfect for a offline business that simply wants to establish a beachhead on the internet, but likely won’t interact with users via the web (more likely via phone or email).  In other words, a web presence is like a brochure for the company–designed once, changed rarely, and read many times.

(A quick note: I believe most small businesses will benefit by using the internet to enable new ways of interacting with customers, but such applications can be a big leap–starting out with a web presence can be a great first step.)

A friend of mine often recommends leveraging other websites, like myspace or facebook, to provide a web presence for small companies and independent operators.  I prefer blogs.

Here are the steps to set up a web presence in two hours.  I assume you can create a word document, have an email address, and have access to a web browser.

  1. Gather your page content together.  Typically, you should have a home page explaining what you do and what you offer.  You should have a contact page, explaining how people can get in touch with you, including phone number, maps, etc.  Any other pages are optional, but other useful ones may include how to donate to your organization, a portfolio of your services, or a links page pointing to other useful information about your niche.
  2. Choose a blogging site.  Two main ones are wordpress.com and blogspot.com.  WordPress has a better post editor and handles pages more gracefully; it will in general be easier for neophytes to use, but does not allow advertising.  It also is easier to migrate to a full featured website.   Blogspot gives you more options, in terms of layout control and look and feel.  I’ve heard that content on blogspot is easier found by google.  Either one of these is a fine place to start.
  3. Sign up for your blog.  Make sure you get a name that makes sense: joesmithesquire.wordpress.com, for example.
  4. Work through a tutorial/faq: Here’s one for blogspot (called blogger in this tutorial–they’re the same).  Here’s one for wordpress.
  5. Add your content in pages via cut and paste.  If you are using blogspot, you will need to set up the ‘Blog Posts’ section of the layout to only show the last post, and then make sure to have your home page is the last page you add.  If you are using wordpress.com, you should just create pages.  Set your homepage by going to ‘settings’ then ‘reading’ and set ‘Front page displays’ to ‘a static page’.
  6. Choose a theme from one of the many options provided by the blogging sites.  It won’t be perfect, but it will be free.  You can always spend money to customize the look and feel later (to re-do your brochure).
  7. If you want, you can register a domain name, like joesmithesquire.com, (GoDaddy will be happy to help with this for about $10/year) and point it to the blog.  wordpress.com charges $10/year for this feature, blogspot is free.

That should be it.  It’s not perfect, but setting up a web presence lets you get your organization world wide publicity for the cost of a few hours of learning.  You can now maintain it; if any information changes, you can make those modifications without paying expensive people like me 🙂 .

[tags]web presence[/tags]

Carbon Space: Coworking in Boulder

I listened with envy to Corey Snipes, a friend and colleague in Denver, when he talked about being a member of the Hive, a coworking space.  I have rented an office in the past, but always thought a coworking space was a no brainer business plan in Boulder, given all the tech startups, one person PR firms and entrepeneurial environment. After all, some of what I miss about being independent was that water cooler talk, or the ability to just bounce ideas off someone in real time.  (Yes, I imagine twitter fills that need for some.)  I remember a few emails floating around the New Tech Meetup mailing list, but never heard of a plan come to fruition.  But then again, perhaps I just discounted Boulder’s real estate market as a barrier to entry.

Anyway, today, Corey sent on an email announcing Carbon Space, Boulder’s very own coworking space.  Located off 30th street, between Valmont and Pearl, with plans starting at $199/month, I hope this space succeeds.  Hey, I may even check it out myself!  Visit the website for more details.

[tags]boulder, coworking[/tags]

Google Maps API versioning

The Google Maps API is constantly changing–they say they are releasing weekly.  Of course, no one is perfect, so sometimes bugs appear.  First, you should read this about maps API updates:

The v parameter within the http://maps.google.com/maps?file=api&v=2 URL refers to the version number of the Google Maps API to use. Most users of the API will want to use the current “Version 2” API by passing the v=2 parameter within that URL. You may instead obtain the latest release (including the latest features) by passing v=2.x instead. However, be aware that the latest release may not be as reliable as the v=2 release. We update the Google Maps API often (sometimes every week), at which point features within the v=2.x release are migrated into the v=2 release unless problems are discovered.

If you want to know exactly what version of code you are pulling down when you put a ‘v=2’ on your maps javascript load, view this API changelog page on the google maps wiki.

Solution to black boxes in Google Earth balloons when the GE plugin is placed over Flex/Flash content

This is very much a post to spare people the hunting I did to solve this very particular problem :).

I am doing some work for a client that integrates Flex and the Google Earth plugin.  This post by Andrew Trice explains the basic integration well (it’s very slick!).

However, there was an issue–in Firefox, any balloons popped up by clicking on a placemark were black.  The text of the balloon was there–you could see it flicker–but not visible.  Andrew references a trick that allows “layering Google Maps HTML/JavaScript over Flex content,” so I suspected that was part of the issue.

Running the same GE code without the Flex component showed the balloons normally, so that was the issue.  A bit of hunting turned up a reference to the wmode parameter being important to such layering (I had a URL, but have lost it.)  Then, this post popped up, explaining what the proper settings for wmode were.

Basically, if you are seeing black balloons in Firefox when you are placing the GE plugin over Flash, you need to set the wmode to opaque.

[tags]flash,flex,google earth, flex-google earth integration[/tags]