Archive for the ‘i18n’ Category

ApacheCon 2009 Oakland

Friday, November 6th, 2009

I went to ApacheCon 2009 in Oakland. Why Oakland? The ASF was founded here 10 years ago.

Executive Summary

Most of the attendees that I talked to were primarily interested in search technologies, or were Apache project comitters. The search users were already using either Lucene and Solr, or were using commercial software and evaluating Lucene and Solr.

Also a lot of interest in Hadoop, Zookeeper and NoSQL projects.

I added a wikipedia NoSQL project features table after the NoSQL BoF.

The conference was very well-organized, with tutorials, BoFs, a BarCamp, and sessions. Meetup.com was used to generate the highest BoF turnout that I’ve ever seen – close to 100 at the Lucene and Hadoop BoFs. (O’Reilly Conferences can learn from that.)

The Oakland Convention Center was a good venue for this conference, though the attached Oakland Marriott hotel is $$$$ and fond of surcharges, like $33/day for parking, $5 draught beer and $3.75 for a bottle of water in-room.

The keynotes and one track per day were recorded and are available for $99 at Linux Pro Magazine Streaming.

StoneCircle Productions was the conference organizer.

Conference Notes

Monday

Although I live in San Jose, Oakland is far enough away that I’ve never been there. Oakland has a compact downtown full of historical-era buildings, and Alameda is also nice, but things get less pretty at night.

I went to the Lucene tutorial on Monday.

Lunch Conversations

- awesome views of Bay Area past Golden Gate bridge from 21st floor
- FAST pretty good indexing and search solution, but bought by Microsoft recently (going to continue linux support or not?)
- FAST has FQL (users pronounce it fecal) query language :)
- 150 FAST servers replaced by 40 lucene servers by 1 company
- FAST4 to FAST5 upgrade tough, similar to port to say lucene, forced upgrades for support
- linguistics is 60% of value of Fast according to Monster, 13 languages supported
- “bad stems” can be a nightmare
- SOLR gives you 90% of what you would need to program in java, built on top of Lucene
- Open Source search is not really about price, but about control and flexibility

Monday Afternoon – Lucene Tutorial

- user-assigned document id not mandatory, but great idea for many reasons, including after an index-rebuild
- lucene-assigned id only valid for that snapshot (life of score doc)
- parameter to keep or delete old index directory
- StringBuilder is more efficient than strcat
- populating title column is a good idea
- results boosting handy for ecommerce, specials, etc.
- LUKE – handy tool for index statistics, etc.
- Searcher class, snapshot in time, won’t see new merges
- contrib/ has more analyzers
- snowball stemmers
- use 1 tokenizer and 0 or more token filters
- precision-recall curve ??
- n-grams and shingles (”the president”, “United states”)
- pre-2.9 lucene, numbers and dates really strings
- 2.9 NumericField builds tri structure, help optimize range queries
- SOLR analysis tool apache-solr
- relevance feedback with MoreLikeThis

Monday BoFs

Couchdb

- “ground computing”
- “offline by default”
- now an ubuntu service
- mozilla raindrop to combine chat client msgs
- lockless
- append-only btree
- rsyncable since append-only, also replication
- checksums everywhere
- windows not first class yet, mozilla improving it

@mozilla

- browsercouch
- don’t like sql
- brasstacks test tool storage
- store now, index later
- replicate to handle large indexing load
- testbot ci

Marklogic

- commercial
- xml-centric
- great for articles, books
- transactional
- search-centric
- structure-aware
- schema-free
- xquery-driven
- extremely fast, largest 200 TB xml, 166 on hosts
- clustered
- database server
- 180 clients, 150 employees
- markmail.org demo contains 42 million email messages, very impressive performance with 5 views in almost realtime. Search is distributed across 160 nodes.

JCR in 15 minutes

- Bertrand Del
- JCR is JackRabbit,
a fully conforming implementation of the Content Repository for Java Technology API (JCR). A content repository is a hierarchical content store with support for structured and unstructured content, full text search, versioning, transactions, observation, and more.
- the ultimate content store
- content repo, union of database and filesystem, best of both worlds
- full-text search combined with structured search

Solr Flair

- information forage
- “resume-driven design”

Lucene Numerics

- available in 1.4
- tune by modifying precisionStep

