40/40 WordPress Plugin

The WordPress plugin for the 40/40 Prayer Vigil has just been published!  You can download it from your plugin menu, or by visiting its home on the WordPress Plugin Directory.

The plugin provides a widget that utilizes the web service about which we previously wrote to display the prayer guide for each day.  You can configure whether you want it to display 40 days or 40 hours; what language to retrieve; the translation version for the Scripture links displayed with each day’s guide; and the number of overlap days (it will display a “Coming Soon” entry before and a “Thanks for Praying” entry after).  Use is pretty simple; just drop it into a widgetized area of your theme.  It will probably look best with at least 200 horizontal pixels, although it will wrap to any sort of narrowness.

Version 2012.0 is the version that’s up there now.  The Spanish translations of the options menu is not done yet, but you can specify Spanish prayer guides.  Version 2012.1 will contain the localized options menu.  If  you run into any problems using it, you can submit issues against it at its WordPress Plugin Directory page.

40/40 Web Service for 2012

Back in 2010, we wrote a web service for the 40/40 Prayer Vigil organized by the Ethics and Religious Liberty Commission of the Southern Baptist Convention.  This allowed us to use the content in multiple places.  They are doing another vigil this year, but the service we wrote two years ago was not terribly reusable.

This year, we have developed a reusable web service that should hold up for 2014 and beyond.  (Acronym alert – non-programmers skip the next sentence.)  This one has a REST API instead of SOAP and WSDL, and supports XML, JSON, and HTML output formats.  This year, it also supports both English and Español.

The REST API start page is at http://services.djs-consulting.com/FortyForty.  The prayer guides require an output format, a language, the Scripture version, whether the guide is for a day or an hour, and the day or hour number.  There are lookup transactions for lists of available output formats, languages, and Scripture versions, and lookups for converting a date to a day number and a date/time to an hour number.

There will be a WordPress plug-in shortly that will utilize this to display the current day or hour’s prayer guide directly on your blog; we’ll make another post when that is available.  Also, starting September 26th (the first day of the vigil), it will be available for display with no login required at the Hoffmantown Prayer and PrayerTracker websites.  Developers, the service is available now; if you want to write code to utilize the service, you’ve got 3 months to make it work!

xine-lib 1.1.21 RPM

Below are the library and development RPMs for xine-lib version 1.1.21. These were built on Ubuntu Linux and converted to RPM using alien. Be sure to check out the About the Xine RPMs post for more information.

xine-lib — The main xine library
xine-lib-dev — The development xine library (needed if you’re building an interface against xine-lib)
xine-lib-doc — Documentation

You’ll also need a user interface – as of this release, the most current release of xine-ui is 0.99.7.

(To save disk space, only the current release and two prior releases will be maintained.)

xine-lib 1.1.20.1 RPM

Below are the library and development RPMs for xine-lib version 1.1.20.1. These were built on Ubuntu Linux and converted to RPM using alien. Be sure to check out the About the Xine RPMs post for more information.

xine-lib — The main xine library
xine-lib-dev — The development xine library (needed if you’re building an interface against xine-lib)
xine-lib-doc — Documentation

You’ll also need a user interface – as of this release, the most current release of xine-ui is 0.99.6.

(To save disk space, only the current release and two prior releases will be maintained.)

xine-lib 1.1.20 RPM

Below are the library and development RPMs for xine-lib version 1.1.20. These were built on Ubuntu Linux and converted to RPM using alien. Be sure to check out the About the Xine RPMs post for more information.

xine-lib — The main xine library
xine-lib-dev — The development xine library (needed if you’re building an interface against xine-lib)
xine-lib-doc — Documentation

You’ll also need a user interface – as of this release, the most current release of xine-ui is 0.99.6.

(To save disk space, only the current release and two prior releases will be maintained.)

Database Abstraction v0.8

When we began developing C# web applications, we found ourselves in the position of determining what the best way of accessing the database is.  We evaluated several technologies…

  • NHibernate – May be very good, but it was overkill for what we were trying to do.
  • LINQ to SQL – This brings C#’s LINQ (Language-Integrated Query) to SQL databases.  You create database-aware classes and use LINQ to select from collections, which LINQ to SQL converts to database access.  This is a good abstraction, but it relies on SQL Server; as we typically deploy to PostgreSQL, this didn’t work.  (We also couldn’t get DBLinq, a database-agnostic implementation, to work.)
  • ADO.NET – This is the tried-and-true database access methodology, released as part of the initial release of the .NET framework.  The downside to this is that it encourages SQL in the code at the point of data retrieval; it does not provide a clean separation of data access from data processing.
  • EF Code First – This didn’t exist; it’s also very SQL Server-centric.  Not faulting Microsoft for that, especially since they release a free version now; but, as we deploy on Linux, until they release a Linux version, SQL Server is not an option.

With our PHP applications, we had written a database service that read queries from XML files.  Then, queries were accessed by name, with parameters passed via arrays.  The one thing that ADO.NET has that was useful was the fact that it is based on interfaces.  This means that if we wrote something that exposed, manipulated, and depended on IDataConnection (instead of SqlConnection, the SQL Server implementation of that interface), we could support any implementation of database.  The SqlDataReader implements IDataReader as well.  Our solution was becoming apparent.

Over time, we developed what is now the Database Abstraction project hosted on CodePlex.  On Thursday, we released the first public release (although the DLLs are in the repository, and are usually current at every commit).  If you are looking for a way to separate your data access from the rest of your code, or want a solution that’s database-agnostic, check it out.  It supports SQL Server, MySQL, PostgreSQL, SQLite, and ODBC connections *, using the data provider name to derive the proper connection to implement.  There is also a Mock implementation to support unit tests; this mock can provide data, providing a useful way to test methods.  Finally, there is a membership and role provider based on Database Abstraction; simply configure the connection string, create the database tables, and away you go! **

A pre-released version is already in production use in our PrayerTracker application, and others are being built around it.  If this sounds like something that could help your project, certainly feel free to check it out!

* Oracle is omitted from this list, as their DLL had redistribution restrictions; this meant that the source code repository, upon check-out, would have build errors.  There may be an Oracle implementation in the future (it would be trivial), but there is not one now.

** The membership and role providers are untested; they will be tested and tweaked by version 0.9.