Feed aggregator

Drupal Association News: 2013 Audited Financials for the Drupal Association

Planet Drupal - Wed, 04/06/2014 - 20:50

The phrase "audited financial statements" does not usually bring joy to the hearts of children or wake slumbering people from naps. However, if you're me, sutied financials are pretty darn exciting. Firstly, I love them because they give us a baseline to measure against year afer year, and I love metrics. Secondly, audited financials are the cornerstone of a larger objective - openness and transparency in all our work. We continue to strive for this openness, publishing our financial statements quarterly, recapping and recording all our board meetings, and chattering with you all via email, IRC (#drupal-association), social media. 

Although we currently have no legal or financial obligation to conduct an annual audit, it's an opportunity we did not want to miss out on. The annual audit allows us to share an independently verified view of our financials with the community. It also allows us to learn from professionals in the field about best practices we shoudl be applying in our own work. We learn something during every audit that makes the Association stronger. 

Ready to dive in? Here's what you need to know about our 2013 audit:

What IS a financial audit anyway?

Most of us think of an audit as a bad thing - something the government does when our tax filings don't seem right. That's definitely one kind of audit. Here at the Drupal Association, and for many other organizations, an audit is an annual opportunity to independently verify your financial statements and ensure that your financial operations are as strong as they can be. Audits can be conducted internally, but because of our size and our desire for transparency, we contracted with an external CPA firm, McDonald Jacobs, to conduct our audit.

What did our audit cover?

The Drupal Association's fiscal year aligns with the calendar year. Our audit covered financials and practices in fiscal year 2013, Jan 1, 2013 through December 31, 2013. 2013 was a pretty stable year for teh Association in terms of operations. Though we grew signficantly and experienced a leadership change (hi there!), our programs and systems did not undergo any major changes. For 2013, the auditors looked at things like:

  • Proper recording of income and expense: The first job of the auditor is to ensure that our financial statements are an accurate representation of the business weve conducted. Did we record transactions on the right date, to the right account, and the right class? In other words, if we said that 2013 revenue for programs was a certain amount, is that really true?
  • Financial controls: Preventing fraud is an important part of the audit. Though everyone on the Drupal Association team is fantastic to work with, it's important to put the kinds of controls in place that can prevent common types of fraud, such as forged checks and payroll changes. Auditors look to see that there are two sets of eyes on every transaction, and that documentation is provided to verify expenses and check requests. for example.
  • Policies and procedures: Sarbanes-Oxley and other laws and regulation require that we have certain policies in place at our organization, including a whistleblower policy, for example. Our auditors looked at our policies to ensure they were in place and, in some cases, had been reviewed by the board and staff.
What are the documents the auditor provided?

The complete auditor's report includes three documents for 2013:

What did our auditors find?