HBASE

One bewildered attendee wished for a NoSQL product matrix, so I added that to the wikipedia NoSQL page.

Wednesday Sessions

Becoming a Pig Developer, Alan Gates

- Apache Pig is a sub-project of Apache Hadoop.
- this talk was really how to use PIG as an end-user, not to become a Pig project developer

Apache Hadoop in the Cloud, Tom White

- general comments on using EC2 with Hadoop mostly

Practical HBase, Michael Stack

- Apache HBase is the Apache Hadoop database, similar to BigTable.
- HBASE usage

mod_jk / mod_proxy and others, Jean-Frederic Clere and 2 others

- mod_jk, mod_proxy, mod_serf and mod_cluster original topics
- mostly focused on mod_jk, mod_proxy and isapi_redirect
- good talk by 3 long-term project contributors
- jk is kind of Java-centric, with support for Apache JServ Protocol (AJP) only available in Java back-end servers for now, like Tomcat
- isapi_redirect is primary way to do redirects on Windows IIS
- survey of audience showed several mod_proxy users, maybe one intentional mod_jk user

Thursday Sessions

“Apache Lucene and Apache Solr Performance Tuning with Mark Miller” was packed, so moving along to a different room …

Scalable Internet Architectures, Theo Schlossnagle

- amazing and thought-provoking talk, also one of the most popular
- think about performance from network packet level to application level
- carp, vrrp, whackamole
- alterdns, neustar
- dynact
- anycast (shared IP), geoip (but need actually accurate database)
- activemq, rabbitmq instead of Spread
- “memcached is the worst thing that ever happened to our industry – it solves a problem, just not the original problem”

- many apps today are so poorly designed that network issues never become scalability concerns – ie. RoR applications :)
- max out at 500 requests per second across 40 boxes – RoR
- firebug and yslow have been fantastic at making front-end engineers aware of networking performance
- 10 gb nics suck
- instead of one big 20 Gbps loadbalancer, use anycast from core router to 5x 4 gpbs cheaper load balancers
- spiky load or DDoS – announce a /32 to separate load balancer, use symmetric return path

- jms, aqmp, spread

durable message queues

- activemq (java)
- openamq (c) – hard to use
- rabbitmq (erlang) – nice except in durable mode because erlang disk io blows

- most common protocol Stomp is awful and slow (hard to read 100k messages per second) and not binary, but lots of clients exist.

- activemq and stomp is a good start.
- rabbitmq and native connectors are better, but no perl client.

- PCI compliance requires a stateful firewall. Hard to do 1.5 million packets per second traffic for most medium-sized data centers, need to use a CDN to distribute static requests and distribute the packets somewhere else
- leaving trailing / off causes 302, doubles traffic
- Slides
- read/write ratio is 1 … likely IM or email?
- went over some networking details with Paul L. afterwards

Recent Developments in SSL and Browsers, Rick Andrews, Thawte

- 1.6 billion OCSP requests per day, need good infrastructure to support that
- intermediate CA allows root CA to be offline – chained hierarchy – SSLCertificateChainFile,
needs intermediate certificates before cross-certificates, some clients need in proper order
- EV hierarchy more complex. wanted new EV root, but older browsers don’t know about it.
- browser ubiquity problem with any new feature, hash or crypto algorithm
- logotypes – trademark and copyright issues with using other companies’ logos in a product
- Verisign does not have apache httpd committers, but should
- 1 attendee wanted to sign JavaScript files, but what does it mean if most sites link to 10 advertising and tracking scripts? what do you tell the user if 1 JS is not signed?

Subversion Meetup

Organizers didn’t show up, so spent 10 minutes talking to a handful of end-users about subversion gripes and moved along to …

Hadoop Meetup

Zookeeper

- zk is persistent to disk
- can run on one node, but 3 is minimum non-toy
- zk is popular in academia now for some reason
- avoid split-brain partitioning between 2 data centers – bad
- very recent merge to fix -368, not ready for production yet
- people using it for a message queue, perhaps more reliable than many other Open Source ones
- need 1 zk node for testing, but 3 zk nodes for non-trivial implementation

Scribe

- github
- 4x to 5x compression with lzo. similar disk bw improvement

A local owner of a gelato store handed out 6 free samples from a portable gelato freezer. :)

