A personal weblog of Ted Stein.
Google is sick of the Chinese state's cyber-security apparatus. Finally.
Google to Stop Censoring Search Results in China. About time.
Google's behavior has been devastating to human rights in China and this is a much-needed and long overdue about-face. This comes late, but it matters a lot. The fall-out from this will play a large role in determining the future scope of the Chinese government's control of the Chinese internet.
India protects indigenous knowledge from pharmaceutical companies
India, home to some of humanity's oldest medicinal knowledge, recently got an unwanted education in modern western patent laws. In 1995, the US Patent Office awarded a patent for the use of Turmeric to treat wounds.
Turmeric has been used by Indian healers, in the exact method patented, for centuries. After the patent, treating a wound with Turmeric briefly became a violation of US patent law. The modern intellectual property framework took a centuries-old medicinal tradition and made it property, but not India's property.
Luckily, India learns fast. Under the government's direction, large numbers of Indian scholars worked to create a database of indigenous knowledge to help challenge patents of this sort. The database, known as the Traditional Knowledge Digital Library, includes information on many aspects of Indian culture that go far beyond medicine. The database contains information on all manner of Indian knowledge potentially at risk of privatization. And the threat is real: even yoga positions -- ancient methods of stretching and breathing -- have been copyrighted by private entities in the US.
Rather than embracing the US model and claim Indian copyrights and patents on Indian knowledge, the government is sharing this knowledge with the world. I think Prithviraj Chavan, the minister of state in the Prime Minister’s Office, summed it up rather nicely:
We have translated this into five languages and put it in the public domain. We are more than willing to share this knowledge with scholars but pharmaceutical companies won’t be able to claim patents on this.
The medicinal knowledge is safely returned to the public domain -- where it has existed for centuries -- and this new database will (hopefully) keep it there. Intellectual property law in the US has reached a point of insanity and kudos to the Indian government for not allowing their culture's knowledge to be privatized.
Democracy in Action or Democracy Inaction?
SOA Watch, an organization working to shut down the "School of the Americas" and change the oppressive US foriegn policy the school represents, recently "upgraded" from ebase to Democracy In Action (DIA). My company, Inner File Software, did the data conversion and import.
The move from ebase to Democracy in Action
SOA Watch had two databases -- ebase for donations and mailings; DIA for email blasts. Duplicative databases are devastating, unsustainable and needed to go. When deciding which to use, the choice seemed easy: their ebase database ran in FileMaker v4.1 which is amazingly old. So old, in fact, that I have never worked with a .fp3 file before and I have been working with FileMaker for over half a decade.
My job was to (a) clean up the ebase data, (b) prepare the data for DIA, and (c) import the data while (d) avoiding duplications if a person existed in both DIA and ebase.
There were about 50,000 supporter records in ebase, most also in DIA, and about 40,000 donation records. There were a little over 100,000 supporter records in DIA. DIA didn't have any donations records. All other ebase tables were being abandoned.
Open Source Rocks
ebase is free and open source, although it requires FileMaker, a closed source application to edit the code or network for multi-user. This isn't a problem for me, as I regularly work with FileMaker. The relevant point here is that I had complete access to the data. I exported the data from ebase as two .fp3 files (again, wow) and built a simple deduplication utility (as most orgs with a lot of volunteers tend to, they had accumulated a few dupes over the years) that moved donations when de-duping. I wrote the application in FileMaker Advanced 10. With an SOA Watch staff member in control of the tools I built, the duplicate supporter records were eliminated in a few hours.
Proprietary Sucks
Then I turned my attention to DIA, which is when things got hairy. First I "created" custom fields for the data ebase collected and DIA did not. By created fields, I mean created labels for a whole bunch of empty fields that already existed at the bottom of the supporters table. I know, right? Then I prepped the data for import (again, in FileMaker) using their "API documentation," which was really just a collection of SQL descriptions of the tables pasted into a web template that doesn't fit them. Not kidding. And they shouldn't have shown the database details to me because, as database developer, it made me sad. The field names lacked naming conventions, seemed to be added randomly, were nowhere close to normalized, were in no order, and were not very efficient. But at least I had access to their table descriptions and could write and test an SQL import script to handle the dups, right?
Wrong. I explored their documentation and found a little bit of information about importing supporters and donations, but all of it involved their import utility. No way to import SQL, despite it being a MySQL database. Very little of it explained what was actually going on with their import utility. I explored the import tool and couldn't find a way to compare updated dates or any other way to elegantly deal with duplicates. And it seemed that all imports had to be done through their (poorly documented) import utility. I called up their tech support and was informed that there were "security concerns" with giving me access to their database directly. Fair enough, I guess. But then I need tools. I didn't want to leave SOA Watch with 30,000 duplicate supporters.
No options, little safety net
DIA's tech support (smart and friendly, despite mostly just telling me no, by the way) insisted that I trust their import utility to handle the duplicates. Well, I had no choice but to trust it. At least I learned that the import utility always assumes the imported data is newer and that I could get a complete export of the supporters before attempting my import. I could use that information.
I exported the DIA data -- again using their tools. The export was quick, but there wasn't an option for SQL. I created a new table in my growing FileMaker file and imported the DIA data. Now I had access to modification dates, could count empty fields, etc.. I updated the ebase data as best I could and got ready for the import. While I had a DIA backup, there was no easy way to roll back DIA if something went wrong. And I had no idea what was about to happen.
Friday evening, after everyone left the office at SOA Watch, I nervously imported the supporters. Incidentally, everyone also left the office at DIA tech support. I was somewhat impressed with their importation utility while matching up fields, but then after the import the numbers came out wrong. Not bad wrong, but wrong. An extra 20 records updated here or an extra 11 inserted there. The numbers simply didn't match what I was importing. And there was no way for me to drill down, or roll back. I did some investigation on individual records, and everything I checked looked OK. I decided to ignore the extra records and move onto donations because, well, what else could I do? And that was where things went bad wrong.
First attempt at importing the donations created 40,000 empty supporter records, one for each donation record. Plus the extra dozen or so I was starting to expect. 40,000 empty records? WTF? The donations had the supporter's ID and tech support just assured me the import utility would recognize that.
Fast forward to my Monday morning tech support call. Tech support didn't give up on me, and the problem proved to be a setting on the import utility. I’ll spare the details, just keep de-duplication on even if you are importing donations to an empty donations table.
I said I would spare the details, but this one is important: when the tech support person learned that there were empty supporter records and I had a backup of supporters, her first instruction was to delete all the supporters and re-import them. I asked her if that would delete their their entire history of communications and click-throughs. She said oops.
Wow. We easily got rid of the empty supporters through their tools. But that could have been a devistating error.
Other than that, things went smoothly with tech support on the phone. They deleted the donations, which I couldn't have through the tools provided. I re-imported the donations with the correct settings. Aside from the extra few records, which I have come to view as sort of a DIA success message, the donations matched up with their supporters. At least the random sample set I tested through their interface.
I am not a fan of Democracy In Action's software
Problem solved, I hope, but that sucked. And DIA is expensive. Really expensive. They do have decent tech support but the software sure leaves a lot to be desired. It is a black box, except for the few places you can see in, and it looks horrible in there from those vantage points.
The answer to DIA?
The answer to DIA?
The question is worth exploring, as a lot of organizations pay DIA a lot of money for their mediocre software. I will save that for another blog post, as this one is a touch long already. For now, the conclusion I would leave you with is this: don't move to DIA (or any other contact relationship management platform that puts a wall between you and your data) if you aren't there already. But if you have two databases, consolidate. Carefully.
Bruce Jessen
A psychologist. Psychologists aren't supposed to torture people. Do no harm right? What a jerk. Bruce Jessen's torture accountability profile is now live.
Geoffrey Miller
The torture accountability profile for Gen. Geoffrey Miller, the man who brought Guantanamo to Abu Ghraib, is now live.
Drupal and the DC Coalition Against Domestic Violence
Great news: The DC Coalition Against Domestic Violence (DCCADV) just hired my company, Inner File Software, to rebuild dccadv.org using Drupal. I appreciate the work of DCCADV, and other organizations supporting survivors of domestic violence, and am honored to be able to work with them. The rebuild has two primary goals.
More resources for survivors and advocates
The DC Coalition Against Domestic Violence maintains a database of organizations that assist victims and survivors of domestic violence. This database is not just used by individuals seeking help; it is also a great resource for social workers and other advocates who need to provide targeted referrals for their clients. The database is phenomenal, and clearly represents the culmination of a lot of work, but has serious limitations: it runs on a proprietary software platform that requires a CD based installation and an internet connection. This, in my mind, is the worst of both worlds and, despite the requirement for an internet connection, new updates are only pushed out periodically. Information is currently entered into an Excel spreadsheet, which must be sent off to a third party every time the database gets updated. Thanks to the power of custom Drupal content types, those resources will soon be available over the web, in their most up to date form, to anyone with an internet connection. And thanks to the flexibility of Drupal's user roles, advocates of member organizations (it is, after all, a coalition against domestic violence) will be able to log in and view additional resources not available to the public due to security or other concerns.
Tools for staff to update the website
THE DCCADV does not currently have a content management system. The database is updated through Excel spreadsheets and the website is updated through Dreamweaver. The database is not available through the website and the staff only has limited ability to edit and create content through Dreamweaver. The staff has no control over the menus or structure of their website. With a Drupal install, and just a few contributed modules, DCCADV will have complete control over the content, menus, and paths that make up the site. Adding new sections, pages, or resources will be a breeze. The database will be seamlessly integrated into their website. All pages and blog posts will be editable using the intuitive CKE editor (formerly named FCK), which makes editing the website as easy as editing a Word document. The initial site will launch with an events calendar, a public and private resources library, web pages, a blog, and a contact form for each staff member. A significant step up from where they are now and it will all be powered by proven, free, open source software. Expect another notice here when the site launches.
Hope in Gaza and FMStudio Pro
United Palestinian Appeal (UPA), a client close to my heart, is a Washington, DC based non-profit dedicated to alleviating suffering in Palestine. The organization has been performing difficult, and often thankless, work for over 30 years. As a good friend of mine who works at UPA once told me: everyone says they want to help Palestine, but nobody wants to file. Recently, UPA hired a new executive director -- a retired college professor and former UPA volunteer -- Ghassan (GJ) Tarazi.
GJ has been a pleasure to work with and is traveling to the Gaza strip later this week to promote UPA's University Scholarship and Emergency Relief programs, in part by ensuring they have internet access. In an initiative begun by their former director, Samer Badawi (now with the World Bank), I am pleased to announce that UPA will, for the first time in its history, accept scholarship applications and proposals for emergency relief funding over the internet. (These are private websites so I can't provide links.)
This seemingly minuscule change will save literally hundreds of hours of tedious work a year. Now the staff will be able to spend time ensuring that money is well spent by reviewing applications instead of doing data entry with applications. Just as importantly, less money will be spent on data entry. Think about it: high school students in the devastated Gaza Strip applying for college scholarships online, instead of by paper, will actually create the funds to send more of them to college. That is the kind of result that makes me proud of Inner File and the work we do.
The technical details
UPA uses a FileMaker database, built by yours truly through my super cool company Inner File Software, and hosted by FM Gateway. FM Gateway is run by FM Web School, a company based in Florida and dedicated to hosting FileMaker databases and helping their clients get those databases on the web. I have used their FileMaker hosting for a couple years (it rocks) and read most of their books. I don't like their books, as they are poorly written and written for beginners, but they are the only books out there on FileMaker/web integration.
FM Web School offers a Dreamweaver plugin, FM Studio. At this year's DevCon (which, regrettably, I missed), FM Web School released the second generation of FM Studio: FM Studio Pro. I am in the middle of a number of FileMaker/web projects, so I decided to purchase the software and try it out. I will likely post a further review of FM Studio Pro (I need to quit blogging and finish up the testing before GJ heads to Gaza), but I will start by saying that, after maybe two dozen development hours,
I have mixed feelings. I have a lot of experience with Dreamweaver plugins, having used MX Kollection, now the recently discontinued Adobe Dreamweaver Developer Toolbox, for years. I also currently use a fair number of WebAssist plugins. All of my experience with DW plugins made it easy to learn FM Studio, but also highlighted how unrefined this plugin is. The menus need a lot of work and consolidation, almost no PHP can be edited through the plugin once written, and the code itself could be much better organized. The MX Kollection, which Adobe bought and destroyed, was as streamlined as I have ever seen these plugins, and FM Web School could perhaps explore some of their features, such as the NexTensio database management tools and the integrated authentication tools.
An issue worth mentioning is that I had no access to most of my other plugins while working on any PHP/FileMaker website. This is a potential issue for anyone who relies on DW plugins. Most of my plugins assume a PHP/MySQL website (DW forces users to decide by website) and few of them worked. Even the javascript tools, which have nothing to do with the server side scripting language.
But as I said, my thoughts are mixed. I probably saved 50% in development time (not kidding), although I have no idea how that will actually pan out when it comes to maintaining the code over years. And let's hope this plugin doesn't get bought and destroyed by Adobe after hundreds of developers, and thousands of their clients, become dependent on the plugin (as has happened twice before with me and DW plugins I purchased). There are a few neat tools in FM Studio Pro, and I particularly dig the portal tool shown in this cheesy video:
And my conclusion
I already decided to move away from Dreamweaver plugins, in favor of open source web development software, Drupal in particular, before purchasing this plugin. FileMaker is a unique tool in my toolbox that I have no plans to give up and, as of yet, it doesn't talk to Drupal. Coding by hand does take a fair amount of time so I will use FM Studio Pro for the foreseeable future, at least for some of its tools. I will, however, carefully ensure that my code is easy to edit without FM Studio Pro in case I decide (or am forced) to choose another tool.
How to organize and edit code written by FM Studio is the likely topic of a future post. I don't mean for this posting to sound harsh in my review of FM Studio and comparing the affordable FM Studio to the most sophisticated (and expensive) PHP/MySQL plugins is probably unfair. All in all, FM Studio is a pretty good tool and most importantly, it does what it promises: quickly, and relatively easily, allows people to build FileMaker powered database web applications. And, much like their books, FM Web School is the only game in town for FM Dreamweaver plugins.
How to turn on PHP syntax highlighting for VIM on Ubuntu Linux
Ever tried editing a PHP file in VIM without syntax highlighting on? Not fun.
How to turn on PHP syntax highlighting
- First, ensure that you have the most recent non-stripped down version of VIM, as Ubuntu currently ships with certain VIM features missing. Open the terminal and run: sudo aptitude install vim-full.
- Create or edit ~/.vimrc (open the terminal and run vim ~/.vimrc)and add, or uncomment, the line syntax on. Save your file.
My .vimrc file (ignore line numbers)

