I used to spend most of most days hacking (mostly Perl) code. It had its ups and downs, although in retrospect, the downs weren’t really about coding. I haven’t done daily coding now for about 3 years, and I’m missing it, terribly. So … I’m going back to it, slowly but surely.
I also have to admit that my gut tells me that in the coming economic landscape, going back to using my coding skills will likely increase my chance of keeping myself in iPhones, BeagleBoards, and microbrews, as well as the more necessary, but boring things like keeping a roof over my head. Strategic planning is already something that’s somewhat of a hard sell for organizations. Methinks its only going to get harder as grants and donations start to dry up.
In my last post, I was talking about platform choice, and although to some extent, I can appreciate the argument that Python is a better language than PHP (just like in 1999, Perl was a better language than PHP was at the time.) However, PHP is the basis for Drupal, which is inarguably the most popular open source CMS system, and WordPress, inarguably the most popular Blogging platform. It’s also the basis for Joomla, a CMS I appreciate. There are also some very cool PHP development frameworks, like Cake and Symfony, that I’m excited to explore. It’s also the basis for CiviCRM, a project I’d love to be able to contribute code to. I’m psyched to learn jQuery (OK, that’s not PHP, but I figured I’d stick it in there.) And I don’t have to learn a new language (I’ve done a fair bit of PHP some time ago, and it’s not so unlike Perl.) So PHP it is, starting with Drupal.
So my first steps are to find some projects to help out with, volunteer for, etc. and take it from there. Maybe start doing some work with CiviCRM. It’s such a different landscape than it was even 3 years ago. But it’s a landscape that presents itself with all kinds of amazing possibilities for creating totally amazing applications that we couldn’t even dream about a few years ago.
I have been thinking for the last few days about what it means to “keep up” with the technology field, particularly ‘net technology. I’ve been helping a client hire a temporary project manager, and so in the interview process one of the questions I ask is how people keep up with change in the field.
In some ways, I have been blessed with the gift of osmosis. I’m a fantastic book learner, which means I’m a great blog/twitter learner, too. Also, one of the things I do is blog – so I regularly have to process and digest information to write decent blog posts. One of the prompts for this post was also that I’m preparing a post on “cloud computing”, just reviewing what it means, and what it is, and why it’s important – and that will undoubtedly help me to keep up with that whole set of things.
How do you keep up? And, in a bigger picture way, how important do you think it is for people who work with nonprofit organizations on technology issues to keep up? How bleeding edge do we need to be?
I finally had the reason to begin to more completely articulate my theory of practice. My theory of practice is different than my consulting philosophy. They certainly are consistent with each other, but they are distinct. A theory of practice, in my mind, outlines the methods and ideals behind how I get work done with clients. This theory includes the following elements that I think are key to my work:
- Listening. Listening, both at the beginning, and consistently through an engagement, to their goals, ideals, “points of pain”, and points of confusion.
- Educating. One of the most important roles I play is educating clients about the technology that they will be engaging with, based upon what I’ve heard while I’ve listened. This is also an ongoing process.
- Intermediation. The role I play most often currently is providing a clear and understandable avenue between the client and a technology vendor (such as web or database development shop). The client is quite knowledgeable about their organization, mission, and goals for a project, but often not knowledgeable about technology. The vendor is expert at what they do, but cannot always provide a channel of communication that the client can really work with. I provide that clear channel, so both sides benefit.
- Learning. Those first three elements make up the communication arm of my practice. The other arm is learning. I can’t do what I do without being a technology expert. And I can’t stay a technology expert without continually learning. Reading, research, collaborating with others, getting my hands dirty with servers and code, playing with new applications and new APIs – all of those things keep my technology expertise fresh.
More specifically, what methods do I use to help clients make their way through the entire process of a technology project:
- Qualitative and Quantitative (where appropriate) assessment of requirements and needs, including surveys and interviews with internal (and/or external) stakeholders
- Research – both standard internet research as well as outreach and interviews with relevant people
- Writing – writing requirements, RFPs, documentation
- Project management – keeping a project on track
- Evaluation – evaluating projects as they are happening, and when they are done.
I like hosting the Carnival of Nonprofit Consultants. Mostly, because I get to read blogs by people that aren’t on my list of feeds I read regularly. And I get to highlight the work of some of my favorite bloggers, too.
Joanne Fritz asks the question that is probably on the minds of lots of folks in the nonprofit sector: what are we going to do in facing the current problematic economic climate? She suggests not to panic, and not to change course – keep steady, and keep communicating.
SOX First, which is a new blog to me, and focuses on Sarbanes-Oxely compliance, asks whether nonprofits hold the ethical high ground. Their answer: they may well be losing ground.
James Young, writing on Convio’s newish blog, Connection Cafe, talks about how to find, and create, influencers. What are “influencers?” Read the blog entry. It’s pretty interesting.
Marketing and Fundraising Ideas tells us about how not to ask for a major gift.
There is an interesting case study of the marketing of Tampax and Africa on the Cause Related Marketing Blog.
And Katya tells us why Seth Godin is right about people being lazy and in a hurry, and gives us some tips on how to use that.
And lastly, since I’m hosting, I get to mention my recent post on Twitter and nonprofits.
Next week, the Carnival is being hosted at A Small Change – Fundraising Blog.
Someone mentioned to me that from what I write on my blog, she wouldn’t know what it is that I actually do in my consulting work. I kinda thought that was surprising, but in thinking about what I write, I realize that people could get the wrong idea (or, more accurately, fail to get the right idea.) And, I guess truthfully, the blurb on my consulting site is kinda dry. Gotta work on that.
So, what do I do? I think of myself in these terms: I educate, facilitate, mediate, and problem-solve.
For one client, I am their technology go-to person, since they are really small, and have no tech staff. I don’t implement much for them (although in a pinch, I’ll set something up, or fix a specific problem.) But I help them plan their technology initiatives (a new database, a new website, etc.,) help them find the vendors that will do the work by helping them craft good RFPs. I answer all of their tech questions, and solve pretty much all of their tech problems (mostly by helping them figure out who they should call.) I’ll be the project manager on their big new client database project, and help them think about how far to dip their toes into Web 2.0.
For another client, I helped them vet vendors for their new website, taught them the difference between Joomla, Drupal and Plone, and I helped free them from a vendor who was particularly egregious in their hosting charges, among other things. ($1200/month for an old and therefore crappy custom CMS and not much support. I. Kid. You. Not. I myself wrote a custom CMS a long time ago that would be considered crap now, so I don’t blame them for that, but the charges???)
For a third client, I helped them translate their ideas about what they wanted their website to do, to things that could actually be implemented in a CMS. I helped them vet CMS vendors, make sure the CMS that was chosen could do the complex job they were asking it to do (some were not up to the task) and am the intermediary between the current web vendor and the client, lending my expertise as needed, and helping to move the project forward.
I think my clients benefit from one particular thing that I think is pretty unique. Although I am deeply experienced and knowledgeable in implementation of technology, from networks to web applications and databases (I really know how DNS works, can write a left outer join in SQL, and know the difference between REST and SOAP) since I don’t do implementation or coding anymore, I’m not wedded to one set of technologies. I can bridge the gap between technology vendors and clients in a way that is pretty unusual, and, honestly, that I’m proud of. I know when a vendor knows their technology, and when they are blowing sales language at me, and might not be up to the technical task. I can evaluate previous projects based on what I see is the underlying complexity, and figure out how much experience a vendor has had with a particular set of problems. I know when a technology is really appropriate, and when it’s not.
I have other kinds of projects as well – those that use my talents somewhat differently. I do a ton of technical writing, and I have become the “documentation facilitator” of the OpenMRS project – it is an open source medical records system, designed to serve clinics in low-resource areas (such as sub-sarahan Africa) that treat patients with HIV/AIDS. Since we’re starting with the developer documentation, one of the coolest things about this project is that it’s making me learn Java and Eclipse, plus get my hands dirty with Tomcat. Yum! I love learning new stuff.
I like the range of projects I do. I’d like to do more of all of it. I’d also love to consult with for-profit vendors who are thinking about dipping their toes into offering support for open source projects, or open sourcing their software.
OK, enough of that. Now back to our regularly scheduled programming. :-)
Michele Martin, one of my fave bloggers, has a great post today on Reflective Practice. Both reflective practice – that is the process of reflecting on what you do, and how you do it, as well as conscious, deliberate evaluation of projects, are things that are not very common in our field, nor things that are valued or encouraged.
In many ways, we are focused on solving technology problems, or completing projects. But I have really come to believe that the way that we work with people is as important as the “final” outcome. We might be able to build the most wizz-bang amazing website ever (in a technological sense) but if we haven’t really thought about how we moved through the project, never evaluated how the project really went, and didn’t learn from the process, in the end, the project wasn’t the success it seemed to be. In fact, it’s amazing how much we can learn from projects that might be considered failures by technological criteria.
In the last few months, I was involved in helping three organizations choose vendors for varied technology projects, and in the course of that time, I talked with almost a dozen technology vendors of one type or another. One question I asked all of them was about whether they had a process of reflection and evaluation of their work, as it was going on, and when the project was coming to a close. Unfortunately, none of them had an answer to that question. That is something I would love to see change.
The dust is settling. I looked over Allan Benamer’s post on the Convio and Kintera initiatives, I looked harder at the Convio Open and Kintera Connect docs, and I also had a chat with some Kintera folk. I have a few comments.
Allan is right – the Kintera API is more comprehensive, and provides for more flexibility than the Convio API. Of course, the API was only one part of Convio’s initiative, so I do still think they come out ahead, a bit. But it may well be that for more complex integrations, the Kintera API will provide more power.
REST vs SOAP: Kintera seems to have chosen the “more power, harder to code” choice. I could argue it either way.
Methinks vendors in this space still just don’t grok, really, what “open” means. While I appreciate that one can, theoretically (I have yet to test it) easily become a “partner” with either company – but that doesn’t quite count as open. Allan hit the nail on the head when he said:
Again, this is a lesson in Web 2.0 transparency both for the sector and the vendors who serve it. Control? Let it go. I really mean that. From both a business point of view and from the point of view of how our sector should work to heighten transparency in society at large, there’s no reason to limit the ability of coders to learn about and discuss the API at hand. And the big guys have already done this work, check out the way Google and Amazon distribute their APIs. Those shine as industry-standard examples of how open APIs need to be distributed.
He’s right. Open it up, let anyone bang on test data to try things out, and you never know what might happen. The drive toward open everything is pretty inexorable, and the pressure is only going to get greater.
I listened in on the call with Kintera folks about their new platform, called Connect. I was mostly curious about how open this platform will be, and what the future holds for them. I have become fascinated by the ways the CRM/Fundraising space is changing so rapidly.
Basically, Kintera is taking directly from Salesforce’s playbook. There are two initiatives that they have that I’ll talk most about, their “Connect” initiative, and their data warehousing initiative. These are, for pretty obvious reasons, the most interesting to me personally. They will also be doing some serious UI overhauls, and upgrading their CMS. They also are opening a new data center, as well as bringing Akamai technology into the mix.
The Connect platform is a set of APIs, starting with the contact and payment sets of entities, that will allow access (via SOAP 1.1) to the data in the Kintera platform. Basically, third parties will be able to build applications which will allow two-way communication into the platform. The APIs will be without cost.
The data warehouse initiative is to allow their customers access to large amounts of data for reporting and data mining. It seems like it will start out with a local query system, then will be opened up to allow third party development of data analysis tools. That part looks very interesting.
A couple of annoyances: the documentation for the APIs aren’t up yet, and the sample code they are going to publish is in C# and Java! Now I’m sure that there are a lot of large Kintera customers that might be implementing other applications that will be written in C# and Java, but it seems to me that this is, in fact a pretty big red flag that they really don’t have a feeling for the technology that the sector is using. Code published in PHP and Python would probably get a lot more people up to speed and interested in building stuff that will integrate with the things that a lot of nonprofits really use. I mean really, how many nonprofits have stuff written in Java? Small minority, I’d bet. (I guess the C# would be useful for the Windows crowd.)
On the whole, though, I applaud them for seeing the light, and opening up their platform. It will be interesting to see where this leads them.
I’m throwing up my hands. Y’all will just have to live with overlapping series. I have too many ideas be sequential. I promise (!) more on Open Standards and Benkler (actually, Benkler is up next – I’ve got two chapters to review).
I’ve been using databases since I was a grad student in the 80s, and I’ve been designing and developing database-driven applications for the web since 1995. I’ve been using varied Unix-based databases since then (as well as others including Access and Filemaker Pro), and most have been open source.
Although I’ve been using databases for a while, I’ve decided that I’m going to focus specifically on open source databases for the next while, and, in particular, the different kinds of open source solutions that are possible for desktop database systems, or systems that might be server-based, but need a desktop front end. I’m particularly interested in the open source technologies that are coming down the pike that might bump Access from it’s perch as general-purpose nonprofit desktop database king, and that can provide nonprofits with flexible, robust data management solutions.
So here is my current survey of the landscape. I’ll be working a lot with Open Office, and hope to design some screencasts using Open Office Base sometime in the next few months. I’m starting this series off with just a list of the server-based DBMS. I’ll be talking next about desktop DB options (which mostly use these as backends,) and then last about ways to put this all together in an all open-source landscape.
Server-based DBMS (DataBase Management Systems)
- MySQL – MySQL is, I think, the most popular, and best known open source DBMS. It is cross-platform. It is the most popular because historically, it has been the fastest of the open source DBMS, but it has always lagged behind in terms of ACID compliance and other features. You can access a MySQL database via many many different drivers that people have written for just about any programming language. It is also possible to access MySQL databases via ODBC (Open DataBase Connectivity) or JDBC (Java DataBase Connectivity)
- PostgreSQL – PostgreSQL has always been my favorite. I’ve been using it since it was called Postgres95 – before version 6. (Wikipedia has a great entry on PostgreSQL, including some history). PostgreSQL has always been ahead of MySQL in terms of ACID compliance and robustness, and still is. It lagged behind MySQL for years because of speed issues (it was much slower,) but that has changed with the newest versions, such that in fact PostgreSQL is faster and more scalable than MySQL. PostgreSQL is also cross-platform, with binaries available for Linux and Win32 from Postgresql.org, and Mac OS via Darwin Ports. A PostgreSQL database can, like MySQL, be accessed via APIs written for just about all programming languages, JDBC, and ODBC (which I have quite a bit of experience with.)
- Firebird – this is a newer kid on the block, sort of. It has a very long history, though, since it is based on Borland’s InterBase codebase. It’s doesn’t have nearly the user base, or the amount of available tools as the others, but InterBase is a pretty interesting product, with some good features (like a small footprint, server performance tuning, and a great rollback and recovery system.) It is also cross platform.
- Apache Derby – a DBMS written entirely in Java. This project has a small footprint, and is designed to be easily embedded in other Java projects. It comes with a scripting language and interpreter, called ‘ij’ which is how you can interact with Derby on the command line. Also, of course, you can use JDBC is a way to access Derby. I’ll be doing a fair bit of experimentation with Derby (’cause I’m curious.)
- SQLite – a small footprint C library that implements an ACID compliant DB engine. It has a command-line tool, and it is possible to use C/C++ and Tcl for database access. Unlike the others, that are released under varied open source licenses, the code for SQLite is public domain.
- There are a few others (see list here,) but they are either research-focused (like Ingres,) developed very little, or have small user bases, and seem not relevant to nonprofit technology.
Nonprofit technology take home lesson: MySQL is certainly the leader – it’s most commonly thought of as the “M” in LAMP (Linux, Apache, MySQL, PHP/Perl/Python), which is a nptech web mainstay. I’d argue that PostgreSQL is a better choice, but for most nptech applications, it doesn’t matter – what matters is what your tech/consultant knows, and that’s much more likely to be MySQL. The others are most likely of interest to pretty small niche groups, for specific kinds of projects.
Technorati Tags: databases, opensource