Friday Sessions

Building Intelligent Search Applications with the Lucene Ecosystem, Ted Dunnin

- some matrix math
- using his matrix math optimization, a perl program on 1 server was faster than Mahout running on a $250k cluster :)
- tdunning.blogspot.com

- the original LLR in NLP paper
“Accurate Methods for the Statistics of Surprise and Coincidence” check on citeseer
- Mahout project
tdunning [at] apache.org

Realtime Search, Jason Rutherglen

- many technical issues prevent Lucene from being able to do realtime search
- lots of patches done, lots to do
- audience member thanked author for great work so far

Closing Plenary: Brian Behlendorf on Open Source and Charity

Talked to Alex Karasulu a little after the final presentation. He’s a committer on the Apache Directory project. He suggested adding dbm to the NoSQL product matrix. Wants a MacBook Air with 8 GB RAM to run his Java apps. :)

Conference Schedule Grid

Zend PHP Conference 2009

Thursday, October 22nd, 2009

The Zend PHP Conference was downtown at the San Jose Convention Center, so I went to that this week.

It was a well-organized, fun-sized conference – just big enough to use half the convention center, which made it easy to get around without a lot of walking between session rooms.

There was also an official, parallel unconference in 2 rooms priced at $199 for non-conference attendees.

The talks were high-quality, the food was great, and wifi worked everywhere. What more could one ask for? Well, a few more power strips next time, perhaps.

I was impressed with the number of attendees from Europe, Australia – and Utah!

I went to Matthew Weier O’Phinney’s tutorials on Monday. He’s the Project Manger for the Zend Framework, including design and supervision of the framework programmers. He’s an excellent speaker and really knows his stuff. Both his Intro to Zend Framework, and Ajax with Zend Framework tutorials were excellent.

My favorite talk of the conference was Eric Farrar’s talk on Mobile Data Synchronization. His slides went through many of the pitfalls of data synchronization, then actually provided a solution: use Sybase’s mobilLink, which is free to use with MySQL and SQLAnywhere. He said a team of 24 has been working for 10 years on that, and it is deployed in millions of devices. He works on the ultraliteweb project.

A Digg sysadmin did an interesting operations talk on the evolution of the Digg data center over the past few years. They’re up to 800 servers in 2 Equinix locations now, and use pre-cabled racks of servers from Penguin Computing. Software-wise, they like Cassandra key-value pair, clusto and puppet. They tried some commercial software in 2007, and didn’t enjoy the experience.

I had some great lunch break talks with other folks. One guy from Ohio was getting interesting SEO results by serving raw XML to clients, and having client-side JavaScript provide styling for human users.

I talked to a couple folks about their experiences using MySQL NDB Cluster in production. They both said it’s flaky, with one having already abandoned it for regular MySQL database with Innodb. He was also using RightScale and Amazon for document processing, and was happy with that combo.

There were about 20 exhibitors in 2 aisles, so easy to talk to all of them.

I got personal demos of RightScale’s cloud admin app, Zend Studio IDE, and BCDSoftware’s WebSmart PHP code generator.

WebSmart PHP is a $4600 code generator for ex-RPG and COBOL programmers. It provides a basic IDE, but the interesting part is that whatever you might want to do is either documented in hundreds of online technote examples, or available by contacting their unlimited support department.

Some of the unconference talks I went to included improving cookie security by embedding the SSL session id, and part of the continuous integration session (they talked about Hudson and CruiseControl, but not BuildBot).

The unconference talk on PHP and queues was quite good, with an overview of Amazon Simple Queues (good), Gearman (no persistence), beanstalkd (rave), and custom PHP and C queues (don’t roll your own unless you want long-term job security.)

The closing keynote was what I was mainly at the conference for … the PHP Frameworks Shoot-out with the framework project leaders.

Here’s my notes from my perspective as a listener. Please email me with any corrections.

Agavi
- David
- borrow from Symfony PHPunit code
- would use Symfony as alternate
- CI ORM is a pointless reimplementation, Rails programmers are morons shaped by pragmatism of Rails model
- hates complexity of validation code, context from Majove too many interdependencies
- 5.3 nice to have universal exception handling fw
- believes 5.3 is a major new release not comparable to 5.1 or 5.2 that frameworks need to support
- bigger the team and complexity, better agavi is because more structure