Honestly, not a lot, and that's a good thing. In 2012, we had a very positive audit, but it did flag several issues for us to address and correct. In 2013, we were able to adress all of the issues raised by the auditors:

  • Currency conversion: We manage several currencies at the Association as we do work around the globe. In 2013, we followed the advice of our auditors and have properly accounted for the conversion of currency (from Euro to US Dollar, for example) and any gains or losses associated with that conversion.
  • Recognizing conference revenue: When you buy a ticket to a DrupalCon, we are liable to you until we are able to deliver the service you purchased - the Con. So, if you buy a ticket, and we cancel the Con, we owe you the ticket price. Because of that, we are not allowed to recognize Con revenue (from ticket sales, sponsorships, etc.) until the conference is actually held. In 2013, we properly held all revenue associated with a Con on our balance sheet, and did not recognize that revenue as income until the month in which the Con was delivered.
  • Capitalizing Drupal.org expenses: Just like a building, a bulldozer, or a copy machine, Drupal.org is an asset. According to the Financial Accounting Standards Board, if we make an investment in this asset, like, say a major software upgrade, we can capitalize that expense over a standard period of time (we're using three years). This allows us to absorb the expense over the lifetime of its usefulness. We've been capitalizing any expenses associated with the completion of the D7 upgrade.
So what happened in 2013?

In short, we were able to sock away a fair amount of money. Our change in net assets was +$642,461. The success of 2013 is part of what help the board decide that we can make a big investment in Drupal.org in 2014. We are beginning to see a payoff for this investment and are thrilled that we had the cushion to sustain it.

We grew! In the 2013 financial statements awe re able to make a direct comparison to 2012, our first audited year. In the Statement of Functional Expenses (which show where/how we spent our money), you can see that staffing costs increased, along with most other costs. This is a sign of our growing maturity as an organization. As a nonprofit, we work very hard to spend every penny we raise wisely, but as our community grows, so to does the need to serve that community. 

We still aren't telling a great story in our financials. In 2014, we set up our financials so that we can show you a little more detail. Rather than showing just income and expense overall, we can show you income and expense for each Con, Drupal.org, etc. Although we can't see it in the the audited financials yet, you can get a sneak peek in our financial statements.

What else fo you want to know?

Let us know what other questions you have!

Flickr photo: Addison Berry

AttachmentSize Public_ 2013 Drupal Association audit communication letter FINAL.pdf86.2 KB Public_ 2013 Drupal Association financial statements FINAL.pdf202.91 KB Public_ 2013 Drupal Association management letter FINAL.pdf82.26 KB
Categories: Elsewhere

drunken monkey: Optimize your site search results with Visitors Voice Free

Planet Drupal - Wed, 04/06/2014 - 15:21

Visitors Voice Free is a great new solution that lets you easily customize your site's search results by re-ordering or changing them at will. It integrates with Search API Solr Search to automatically apply your changes in all searches on the site.


Ever had a client complain about a search on their site which just didn't have the right results? Or maybe you own a site yourself and have encountered this problem? For site administrators it is often easy to see which results should be delivered for certain searches on their site (e.g., "prices" or "opening hours") – but up to now it was woefully difficult to actually let the site search reflect this knowledge. Especially Solr, with its own elaborate scoring mechanism, is hard to influence in this respect, and the effort necessary is often not really justified if there are just one or two searches whose result order is a bit off. However, if the searches in question are important for users, this can still have a negative impact on the perception of your site as a whole.

Enter Visitors Voice Free

This is a free SaaS solution with Search API integration which lets you very easily customize your site's search result pages – not only re-ordering the results, but also adding or removing them as you see fit. This ensures that, especially for common or important queries, the search results help your site's visitors as well as possible to find what they are looking for.

I have already written about Visitors Voice's premium search analytics offer (which will soon receive a major update), and this new, free service perfectly complements their existing offer – use site search analytics to find underperforming search queries, and then fix them right away with an easy-to-use, clean user interface. But, of course, the search customization functionality can also provide great value without the analytics service, if you become aware of problems via some other means (e.g., if you just make sure that the results make sense for the most common search terms).

Just note that the whole product is still in Beta state at the moment, so their might still be some rough edges – feedback is very welcome – and a few shortcomings are already known. For instance, at the moment only one search index per site is supported, which needs to use a Solr server for the integration to work. Also, only the results that can be viewed by anonymous users are displayed in searches in the Visitors Voice dashboard.
Given enough interest, these shortcomings can soon be fixed, though.

How does it work

If you have a site (or a client with one) that uses Search API and Solr for its search, just install the Visitors Voice module and add your Visitors Voice access key (which you receive after signing up). (If you have more than one index on your site, you'll also need to select searches on which one you want to customize.) Then just log in to the Visitors Voice dashboard and you'll be able to review the results for any search on your site and then get the option to freely change them – re-arrange their order, remove some or add others (as long as they are indexed in the index you're using). The changes will then be immediately (or at the next cron run, if you have "Index items immediately" disabled for the index) reflected in searches on your site.
The access key authenticates access to this functionality to make sure no-one but you (and people given access by you) can carry out such changes.

Get started

If you'd like to take a look yourself before signing up for anything, there is a live demo which you can try.

Or just sign up for a free account and try it out on your own site right away. (With my partner code "drunkenmonkey", you will receive a 10% discount on all of their premium services if you decide to use some of them later.)

If you'd like to talk about some custom solution, or chat about something else, you can contact the Visitors Voice team at info@visitorsvoice.com.


I also want to express my gratitude here that in the course of this project the Visitors Voice team has decided to generously sponsor ongoing maintenance of my Solr module in addition to my contract work for them. Drupal Karma++!

Categories: Elsewhere

Blair Wadman: DrupalCamp Wroclaw Recap

Planet Drupal - Wed, 04/06/2014 - 15:12

When Marcin Padjdzik suggested that we fly to Poland to give a talk at a DrupalCamp, I jumped at the chance. He later mentioned how surprised he was not to have to convince me! Especially considering neither of us had spoken at a conference before. The logic was simple: flying to a place where we knew that the audience would be strangers would make our first talk a whole lot easier. Luckily that theory proved to be correct!

I had a great time in Wroclaw. It is a lovely town and very scenic and the people seemed really friendly and relaxed. I spent every evening socialising with locals who were very welcoming. It was great to to spend the evenings that way rather than eating out at touristy restaurants.

Thanks go to the organisers for setting up and running this camp. The Drupal community is fairly small in Poland, so hats off to them for making this a success. They have been trying to attract English speakers to make it altogether more of an international affair. I think that is a great move and I can see it increasing in popularity over the next few years.

Keep reading to find out more about the camp...

Tags: Drupal EventsPlanet Drupal
Categories: Elsewhere

Dries Buytaert: A method for giving credit to organizations that contribute code to Open Source

Planet Drupal - Wed, 04/06/2014 - 13:46
Topic: Drupal

If we want to encourage more organizations to contribute to Drupal and hire core developers, we should start to give them credit for their contributions. I'd love to see us maintain a page on Drupal.org that shows which companies contribute to Drupal and in what capacity. This credit provides these organizations a tangible benefit in recruiting developers, demonstrating their expertise, and more. Credit is a powerful motivator for individuals, but also for businesses. It is a form of trust currency.

It is great that we give individual contributors credit for their contributions, and we should continue to do so. However, I'd like to extend that to organizations, both to the Drupal agencies as well as their customers. Mapping out how contributions get funded can be great for individuals, customers and digital agencies.

A great way to start doing this, is to adopt a new format for Git commit messages. I'd like to propose the following format:

$ git commit -am "Issue #n by INDIVIDUAL@AGENCY*CUSTOMER: message."

We prefix agencies with @ and customers with *. I believe this provides us the necessary flexibility. We could choose to store this in Git Notes, if we prefer, but that is not the main point.

Contributed a feature as an individual consultant directly for a customer or end-user:

$ git commit -am "Issue #n by INDIVIDUAL*CUSTOMER: message."

Contributed something in your spare time and don't want to give credit to your employer:

$ git commit -am "Issue #n by INDIVIDUAL: message."

Let's put it all together with a real example. Imagine Sam, Megan and Tim collaborated on fixing a performance bug. Sam helped in the "20% time" provided by her employer Acquia, Megan helped in her spare time after work, and Tim worked on this on behalf of his employer, Pfizer, who is affected by this bug. Ideally, the commit message would look like this:

$ git commit -am "Issue #42 by Sam@Acquia, Megan, Tim*Pfizer: fixed performance bug."

The great thing about this approach is that we can adopt it today and worry about analyzing the data later. It also works regardless of where your Drupal code is hosted (Drupal.org, GitHub, etc) or what your source code management system of choice is (Git, SVN, etc). In fact, I believe all Open Source projects would benefit from this level of transparency and that giving credit directly into the commit message makes it very transferable.

If adopted, we'll want to build tools to help us create these commit messages (i.e. have contributors provide proper attribution in a new project issue field so the maintainers/committers don't have to manually create it).

With this level of transparency, we can start to study how our ecosystem actually works; we can see which companies contribute back code and how much, we can see how much of the Drupal project is volunteer driven, we can better identify potential conflicts of interest, and more. But most of all, we can provide credit where credit is due and provide meaningful incentives for organizations to contribute back to Drupal. I believe this could provide a really important step in making Drupal core development more scalable.

I'd love to hear your thoughts about us giving organizations credit.

Categories: Elsewhere

Sina Salek Official Site: NEW Drupal Module : Hook Post Action

Planet Drupal - Wed, 04/06/2014 - 13:13

Currently Drupal core does not offer any hook to do actions after a node/entity is inserted/updated/deleted in Database. So for example you can not send an email mentioning the node after the node is inserted because Drupal uses SQL transactions and the node is not yet fully written to database when hook node presave is called so if for any reason the transaction is rolled back, users will receive a false mail.

So Hook Post Action module introduces several new Drupal hooks to overcome this limitation

read more

Categories: Elsewhere

Junichi Uekawa: gnome-screensaver isn't installed.

Planet Debian - Wed, 04/06/2014 - 11:46
gnome-screensaver isn't installed. gnome package doesn't seem to depend on that, and gnome-screensaver doesn't start up by default. If it's not running screensaver / lockscreen doesn't seem to appear. Hmm.. how is it supposed to work ?

Categories: Elsewhere

DrupalCon Amsterdam: Front-enders, now’s the time!

Planet Drupal - Wed, 04/06/2014 - 09:34

Now that everybody is following DrupalCon Austin, this is a good moment to get inspired and propose your session for DrupalCon Amsterdam Frontend track.

This year is when Drupal 8 is going to be released and is going to bring a clean, fresh and totally rebuilt front-end. Front-end and design related topics that are not specific to Drupal are very welcome. If you need some help on deciding your session subject just take a look at our suggestions for the Front-end Track.

We know you have something interesting to show and we will be really glad if you want to share it with all these fellow Drupalists attending DrupalCon Amsterdam. So, please don’t be shy, don’t be afraid. You’re an interesting and good looking person.

Lewis Nyman and Ruben Teijeiro are here to guide you during your session preparation and to help you with any concerning question. Are you excited to share new tools and techniques with community and geek out with them? Submit your session now!

Categories: Elsewhere

Russell Coker: Android Device Service Life

Planet Debian - Wed, 04/06/2014 - 08:05

In recent years Android devices have been the most expensive things I’ve purchased apart from airline tickets and other travel/holiday expenses. As they are expensive I’d like to use them for as long as possible to get the most value for money. Also as I give my devices to relatives when they no longer work for me I’d like to avoid having relatives hassling me about their phone not working as desired. So I’ve been thinking about the features that I need to make it possible to use a phone or tablet for a long time.


The way Android works is that when an application in the foreground requests more memory background applications may be closed to free some memory. Android doesn’t use swap by default, there is some documentation on how to enable it (and it’s not difficult to figure out for anyone who has used Linux before) but generally it’s not done.

If you run a larger application the chances of apps closing in the background (causing delays when you switch back to them and possibly a loss of context if the app is buggy and doesn’t preserve all state) are increased. As a general trend apps tend to get bigger to provide more features and also because users who own newer bigger devices don’t complain as much about memory use.

Also to make things worse new versions of Android tend to use more RAM. So a phone that runs well can suddenly start performing badly when you upgrade to a new version of Android (which incidentally usually can’t be reversed) and upgrade to new versions of apps (which can’t be reversed through the Google Play Store).

The Sony Ericsson Xperia X10 was a very nice phone when it was released, it ran Android 2.1 very quickly. When I upgraded the Xperia X10s that my wife and I used to Android 2.3 (which was necessary to have the phone run as a Wifi access point) performance dropped considerably. The Android upgrade combined with newer larger apps means that those phones are barely usable now. 384M of RAM was plenty in early 2011 when I first used the Xperia X10 but it’s not nearly enough now.

Recently 2G of RAM has been the minimum for a mid-range or high-end phone. It seems difficult to imagine a new Android feature as compelling as the addition of Wifi access point support in Android 2.3 that would drive an upgrade to a future memory hogging version of the OS. It also seems difficult to imagine Android apps needing enough memory to destroy the performance of a phone with 2G of RAM. But then I couldn’t imagine the 384M in an Xperia X10 becoming inadequate or the 512M in a Samsung Galaxy S becoming barely usable either.


Until fairly recently storage in an Android device was divided into USB attached storage (a VFAT filesystem that could be directly mounted on a PC) and a Linux filesystem that was used for all internal operations of the phone. On such devices it typically wasn’t possible to change partition sizes without a lot more skill than most users possess and most of the storage space was reserved for USB attachment. If you only had a few Android apps and lots of photos, movies, etc then this worked well. But if you wanted to install larger Android apps then you would have big problems. Even with Android 4.x devices (which all seem to have a single filesystem) you can easily run out of space.

Modern games often take several hundred megs of storage. Games that take 500M+ for the Android package install (which also requires the same amount of temporary space for installation and upgrade) are common. Sometimes games download data files after they have been installed for a total size approaching 2G (such as The Sims Freeplay).

When I bought a Nexus 4 for my wife I got the version with 8G of storage because paying an extra $50 for the 16G version seemed unreasonable. 8G was fine for my wife, but when she got a new phone I gave the Nexus 4 to a relative who wanted to play The Sims and other big games. That relative isn’t so happy about having a limited number of games on their phone and I have to fix it when storage space runs out and things start aborting (when storage runs out the Google App Store program aborts and uses lots of space for temporary files).

I recently bought a tablet with 32G of storage and filled 16G on the first day (tablets are good for watching
TV and TV shows are big). Fortunately the tablet in question has a SD socket so that when space becomes a problem in a year or two I can buy an SD card and keep using it.

An unfortunate recent decision by Google was to prevent apps from being run from a SD card. So even if you have a device with a SD socket you still need to have enough internal storage for all apps and their private data. At 500M+ for a modern game that means a device with 8G of storage (which includes space for the OS) will be lucky to get 8 games installed.

If you want to use a phone to it’s full capacity (playing various media files, games, etc) then it seems that the minimum storage capacity would be 8G of internal storage and a SD socket. For a device without an SD socket (such as the Nexus 5 with 16G or 32G of storage) your future use will be limited. 32G is probably enough for a phone given that you can recode movies to use less space (the FullHD screen on the Nexus 5 is nice but 720p movies will probably look good enough). But the larger screens of tablets demand better video quality so the Nexus tablets are probably a bad choice due to lack of storage space.

Screen Size and Resolution

I have previously written about the sizes of devices and how they may be used by people of various ages [1]. That should be of use for anyone who plans to use their old phone as an educational device for their children (which appears to be very common). But apart from that I can’t think of any reason why size would suddenly make an old phone obsolete. Only young children will have their hands change size in any significant way.

Resolution also shouldn’t be a huge problem, the 480*854 screen on the Xperia X10 is fairly good for a 4″ screen. While a higher resolution makes text more readable at a small size for most users the availability of a higher resolution screen isn’t going to make their old phone obsolete.


The only Android devices I owned that appeared to develop CPU speed issues late in life were the Xperia X10 phones, and that might be more due to RAM limits and the OS upgrade. All the other devices were either obviously slow at purchase time or are still performing well now.

CPU speed may make it difficult or impossible to play new games, but shouldn’t affect other uses of a phone or tablet.


It seems to me that if you want to use an Android device for more than 2 years then storage capacity should be a major factor in choosing which device to purchase. It seems that lack of storage space is in many cases the main factor that makes older devices annoying or impossible to use.

Related posts:

  1. Cheap Android Tablet from Aldi I’ve just bought a 7″ Onix tablet from Aldi....
  2. Choosing an Android Phone My phone contract ends in a few months, so I’m...
  3. Standardising Android Don Marti wrote an amusing post about the lack of...
Categories: Elsewhere

Zero to Drupal: DrupalCon Austin Day 1 Recap

Planet Drupal - Wed, 04/06/2014 - 08:02

I'm sure the Planet is flooded with DC recaps but it couldn't hurt to have one more so here's mine:

  • Registration literally took seconds. Although I wasn't thrilled about the shirt color this year (cranberry/purple), the registration process was smooth and efficient
  • Dries' keynote was pretty good. I especially liked how he reinforced the point that Drupal 8 is positioning itself to be relevant in a rapidly-changing web landscape. I would have liked to see a deeper technical breakdown, as opposed to the high level problem/solution talk, but overall it was good.
  • The Dependency Injection session was pretty eye opening. While I haven't used DI in Drupal/PHP Projects, I have used it in Node.js and Angular.js. I'm super excited to embrace DI in D8 now.
  • Lunch was nice...although I regret the second cookie.
  • The session on Twig in Drupal 8 was okay but very short. In fact, it was so short that I was stunned when I heard the words "Thank you" at the conclusion of their presentation. Either way, I did learn a little about Twig in D8 which was cool.
  • The Tonight Show session was amazing! It was so awesome to see an example of using Drupal as an API to deliver content to connected front-ends (ie Backbone.js). It was also very confirming as we're currently building a set of connected front-ends using a very similar approach (hint hint, we're using Angular.js).
  • Dinner at Stubbs BBQ was phenomenal! The spinach was the kind of spicy/creamy that makes you want to slap yo momma!
Tomorrow (Wednesday)

Tomorrow, I'm looking forward to more networking and sessions. If you live in or around the St. Louis area, and are at DrupalCon, feel free say hey. We're always looking for other developers in the St. Louis region to work with and I'd love to connect!

Categories: Elsewhere

Midwestern Mac, LLC: Thoughts on the Acquia Drupal Developer Certification Exam

Planet Drupal - Wed, 04/06/2014 - 04:55

tl;dr: I passed, the exam is better than I was expecting, but I still have mixed feelings about Acquia's Drupal Developer Certification program.

Categories: Elsewhere

Dirk Eddelbuettel: Introducing RPushbullet

Planet Debian - Wed, 04/06/2014 - 04:40
A new package of mine appeared on CRAN today: RPushbullet.

A few days ago, I had tweeted about a first version available via its GitHub repo. The package is now on CRAN which will make it easier to install for many. You still need an API key (free, after registration at Pushbullet) and one or more target devices to message to: an modern smartphone (Android, iPhone, ...) or a Chrome browser provided you also installed the corresponding app.

I also set up a short web page on my server with some more information and an example. So pushbullet away...

This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.

Categories: Elsewhere

Drupal Easy: DrupalEasy Podcast 131: DrupalCon Austin Day 1

Planet Drupal - Wed, 04/06/2014 - 01:52
DrupalEasy Podcast 131

Austin has begun and Mike, Ted and Ryan are all on the prowl for interesting subjects and people at the Con. Dani Nordin of Boston gives us a quick update on her talk subject, we hear from Dave Datars, the CEO of Acquia's fresh acquisition, TruCentric, a user experience personalization company from Toronto. We also hear from Mike, who gets to interview Dries and all of the keynotes live on stage. See the DrupalCon keynote video for that interview.

read more

Categories: Elsewhere

Exaltation of Larks: Meet the Larks at DrupalCon Austin

Planet Drupal - Wed, 04/06/2014 - 01:42

Exaltation of Larks is at DrupalCon Austin!

This is the Drupal community’s biggest conference for all things Drupal and it’s a great chance for you to meet all the Larks who are in attendance.

To set up a meeting with us, send us a message or mention @LarksLA on Twitter. We’d love to talk with you about Droplabs, the Drupal incubator we co-founded in Los Angeles in 2011, how it’s become the Top Drupal Location in the world, and how to start a Droplabs in your city.

If you’re in the Los Angeles area and aren’t going to DrupalCon, you’re welcome to join Lee Vodra, one of the co-founders of both Exaltation of Larks and Droplabs, for a Droplabs Open House on Thursday, June 5th.

Droplabs will be announcing its Droplabs Academy and tuning in to the live stream of the DrupalCon Austin Closing Session. Drop by and meet some of the Larks who are in Southern California and say farewell to DrupalCon Austin and “hello!” to DrupalCon Amsterdam, DrupalCon Bogota, and the surprise location of DrupalCon North America 2015.

read more

Categories: Elsewhere

Exaltation of Larks: Prescribing Drupal: CMEDownload's Video-on-Demand Subscription Service for Continuing Medical Education

Planet Drupal - Wed, 04/06/2014 - 00:38

CMEDownload is a continuing medical education (CME) service that gives physicians and medical students access to a high-quality library of thousands of lectures in video and audio formats for computers and mobile devices. This video on demand (VOD) service contains thousands of lectures and hundreds of hours of continuing medical education.

The service is a good example of Drupal being used to power a MOOC, or massive open online course: it combines digital-age distance learning with unlimited participation and open access to educational materials. CMEDownload has since been joined by other MOOC services using Drupal, including edX.org.

Attending conferences can be tricky for busy medical professionals. CMEDownload partners with top-level national and international medical conferences so that physicians can view lectures without leaving their homes, jobs, or families. Customers who sign up for an all-access pass can stream or download any of the thousands of videos and also earn certificates in continuing medical education through watching these videos.

Exaltation of Larks has been working with CMEDownload since 2012. What started as a standard site audit — with a focus on improving website performance and fixing security issues — turned into a major refactoring project and infrastructure overhaul. With the results from our initial site audit, we have steadily improved the website in almost every way.

To this day, Exaltation of Larks continues to maintain and support the CMEDownload website. We are a fully-integrated, full-service design and engineering firm, and in the case of CMEDownload we have provided development, maintenance and support, infrastructure consulting and managed hosting services.


Sujal Mandavia, CMEDownload’s CEO, is a sharp businessperson with a great product. He wanted to improve CMEDownload’s security and performance and he needed a sleeker, faster-moving way to present and organize the service’s video media, as well as improve the user experience of the customer-facing features.

As someone with development experience himself, Sujal knew he needed to find a team that was familiar with site architecture for media-heavy sites, and who understood how to organize, catalog, and serve up large amounts of video media. Sujal searched extensively for the right team to handle the upgrades he needed.

“The Larks’ consistency was a plus,” Sujal says. “So was their level of experience.” Both companies have offices in Los Angeles — CMEDownload is an LA startup and Exaltation of Larks has a Los Angeles-based team — which made working together an easy decision.


Code Audit and Refactoring
We began with a full infrastructure audit. This included a review of CMEDownload’s web hosting, which at the time of our audit was on a dedicated Xserve server. This server was occasionally crashing and we took emergency measures to improve data integrity in the event that the MySQL database server crashed. At the same time, our implementations significantly improved the database performance.

Understanding the way the original CMEDownload website was constructed required high technical expertise. Through our audit, we learned we would need to untangle some of the previous development work. We refactored large parts of the codebase to use high quality third-party modules that are available on Drupal.org to provide the same functionality, while performing a code audit of the 17 custom modules installed. (The previous vendor had developed significant parts of the Drupal codebase from scratch and in many cases had reinvented the wheel.)

Managed Hosting
CMEDownload is now hosted on Amazon Web Services (AWS). We’ve utilized AWS extensively to reduce CMEDownload’s web hosting costs by almost 50%. These changes include refactoring and optimization of the codebase and database, which have lowered both web hosting fees and ongoing maintenance costs.

We provide long-term support and maintenance services for CMEDownload. This includes ticket-based support, ongoing bug fixes, and working directly with CMEDownload’s staff. Through our support system, we provide CMEDownload with services for all of their hosting and infrastructure needs.

Performance and Scalability
We improved CMEDownload’s page load speeds through extensive database tuning and performed significant database maintenance tasks, including automated integrity checks and optimization of the database tables.

Modules we installed and configured included Varnish, Expires and Purge, and we added Views caching that was missing for nearly all the blocks and pages, including video queues, playlists, completed quizzes, etc.

We also implemented the CDN module for Drupal in order to use a content delivery network. With the CDN, CMEDownload is able to deliver the files in its enormous video library much more quickly and efficiently to its customers.

Security Improvements
One of the first things we worked on was improving security, fixing potential information disclosure vulnerabilities. Many pages and custom lists of information displayed by Views did not check for access control, which we promptly fixed.

As is standard with e-commerce sites we work on, we performed an e-commerce audit to ensure that customer data was protected. This was also one of the first projects where we enforced HSTS, or HTTP Strict Transport Security, a security implementation created in 2012.

“HSTS is a powerful and relatively little-used method for increasing security and even improving usability by preventing mixed content warnings. We recommend using HSTS on all our projects that use SSL,” says Christefano Reyes, of Exaltation of Larks. “It’s been part of our standard security package for a while and we would love to see more websites using it.”

Subscription Issues
Customers are presented with an interface similar to Netflix: members have a queue to which they add videos they want to save for later viewing. We added functionality that allowed members to reorder their queue and delete videos from it. CMEDownload also uses the Drupal iTunes module to expose users’ playlists in iTunes.

We fine-tuned custom modules that determined how a lecture or course was labeled and displayed to subscribers, and who had permission to view what content. We also worked on streamlining a method for offering discount codes. Many lectures and courses have attached quizzes, to test subscribers on the material before they can gain a certificate of completion. We worked on CMEDownload’s custom modules to simplify the process of displaying these quizzes to viewers.

CMEDownload also keeps track of who has watched which videos, and issues the corresponding continuing education credits and certifications. CMEDownload uses custom code and scripts to calculate these credits and display them. These proprietary methods enable CMEDownload to track the views of individual members.

Exaltation of Larks is an Authorize.Net development partner and we implemented their service with Drupal to better manage CMEDownload’s subscription information.

Another customer-facing change we implemented was a switch from FlowPlayer to JWPlayer for streaming video. We chose JWPlayer because support for JWPlayer is very good and the player does most of the work: it can play HTML and Flash files in one instance, whereas with FlowPlayer it’s necessary to switch between two types to play HTML or Flash. CMEDownload and their customers are happy with the results.


Our customer is very satisfied. Sujal’s only complaint was that he wished Exaltation of Larks had been on the project from day one. “I think companies like Larks have made it easier for folks to access the power and community of open source without being experts themselves,” Sujal says.

Sujal believes the Los Angeles startup scene has changed for the better in recent years. He recognized the need for a CME product and he filled that need, but the startup community was smaller and technical resources were harder to find at the time CMEDownload was founded. Open source software was available but only easily utilized by developers and hardcore aficionados.

Here at Exaltation of Larks, we’re extremely happy to have helped CMEDownload with their success. We are currently working with CMEDownload on upgrading from Drupal 6 to 7, which will make feature development considerably faster and further reduce support and maintenance costs.

read more

Categories: Elsewhere

Open Source Training: Using the Drupal FullCalendar Module

Planet Drupal - Tue, 03/06/2014 - 22:54

If you want a calendar on your Drupal site, the FullCalendar module is one of your very best options.

  • It mimics the look of Google Calendar and can even import from Google Calendars
  • You can drag-and-drop events to update them.
  • You can color code events on many different criteria.

Below you can watch a 3 video introduction to FullCalendar, which is part of our much longer FullCalendar class.

Categories: Elsewhere

Sune Vuorela: Bringing KDE forward

Planet Debian - Tue, 03/06/2014 - 22:31

The almost-yearly large KDE-sprint in Randa, Switzerland is doing a fundraiser to get this year’s event running. See http://www.kde.org/fundraisers/randameetings2014/

This year, it is besides the recurring multimedia topics, a lot about improving the new KDE Frameworks, the related documentation and the development experience with IDE’s and such.

It is also a good way to come full circle, since it was back in 2011 when I was at the Randa Meetings that the KDE Frameworks initiative was started.

So once again: http://www.kde.org/fundraisers/randameetings2014/

Categories: Elsewhere


Subscribe to jfhovinne aggregator