And, for you to copy:
set title set number set background=dark set showcmd syntax on
The final syntax highlighted product:

Pretty nice, huh? And the .vimrc file is portable, meaning you can copy it to the home directory (~/) of your account on other machines. Happy coding.
Torture accountability and the web
The Center for Torture Accountability's website went live January 11th of this year, the eighth anniversary of the first prisoner arriving at Guantanamo. The goal of the site is to document the individuals who created and justified the US torture regime. There is a flood of information coming out about the Bush administration's torture regime. The website hopes to capture some of that flood of information and make it accessible to the public.
A lot of work has been accomplished
There are a now eighteen profiles on the site. Some, such as Patrick Philbin, James Mitchell, Cofer Black, and Diane Beaver are rather rich and detailed.
A lot of work remains
As of right now, John Rizzo's profile needs a lot of work. John Rizzo is a lawyer for the Central Intelligence Agency, which is never eager to disclose information, and that is part of the reason the profile is so empty. But the primary reason has been a lack of time and people power. Mary Walker is another person who needs a lot of work. While the profile is clear and well written, the sources supporting the claims are not yet in the database. To a lesser extent, James Pavitt also falls into that category.William Haynes is the opposite: well sourced, but the writing has barely begun.
A community helps
I am not alone. I did create this project and build the website (and plan to soon rebuild it in Drupal), but others have joined in. My mother, for example, has been invaluable with the research, writing, and editing. My good friend Cesar designed the logo pro bono. Nice, huh? And dozens have donated, giving the Center a small, but meaningful, budget. The Washington Peace Center has helped out a lot as our fiscal sponsor. And we move forward now, stronger than ever.