CakePHP
- Nate Abele
- hates long class names
- hates ACL system needs to be redocumented or cleaned up
- PHP 4 at this point, next release on 5.3

CodeIgniter
- Ed Finkel
- Symfony generates too many files, brain hurts; input filtering in ZF overcomplicated
- hates complex routing, unlike Limonade
- CI is not recommended for complex systems

Symfony
- Fabien Potencier
- French
- full stack
- secure by default
- would use Django and ZF
- hates 1.1 form framework complexity that users painpoint
- 5.3 is nice, but no plans to port to 5.3 because of large users update cycle time

Zend Framework
- Matthew Weier O’Phinney
- ZF routing from Rails, lots of stealing
- would use CodeIgniter
- hates heavy-weight dispatch cycle in ZF, to be rewritten in 2.0
- 5.3 ZF already testing with it, backwards compatible to 5.2.

The sessions that had an audio recording will be released as podcasts, one per week, and hosted on devzone.zend.com.

Thanks to Zend for organizing a great conference.

sf.pm.org: Oops! I i18n’d your app

Wednesday, August 26th, 2009

Perl Camel LogoJeff Goff (DrForr) gave a sf.pm.org talk on internationalizing web apps at Six Apart in San Francisco.

(It was a long trip from San Jose on the Caltrain. I knew that I had arrived in San Francisco when I could smell the stench of urine upon leaving the station.)

Jeff mentioned working on ticketmaster.com before, and used S5 slides to illustrate a variety of localization issues with languages like Chinese, Japanese and Malaysian.

Some of his tips for identifying and preventing translation string corruption were:

  • check for double-encoding of UTF-8 strings, perhaps with Test::utf8::is_sane_utf8()
  • check complete toolchain for UTF-8 cleanliness
  • can use Unicode script and block properties to identify language when possible, as documented in perldoc perlunicode
  • use RCS pre-commit hook feature to inspect checkins, though can be slow with large input files.
  • important to decide how much cleanup the translator is responsible for vs. internal.
  • JavaScript string localization will likely require careful escaping of quotes.

Audience members also suggested:

  • enable online web editing of translations as well as batch export
  • consider locking columns if translators use excel worksheets.

As always, my comment is that it’s more important to focus on locale definition than charsets in i18n projects.

Several members were looking for perl jobs, so post your offers on the mailing list.

Thanks to Six Apart for hosting the meeting.

Juerd’s Perl Unicode Advice
Unicode.org
wikipedia: UTF-8
Jeff’s CPAN

OSCON 2009 – San Jose

Friday, July 24th, 2009

For the first time in a decade, the O’Reilly Perl and Open Source Conference (OSCON) was held San Jose again for 2009.

(I have heard that the City of San Jose Business Development office is very, very accommodating towards conferences these days.)

There was great attendance, and plenty to see with about 15 simultaneous tracks, lots of BoFs, and an active exhibits area.

One of the changes this year was more OS talks, including some for linux and FreeBSD. This is a welcome change, though many kernel hackers won’t travel to the USA, for various legal issues.

My favorites were:

  • talk – YAML by Ingy. YAML is a serialization standard for all programming languages and is a superset of JSON, in that YAML supports types and references. The Perl module is YAML.pm. Although it is a “serialization standard”, best results are obtained when both sides of the exchange are controlled by the programmer (ie. different word sizes or floating point standards will likely cause issues.)
  • Perl lightning talk – Esthetic Randomness by Joseph Brenner. Joseph likes to post-process random output before display to get a more desirable appearance. He’s kind of goth-looking, so the overall subject and delivery made it an interesting 5 minutes.
  • BoF – MySQL social with Monty, Percona (now 25 employees!) and Mark C.
  • exhibit – Haiku OS (the Open Source BeOS clone) demo. 2 developers, now at Google, reimplemented BFS from the textbook. Haiku can run with 64 MB RAM. Posix compatible, so the gcc toolchain works. The ARM port is a GSoC project. The video support comes from from ffmpeg, xiph, etc.

Regarding the MySQL BoFs, I think they can be summarized like this: the community is not going to wait for MySQL AB/Sun/Oracle to dick around any further.

