Archive for the ‘User Groups’ Category

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.

BayPIGgies: Tech Management

Thursday, August 27th, 2009

Tonite at Baypiggies, Alex Martelli from Google gave a talk on “Tech Management.”

Largely the talk pertained to leadership in traditional tech companies, rather than FOSS projects.

A high-level summary would be that, in tech companies, there has to be balance between oversight and micro-management, and managers must be willing to pitch in when needed. Employees need to be told what is expected of them.

Management in tech companies is different than in a factory for a few reasons:

1) knowledge workers are well-educated and are hopefully self-motivated professionals
2) customer-facing employees get customer feedback long before top management does.
3) specialist employees may know more than managers.

So the more organizational layers between top mgmt. and employees, the slower communications and innovation gets.

Alex used 3M as an example of a formerly innovative company that allowed process (in this case 6 Sigma) to shackle urgency and creativity.

Regarding employee motivation, although there are ways to classify and prioritize what motivates people, again different situations and individuals weight motivations differently. The single most important thing is to define what is expected of employees.

As to methodology, Alex favors something agile, where requirements and feedback are close enough together to iterate over in a reasonable amount of time, unlike waterfall, which doesn’t produce a result until rather far into the future.

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

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.

User Group: BayPIGgies (Python)

Thursday, March 26th, 2009

A handful of speakers gave very interesting presentations at BayPIGgies (Silicon Valley-San Francisco Bay Area Python Interest Group).

It was like a set of lightning talks – only longer.

There was a quick talk on Big O notation, and how to characterize python arrays and sets. I am suspicious of performance talks without benchmarks, though.

Sandrine Ribeau gave a talk on pylint, which is a lint/coding standards checker for python source code.

Although PyChecker still does a better job of general python lint checking, pylint can be used to check for things like function naming conventions, etc. using a site-specific checker module.

pylint can be configured to ignore specified warnings or errors, and also overridden from the command line.

Somebody gave a talk on doing log and log-like processing using Unix pipes, similar to how Yahoo does it. Generally they are faster and have more predictable resource requirements than MySQL, for example.

One interesting technique is to use the sort -T option to assign temporary files to different drives than your input data or output file.

Drew Perttula gave a talk and demo about kcachegrind, as well as supporting tools for measuring performance of python code, including a module call graph display tool that creates png graphs using the dot program.

It was an impressive demo, and though kcachegrind was not written with python in mind, the display still made sense.

Simeon Franklin talked about his environment setup to improve web development and release workflow using virtualenv (managing python development environments), pip (an easy_install replacement that works with virtualenv environments), and fabric (a python tool for scripting server deployment tasks).

It was very slick.

In a nutshell, the practical problem that web developers face nowadays is how to create sandboxes for multiple versions of python and web CMS systems, then periodically install them on remote servers.

Sandboxes are needed because by default, python modules are installed silently and globally. By installing instead to a sandbox, you can isolate which modules got installed, and where.

fabric, the remote installation tool, is kind of like a cross between make and Expect, except written in python and focused on installation.

fabric has 15 statements to allow running local and remote commands, authentication and copying of files. So you can build a local distro, login to a remote server, upload the distro, and run installation commands, all automatically.

Commonly fabric is used to install static and program files, do database schema updates, and restart web servers.

Thanks to Symantec for hosting the event tonite.

While passing Moffett Airfield I happened to see a big, white zeppelin owned by Airship Ventures.

cnet.com: A 21st-century zeppelin flies to San Francisco
avweb.com: Zeppelin Startup Struggles As Economy Sinks

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.

IMUG: Emerging Localization Technologies: Crowdsourcing and Machine Translation

Thursday, February 19th, 2009

Anna Schlegel from Acclaro gave a talk on “Emerging Localization Technologies: Crowdsourcing and Machine Translation” at IMUG tonite.

Anna Schlegel is currently Director, Localization at Acclaro and previously was Director of Globalization at VMware, VeriSign, and managed localization and web globalization teams at Xerox and Cisco.

She’s a Catalan originally from Spain.

Her talk focused on the issues and tradeoffs with machine translation and crowdsourcing of translation.

These technologies are of interest to product managers who want to save time and money and perhaps gain more independence from vendors. Traditional human translators can do 2,000 to 3,000 words per day, while MT post-editors can finish around 10,000 words per day.

Also, some clients have simply too much text to translate for a reasonable budget or timeframe, so automation looks increasingly useful. Examples would be search engine result pages, for example.

Anna gave a demo of the translation management interface that Facebook has provided for users. It allows multiple volunteer translators to discuss efforts, divides the remaining work into daily portions, and has a Top score table for biggest contributors.

She also talked about istockphoto.com and a tshirt web site as examples of businesses that rely and flourish on the basis of crowdsourced creativity.

There was a great turnout – we almost ran out of chairs.

Thanks again to Apple for hosting IMUG each month.