Monty Program AB, Percona and Drizzle are going to have forks regardless of what Oracle does. Either the official MySQL documentation will be freed, or rewritten by Monty Program AB and Drizzle.

Typo3 CMS also had a community booth. They are the #1 European CMS with support for 38 languages.

I didn’t see much use for the “OSCamp” attendee-organized tracks personally. Whereas at the MySQL Conference the Percona Performance Conference was necessary to fix the broken speaker selection process that was weighed towards MySQL/Sun staff instead of productive community contributors, that wasn’t an issue this time around.

The talk on Perl and Unicode was pedantic (focusing on UTF-8 bit patterns, presumably for those needing to detect and fix corruption) but comprehensive, as Tom Christiansen was in attendance to provide up-to-the-minute comments and tips. perluniintro is very helpful.

The PHP Best Practices talk was informative, as the 2 presenters have worked as PHP programming consultants and seen how projects go wrong. They tend to use whatever PHP framework the client is using, and have nothing glowing to say about any particular one.

I’d say that the world of PHP frameworks (dozens) is even more fragmented than Perl (Catalyst, Mason, embperl, CGI::Application are the major ones), which is indeed astonishing. And ironic – since PHP is itself a templating language.

Stonehenge Consulting threw another of their famous drunkfests at a local bar for those wearing their neon yellow t-shirts. If you want to get hammered for free, this is always the spot. :)

I talked to Randy Ray a little about what can be done with svlug.pm considering that the South Bay is suburban and thus less centralized than a dense city. Stay tuned.

Other Perl lightning talks included:

  • Larry Wall’s son talking about black holes
  • Scott Smith talking about Getopt::Complete, which can do svn command-line style nested args
  • connie willis bellwether talked about Flocks and the hive mind as defined by 3 rules.
  • Don’t Blame Perl – It’s the programmer’s problem if they don’t use modules, scoping, comments, brevity, objects.
  • Cool Perl6 – hyperoperators (work on arrays) with a card game sample using extended-ASCII symbols.
  • svn is not totally useless – it pointed the world towards git.

The closing talk on linux economics seemed to be an eye-opener for the audience. Most cell carriers and OEMs are at a severe disadvantage to Apple in the apps market, so they may need linux (or Haiku) to mount any kind of response that makes financial sense.

In the conference wrap-up segment, Allison Randal and an O’Reilly rep fielded questions from the audience and answered in “Twitter mode” – single sentences less than 140 characters in length.

OSCON 2009 Speaker Presentation Files
youtube.com: oscon 2009 video clips
wikipedia: Monty Program AB
mtocker: Understanding the MySQL forks

PHP Light-weight Web Application Requirements

Monday, July 6th, 2009

A lot of web designers are using complete CMS systems like Drupal and Joomla as foundations for custom PHP/MySQL web apps that are not really CMS apps.

The main disadvantage with doing that is that they are relatively large codebases, and each site developed that way ends up using (and hosting) a different version of the CMS.

It would be nice to have a light-weight alternative that is more app framework-oriented.

Some of the items I would expect in any modern PHP webapp:

  • PHP 5.2+ support
  • Free and Open Source
  • horizontally scalable, same as raw PHP
  • filters extension support
  • ORM and non-ORM database queries
  • memcached support
  • Work in all browsers
  • authenticated sessions with salted, multiple-round MD5 and SHA-1 hashing of password
  • Relative links for installation multiple times on same server, or on different servers (dev/stage/prod)
  • Reasonably secure sessions – hard to steal a login cookie, no private data in cookie
  • App should degrade but still mostly work without JavaScript
  • 100% input filtering and validation
  • No XSS or XSRF problems
  • No SQL injection problems
  • AJAX support (MooTools provides light-weight AJAX support – MIT licensed) or maybe jquery (MIT or GPL)
  • Reporting with scalable/resizable/emailable graphs like OpenFlash ( with OFCGWT – LGPL licensed)
  • I18n support (locales, UTF-8, admin emails.)
  • No database-specific APIs like mysql_*()
  • Amazon EC2, S3 and EBS support (like Zend_Service_Amazon_Ec2)
  • Search widget built-in for SOLR or Sphinx
  • Help widget built-in
  • App is always aware of locale and does the right thing
  • Not XHTML
  • End-user can do language translation, similar to Facebook.com
  • Content is easily shareable
  • TinyURLs available for content links
  • Replication-aware and resistant.
  • Retargetable output display formats.

For business webapps:

  • Subaccounts
  • Payment processing

For the Japanese market:

  • Login/logout session history for auditing
  • Separate CSS for Japanese locale (mostly to reduce font size)
  • Maru (circle) instead of checkmark.
  • Somebody Japanese to test it.

Please leave a comment if you have any thoughts.

Some popular existing PHP frameworks:

CakePHP + Zend Framework Impressions
Drake: CakePHP Drupal Module

PHP PEAR
Feb. 2008: Notes on Choosing a PHP Framework: A Comparison of CakePHP and the Zend Framework
2006: Rasmus Lerdorf – The no-framework PHP MVC framework
ringsworld.com: PHP input-filter

Indonesia Craves the Blackberry

Monday, June 8th, 2009

BlackberryThe Blackberry cell phone has rocketed in popularity in Indonesia in the past few months, from fairly obscure to a “must have.”

The 4 reasons are: new, affordable data plans, Yahoo Messenger and FaceBook support, and a camera.

GSM/Edge data plans have been available for years in Indonesia, though somewhat expensive per KB, flaky and with an odd signup process (find out the right sms address and send a couple requests to it and wait.)

Now cell providers are promoting all-you-can-eat data plans at 5000 Rp/day (50 cents per day).

Wifi is popular for when they are low on cash but near a free wifi hotspot, available in most offices, hotels and malls.

Indonesia is a huge cell phone market, about the same population as the USA. Less than 1% of households have Internet access, although many employees now have it at work.

The only thing holding back Blackberry penetration is purchase price. Phones are not subsidized with long-term contracts as in the West, so they’re retail priced at $350-$600 each.

All of my friends there have asked me how much a Blackberry is in the USA. It’s priceless to see their expression when I say, “free with a service contract.” :)

cnet.com: A more streamlined Facebook for BlackBerry
CHART OF THE DAY: Apple, RIM Swallow Mobile Industry Profits (AAPL, RIMM)
jakartapost.com: BlackBerry maker given deadline
jakartapost.com: BlackBerry maker to open after-sales service center

SVLUG: The Parrot Virtual Machine, Allison Randal

Wednesday, June 3rd, 2009

Allison Randal gave an overview of the Parrot Virtual Machine, plus delved into the syntactic details of the PIR assembly language for the virtual machine. (around 1200 opcodes.)

Parrot is a virtual machine aimed at running all dynamic languages.

She’s the chief architect for the Parrot project, and is also the author of the Python port to Parrot, Pynie. Apparently the Python maintainers are happy to have help with language backend support.

Allison said that perhaps 50 dynamic languages are in some process of being ported to Parrot. Often they run up to 10x faster on Parrot than the original implementation.

One member said he knew of a commercial project that used Parrot as the language VM when the underlying chip or OS became obsolete and they needed to port to a more modern system.

PIR source is actually run through flex and yacc.

This was her third talk on Parrot in the Bay Area recently. They’re organized around her business meetings for the O’Reilly Open Source Convention, to be held in July in San Jose.

Besides working for O’Reilly Media, she is also working on her Ph.D. computer science at Bristol University in the UK.

Thanks again to Symantec for hosting SVLUG meetings.

IMUG: Globalization and Software Test Automation

Thursday, March 19th, 2009

Dana Li, Business Development Manager at hiSoft, gave a a talk on software localization and QA at IMUG.

These days, software company clients typically provide an internationalized product to hiSoft, and they translate it into 8 to 25 languages, then test the result for correct translation and functional behavior.

hiSoft uses whatever testing framework the client uses, so those can vary from commercial Silktest or QTP, to Open Source selenium. The hiSoft folks didn’t express any strong preference for frameworks.

AJAX is more difficult to do test automation for, as the entire page can be dynamic.

Generally nobody provides source code to be internationalized (like the web 1.0 days.)

An interesting project they did was to QA Chinese OCR software.

But every project has its own complications.

Afterward an Arabic consultant chatted a little about how Modern Standard Arabic (MSA) has standardized Arabic writing world-wide, but there is a local spoken dialect in each region.

Thanks again to Apple for hosting IMUG.