Xojo Conferences
MBSOct2019CologneDE
Our Blog, Filemaker only, Xojo only, Archive (older)

Follow us on Twitter, Xing, LinkedIn or Facebook.

Customer Distribution


for our MBS plugin users, we have this distribution:

Japan: 2%
Australia: 3%
Canada: 3%
France: 3%
Netherlands: 4%
Italy: 4%
Switzerland: 5%
United Kingdom: 6%
Germany: 19%
United States: 33%

and just a few in Afghanistan, Argentina, Armenia, Austria, Bahrain, Belgium, Brazil, Burkina Faso, Cayman Islands, Chile, China, Columbia, Costa Rica, Croatia, Cyprus, Czech republic, Denmark, Dominican Republic, Ecuador, Egypt, Estonia, Finland, Georgia, Greece, Guadeloupe, Guernsey, Haiti, Honduras, Hong Kong, Hungary, Iceland, India, Indonesia, Ireland, Israel, Jamaica, Jordan, Kuwait, Latvia, Liechtenstein, Lithuania, Luxembourg, Macau, Madagaskar, Malaysia, Malta, Mexico, Mosambik, Namibia, Nepal, Netherlands Antilles, New Caledonia, New Zealand, Norway, Pakistan, Panama, Peru, Philippines, Poland, Portugal, Puerto Rico, Romania, Russia, Serbia, Seychelles, Singapore, Slovakia, Slovenia, South Africa, South Korea, Spain, Sri Lanka, Sweden, Taiwan, Thailand, Turkey, Uganda, Ukraine, United Arab Emirates, Uruguay and Venezuela.

In general plugin users are living where a lot of people live, who speak some english (to read documentation) and have enough knowledge to do software development and know about Xojo or FileMaker.

MBS Xojo Plugins, version 19.3pr5


New in this prerelease of the 19.3 plugins: Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

Hotel rooms for European Xojo Conference 2019 in Cologne


Our hotel room contingent "Xojo" will expire in two weeks, about three months before the conference. If you plan to join the conference, but you don't yet have a hotel room in Dorint Hotel, please reserve your room as soon as possible.

Monkeybread Software is pleased to announce the European MBS Xojo Conference in metropolitan Cologne, Germany. We meet in the lovely Dorint Hotel in the center of Cologne. The hotel is in the city center and in walking distance to the main station. Beside our two conference days we have accompanying social programme with our dinner event and optional two training days. For the evenings we have casual get-together in the hotel bar or beer garden.

To give you an update, we have already over 50 attendees signed up from 15 countries:
🇩🇪, 🇬🇧, 🇳🇱, 🇫🇷, 🇨🇭, 🇺🇸, 🇬🇷, 🇸🇮, 🇦🇹, 🇮🇹, 🇺🇦, 🇪🇸, 🇯🇴, 🇧🇪, & 🇨🇦.

We extended our last offer: Save 100 € till 24th July and pay 599 instead of 699 Euro for the ticket (+VAT if needed).



The schedule:

Oct 23rd: Xojo Training in English
Oct 24th: Conference, first day with dinner event
Oct 25th: Conference, second day
Oct 26th: Xojo Training in German

Registration is open. The early bird offer available till 24th July is just 599 Euro plus VAT. Attending the conference costs regularly 699 Euro plus VAT, including food and beverage in the Dorint Hotel as well as an accompanying social program.

Sessions are to be held in English. Our conference is conceived as a networking event for the Xojo community. The conference is an ideal opportunity for sharing your thoughts and your own development experience with fellow users and developers.

See also conference website, Things to do in Cologne beside our conference and European Xojo Conference FAQ.

SMTP Server Settings


Sending Emails with various servers can be a challenge. In this blog article we like to collect the settings needed for using our SendMail functions in FileMaker or CURLEmailMBS class in Xojo to send emails. As you see we always prefer to use encryption.

Bei checking certificates, we can detect and avoid giving our password to a transparent proxy. And we enable TLSv1.2 for all here and require encrypted connection. It's important to test and verify this, as I once run into a hotel reading my emails to count them and prevent spamming. (more)

RecordSet to JSON and back


Today I want to show you two useful methods to convert from a RecordSet in Xojo to a JSON string and back. We combine BuildRecordSetMBS function (in MBS Xojo SQL Plugin) with JSONMBS class (from MBS Xojo Util Plugin) and the new Convert method helps a lot!

Here the function RecordSetToJSON:

Function RecordSetToJSON(r as RecordSet) As String // adds data in recordset to a JSON Dictionary Dim FieldNames() As String Dim Values() As String // Query list of field names Dim c As Integer = r.FieldCount For i As Integer = 1 To c Dim d As DatabaseField = r.IdxField(i) FieldNames.Append d.Name Next // get all fields from all records into values array While Not r.EOF For i As Integer = 1 To c Values.Append r.IdxField(i).StringValue Next r.MoveNext Wend // make new Dictionary with the values and field names Dim j As New Dictionary j.Value("FieldNames") = FieldNames j.Value("Values") = Values // Convert to JSON Dim v As Variant = j Dim json As JSONMBS = JSONMBS.Convert(v) // return as JSON string Return json.toString End Function
(more)

TextInputCanvas for GTK3 and 64-bit


As you may know there is an open source project called TextInputCanvas. It provides some better text input events to Xojo apps using custom text control like the Formatted Text Control.

We just rebuild a copy to avoid problems with code signing on MacOS.

You can load a copy on my plugin download page.

This plugin is build with my plugin build system, so it has MBS in the name and includes libraries for Mac, Windows and Linux including ARM, so you can use it in all projects. If you find a bug related to the GTK3 or 64-bit port, please tell me.

A speciality of MBS Plugins with GTK is, that we built plugins to link dynamically to GTK and use either GTK 2 or GTK 3 depending on the Xojo version. This should help to have just one set of plugins to work with Xojo 2013 up to 2019r2.

European Xojo Conference Planning Update


Planning a conference is hard. You have a couple of variables from hotels and restaurants like conference room rent, delegate rates, hotel room rates, costs for buffets and refreshments. Sometimes you have to commit to a minimum number of attendees to get a nice room, which may lead to pay extra unused seats. A restaurant may impose a minimum revenue so you can be the only group that night. The big unknown left is how many attendees you have.

In Berlin we had 80 people attending the conference. The room was nice and big with possible space for over 100 attendees. We planned last year for Munich with 2 conference rooms. Just in case we got more people and would like to have two tracks. Six months before the event, we cancelled the second room as we only had around 30 people on the list that early. It doesn't make sense to have two tracks and only 20 people in each room.



For our Cologne event we planned a nicer conference with a ballroom and a lot of space to host even over 100 people. We started planning the schedule for two tracks and invited speakers.

Sadly the attendee numbers don't add up as much this year. We are just about 50 people and far away to fill two rooms for running with two tracks. The contract with the hotel allows to cancel 4 months in advance and we are have reduced to half of the space. We informed the speakers and attendees that we move all sessions in one room and reduce sessions to about 45 minutes each. The improvement for you is that you can now listen to all sessions. We still plan to record them and if you have to make a call or talk to someone in the foyer while a session, you can later watch it.

If you like to help the conference planner, please commit early for the conference and sign-up as early as you can. Don't wait for the last months as the conference size is reduced or enlarged months before the conference takes place. Such a conference is usually planned a year in advanced and adjusted about 4 to 6 months before to make sure we don't have too many empty seats.

xDev 17.4


The July/August (17.4) issue of xDev Magazine is now available. Here's a quick preview of what's inside:

Numbers Please! Part 3 by Markus Winter
What is a number? And just how do you tell a program to detect a number?

TextField with Warning Sign by Markus Winter
For his Numberfield, Markus needed a new control with a warning sign.

Husband + Wife + Xojo by Richard and Trisha Duke
Richard looks back on 30 years in the computer business.

Creating Barcodes in Xojo by Stefanie Juchmes
With the MBS barcode plugin, you can create over 80 types of barcodes.

Curves Ahead by Marc Zeedar
Predicting the future is tough. All we really know is that everything will change.

Your First Web App by Paul Budd
Never created a Web App? Now is your chance!

PLUS: Computed properties, WWDC, Xojo Podcast, Client Communication, WeakRefs, Best of the Web, and more!

MBS Xojo Plugins, version 19.3pr4


New in this prerelease of the 19.3 plugins:
  • Changed C++ to 2017 dialect for Xcode 11.
  • Fixed memory leak with TagLibFileRefMBS class.
  • Updated WinSparkle to version 0.6.
  • Added currentFactory property and NewPictureMBS method for PictureFactoryMBS class.
  • Updated DynaPDF to version 4.0.29.84.
  • Fixed MKMapViewMBS.showAddress method to correctly center on the found placemark instead of the region for that placemark.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

MBS Xojo Plugins Mailinglist


We just fixed our sign up form for the MBS Xojo Plugin Mailing list. See the mailing list page here.

If you like to be informed about new plugin pre-releases and join discussions about our plugins for Xojo, you can sign up here:

Email:

Please do not spam the lists and be polite. If we catch you with an auto responder, we may put you on moderation.
You are welcome to ask questions about our plugins there and get responses from other users.

The list is archived here: Mail Archive

Four months till European MBS Xojo Conference 2019 in Cologne


Monkeybread Software is pleased to announce the European MBS Xojo Conference in metropolitan Cologne, Germany. We meet in the lovely Dorint Hotel in the center of Cologne. The hotel is in the city center and in walking distance to the main station. Beside our two conference days we have accompanying social programme with our dinner event and optional two training days. For the evenings we have casual get-together in the hotel bar or beer garden.

To give you an update, we have already over 50 attendees signed up from 15 countries:
🇩🇪, 🇬🇧, 🇳🇱, 🇫🇷, 🇨🇭, 🇺🇸, 🇬🇷, 🇸🇮, 🇦🇹, 🇮🇹, 🇺🇦, 🇪🇸, 🇯🇴, 🇧🇪, & 🇨🇦.

We extended our last offer: Save 100 € till 24th July and pay 599 instead of 699 Euro for the ticket (+VAT if needed).



The schedule:

Oct 23rd: Xojo Training in English
Oct 24th: Conference, first day with dinner event
Oct 25th: Conference, second day
Oct 26th: Xojo Training in German

Registration is open. The early bird offer available till 24th July is just 599 Euro plus VAT. Attending the conference costs regularly 699 Euro plus VAT, including food and beverage in the Dorint Hotel as well as an accompanying social program.

Sessions are to be held in English. Our conference is conceived as a networking event for the Xojo community. The conference is an ideal opportunity for sharing your thoughts and your own development experience with fellow users and developers.

See also conference website, Things to do in Cologne beside our conference and European Xojo Conference FAQ.

DynaPDF 4 for PHP


Today DynaForms GmbH released a new PHP version of the DynaPDF library. You use this PHP modules with your PHP installation to use DynaPDF commands in PHP code. While PHP 5.x is still supported, you may prefer to migrate to the PHP 7.2 version. The DynaPDF library has the same commands for all PHP versions to make sure your existing PHP scripts can easily be upgraded.

You can download on the DynaForms website:

DynaPDF für PHP 5.3 for 32 Bit Windows and 32/64 Bit Linux.
DynaPDF für PHP 5.4 for 32 Bit Windows and 32/64 Bit Linux
DynaPDF für PHP 7.2 for 32/64 Bit Windows and 32/64 Bit Linux

Source code for the PHP modules. With an Enterprise DynaPDF license you can also download the source code of the DynaPDF library itself.

For the license, your license key for DynaPDF in Xojo and FileMaker will also work for the PHP version!
Try it and enjoy the same commands in your PHP scripts.

JSON Sort


In last prerelease we added JSON sort function to our FileMaker and Xojo plugins.

For FileMaker:

MBS( "JSON.Sort"; json )

For Xojo:

Sort method in JSONMBS class

Both use in-place sorting of the elements for arrays and object keys.
Here two examples:

[9,4,3.2,3.1,123]
returns
[3.1, 3.2, 4, 9, 123]

and

{ "last": 1, "First": 2, "Test": 3, "abc": 4}
returns
{ "abc": 4, "First": 2, "last": 1, "Test": 3 }

As you see it sorts text case insensitive. If you sort a single number, text or boolean value, we just return it as is.

We hope you enjoy the new functions. Please do not hesitate to contact us with questions.

Xojo Stammtisch in Wien


Wer hat Interesse an einem Xojo Entwicklertreffen im Juni in Wien?

Einfach in gemütlicher Runde treffen in einem netten Restaurant und beim Abendessen was über Xojo reden. Vielleicht habt ihr ja auch Fragen und Probleme, wo ich helfen kann?

Zeit wäre ca. 18 bis 22 Uhr, so dass man auch später kommen oder früher gehen kann.

Termin: 25. Juni 2019.

Bei Interesse bitte bei uns melden.

Falls sonst noch Bedarf an Schulung, vor Ort Entwicklung oder FileMaker/Xojo Hilfe besteht, bitte wegen Terminfindung bald melden.

MBS Xojo Plugins, version 19.3pr3


New in this prerelease of the 19.3 plugins: Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

MBS SQLite Extension in version 1.5


NICKENICH, Germany (June 19th, 2019) -- Monkeybread Software releases version 1.5 of the MBS SQLite Extension.

The MBS SQLite Extension is a multifunctional extension to any SQLite powered application.

Our SQLite Extension supports Mac OS, Windows and Linux. You can use it
  • in MBS SQL Plugin with SQLite,
  • in Cube SQL 4.0 and newer,
  • in Studio Stable Database Server 2.0 and newer,
  • in Xojo with the SQLiteDatabase class (needs LoadExtensions property set to true),
  • in Real Studio with the REALSQLDatabase class,
  • with SQLiteManager
  • or any other SQLite application using load_extension.

New in Version 1.5:

Our SQLite Extension gives you over 50 new functions for SQLite:
  • Additional mathematical functions like Round or Pow.
  • Functions to save blob values in files outside the database.
  • Functions to calculate checksums on blob values on the server.
  • String functions like SoundEx or accents removing for your text searches.
  • Regular Expressions in queries.
  • UUID generation
Our SQLite Extension supports macOS, Windows and Linux.
Example projects for Xojo and Real Studio are included for SQLiteDatabase, REALSQLDatabase, REALSQLServerDatabase and CubeSQLDatabase classes.

You can test the extension for free up to 10 minutes per launch in a demo mode. Licenses are available for $149 USD per developer with one year of free updates. If you have feature requests for additional functions, please send us an email.

MBS Plugins @ XDC 2019


We got a video from my presentation from Xojo Developer Conference 2019 in Miami.



Enjoy the video and see you at the coming European Xojo conference in Germany!

Additional XDC videos can be purchased here: https://xojo.com/store/#conference

Tip of the day: Folderitem items sorted


Here are some code snippets for methods, you may want to put in a module and use in your project. They return you the items or true items in a folder sorted by name and optionally with hidden items skipped:

Function Items(extends f as FolderItem, IncludeInvisible as Boolean = true) As FolderItem() // return all items in a folder // resoloves aliases or links // optionally filters hidden files Dim items() As FolderItem Dim c As Integer = f.Count For i As Integer = 1 To c Dim item As FolderItem = f.Item(i) If item <> Nil Then If IncludeInvisible Or item.Visible Then items.Append item end if End If Next Return items End Function
Function ItemsSorted(extends f as FolderItem, IncludeInvisible as Boolean = true) As FolderItem() // return all items in a folder ordered by display name // resoloves aliases or links // optionally filters hidden files Dim items() As FolderItem dim names() As string Dim c As Integer = f.Count For i As Integer = 1 To c Dim item As FolderItem = f.Item(i) If item <> Nil Then If IncludeInvisible Or item.Visible Then items.Append item names.Append item.DisplayName end if End If Next names.SortWith items Return items End Function
Function TrueItems(extends f as FolderItem, IncludeInvisible as Boolean = true) As FolderItem() // return all true items in a folder // does not resolove aliases or links // optionally filters hidden files Dim items() As FolderItem Dim c As Integer = f.Count For i As Integer = 1 To c Dim item As FolderItem = f.TrueItem(i) if item <> nil then If IncludeInvisible Or item.Visible Then items.Append item end if end if Next Return items End Function
Function TrueItemsSorted(extends f as FolderItem, IncludeInvisible as Boolean = true) As FolderItem() // return all true items in a folder ordered by display name // does not resolove aliases or links // optionally filters hidden files Dim items() As FolderItem dim names() As string Dim c As Integer = f.Count For i As Integer = 1 To c Dim item As FolderItem = f.TrueItem(i) If item <> Nil Then If IncludeInvisible Or item.Visible Then items.Append item names.Append item.DisplayName end if End If Next names.SortWith items Return items End Function

ZUGFeRD 2.0 and Factur-X for Xojo


With the last DynaPDF update we got new support for ZUGFeRD 2.0 and Factur-X, two standards to deliver invoices as PDF files with embedded XML data. We supported ZUGFeRD 1.0 before and now upgraded code to support version 2 in addition.

 

So here is a little Xojo code snippet to convert an existing PDF into a ZUGFeRD 2.0 document. Before you start, please assemble the XML for the invoice and know whether it's Minimum, Basic, Comfort or Extended level. So the code here starts with a new DynaPDFMBS object and creates a new PDF environment. We set import flags to import all content and prepare for PDF/A. If needed, you could skip some content like annotations directly here.

 

dim pdf as new MyDynapdfMBS

dim f as FolderItem = SpecialFolder.Desktop.Child("Create PDF.pdf")

pdf.SetLicenseKey "Pro" // For this example you can use a Pro or Enterprise License

// now create PDF

call pdf.CreateNewPDF f

Dim flags As Integer

flags = Bitwise.BitOr(flags, pdf.kifImportAll)

flags = Bitwise.BitOr(flags, pdf.kifImportAsPage)

flags = Bitwise.BitOr(flags, pdf.kifPrepareForPDFA)

call pdf.SetImportFlags(flags)

 

Next we load an existing PDF from a container field. Of course you can also use functions to create new pages here or open an import PDF from a file on disk. The next line imports the whole PDF file we opened into our work PDF. If you repeat the open and import step, you can merge several documents here. If you need only one page, you can use DynaPDF.ImportPDFPage function.

 

// import PDF file

dim ImportFile as FolderItem = FindFile("invoice template.pdf")

call pdf.OpenImportFile(ImportFile)

call pdf.ImportPDFFile(1) 

 

Per PDF/A requirement, we add here the language setting and a structure tree:

 

// PDF/A requires a language set

Call pdf.SetLanguage("en-US")

// PDF/A requires a structure tree

Call pdf.CreateStructureTree

 

If the PDF contains colorspaces which are not backed by an ICC Profile, we get an OnReplaceICCProfile event call to provide a replacement profile to the PDF engine. So if there is a colorspace missing the profile, it will be using one of our replacement profiles for RGB, Gray or CMYK. Here is an example implementation of the event, which looks for some generic profiles to replace an existing one:

 

EventHandler Function OnReplaceICCProfile(Type as integer, ColorSpace as integer) As integer

// provide missing ICC Profiles to DynaPDF

// The ICC profiles which should normally be configured by the user.

Dim filename As String

Select Case type

Case Me.kictGray

filename = "Generic Gray Profile.icc"

Case Me.kictRGB

filename = "Generic RGB Profile.icc"

Case Me.kictCMYK

filename = "Generic CMYK Profile.icc"

Case Me.kictLab

// not yet needed, but maybe in future

filename = "Generic Lab Profile.icc"

Else

Break

Return -1 // new type we don't know?

End Select

Dim f As FolderItem = FindFile(filename)

If f = Nil Or Not f.Exists Then

// file missing?

Return -1

End If

Dim e As Integer = ReplaceICCProfile(ColorSpace, f)

If e < 0 Then

// failed

Break

End If

// pass along success or failure

Return e

End EventHandler

 

There is another event for missing fonts, where you can provide a replacement font. We simply replace missing fonts with Arial

 

EventHandler Function OnFontNotFound(PDFFontRef as integer, FontName as string, Style as integer, StdFontIndex as integer, IsSymbolFont as boolean) As integer

// Here you could use your own mapping table.

// In this example we replace the font simply with Arial

if (WeightFromStyle(Style) < 500) then

// Only the weights 500 and 700 of Arial are installed

// by default. If you have also light variants then it is

// not required to change the style.

Style = BitwiseAnd(Style, &h0F)

Style = BitwiseOr(Style, kfsRegular)

end if

return ReplaceFont(PDFFontRef, "Arial", Style, true)

End EventHandler

 

Next we attach the XML invoice to the PDF. You can pass attachments as container, file or text, but please use the corresponding function. Here we pass it as text from a field, specify UTF-8 encoding and the ZUGFeRD specific file name. The attachment is associated with the main catalog as an alternative version.

 

// now add xml

Dim file As FolderItem = FindFile("ZUGFeRD-invoice.xml")

dim n as integer = pdf.AttachFile(file, "ZUGFeRD Rechnung", false)

if not pdf.AssociateEmbFile(pdf.kadCatalog, -1, pdf.karAlternative, n) then

Break // error

end if

 

Now we do the conformance check. If you licensed the PDF/A converter from us (Add-on for DynaPDF Pro), you get the PDF fixed if needed. If the PDF was already PDF/A, this should return okay and tel you which output indent is recommended. We than add the ICC Profile for RGB or CMYK to indicate how the PDF likes to be viewed.

 

// make sure we conform

// for perfect usage, you need PDF/A extension for DynaPDF (extra purchase)

// here we pass Basic level. Please make sure XML and level here match!

Dim retval As Integer = pdf.CheckConformance(pdf.kctZUGFeRD2_Basic, pdf.kcoDefault)

Select case retval

case 1

call pdf.AddOutputIntent(RGBProfileFile) // RGB

case 2

call pdf.AddOutputIntent(CMYKProfileFile) // CMYK

case 3

call pdf.AddOutputIntent(GrayProfileFile) // Gray

end Select

 

Finally we close the PDF file and let the destructor free the PDF environment.

 

call pdf.CloseFile 

 

We hope you enjoy this blog post. Please check the example databases included with MBS Xojo Plugins 19.3.


Ideas from WWDC


After a few days passed some of the details in various WWDC sessions show up.

I got a few points of interest to look into till the new releases appear in the wild and this includes:
  • Text recognition in Vision framework
  • Speech functions
  • Encryption functions
  • Asking for permissions to access user folders
  • CoreML functions
  • Enhancements for AppKit
  • Color picker
  • Sign-in with Apple button
Anything else? What are you interested in using in your solution with help of our plugins?

The release for MacOS 10.15 and iOS 13 are expected for September/October. The APIs are still in flux and the betas not yet polished. So let's wait for the public betas in July before we change applications. So maybe in August, we could show you some plugins for some new features.

Xcode 11 is working well and our projects build already with a few little changes.

Older blog entries:

2019-06-12 MBS Xojo Plugins, version 19.3pr2
2019-06-12 CubeSQL Library for Mac
2019-06-09 WWDC Tipps and Notes
2019-06-07 OpenDirectory Framework for Xojo
2019-06-05 Plugin wishes for macOS 10.15 and iOS 13?
2019-06-03 MBS Xojo Plugins, version 19.3pr1
2019-06-02 LLVM Bitcode
2019-05-30 Celebrating 60 articles in Xojo Developer Magazine
2019-05-29 MBS Plugin Release Schedule
2019-05-28 Such die Zahl - Deutsches Xojo Tutorial
2019-05-24 Five months till European MBS Xojo Conference 2019 in Cologne
2019-05-24 Updated Chart Gallery
2019-05-23 Xojo Sale: 20% off new licenses, upgrades, renewals, third party store & MBS Conference
2019-05-23 Standard discounts for multi year purchases
2019-05-23 Xojo meetings for California
2019-05-22 DynaPDF Manual online
2019-05-21 MBS Xojo Plugins in version 19.2
2019-05-21 Xojo Developer Conference 2020
2019-05-19 Test building of 2000 Xojo projects
2019-05-18 MBS Xojo Plugins, version 19.2pr8

Archives

Jul 2019
Jun 2019
May 2019
Apr 2019
Mar 2019
Feb 2019
Jan 2019
Dec 2018
Nov 2018
Oct 2018
Sep 2018
Aug 2018
Jul 2018
Jun 2018
May 2018
Apr 2018
Mar 2018
Feb 2018
Jan 2018
Dec 2017
Nov 2017
Oct 2017
Sep 2017
Aug 2017
Jul 2017
Jun 2017
May 2017
Apr 2017
Mar 2017
Feb 2017
Jan 2017
Dec 2016
Nov 2016
Oct 2016
Sep 2016
Aug 2016
Jul 2016
Jun 2016
May 2016
Apr 2016
Mar 2016
Feb 2016
Jan 2016
Dec 2015
Nov 2015
Oct 2015
Sep 2015
Aug 2015
Jul 2015
Jun 2015
May 2015
Apr 2015
Mar 2015
Feb 2015
Jan 2015
Dec 2014
Nov 2014
Oct 2014
Sep 2014
Aug 2014
Jul 2014
Jun 2014
May 2014
Apr 2014
Mar 2014
Feb 2014
Jan 2014
Dec 2013
Nov 2013
Oct 2013
Sep 2013
Aug 2013
Jul 2013
Jun 2013
May 2013
Apr 2013
Mar 2013
Feb 2013
Jan 2013
Dec 2012
Nov 2012
Oct 2012
Sep 2012
Aug 2012
Jul 2012
Jun 2012
May 2012
Apr 2012
Mar 2012
Feb 2012
Jan 2012
Dec 2011
Nov 2011
Oct 2011
Sep 2011
Aug 2011
Jul 2011
Jun 2011
May 2011
Apr 2011
Mar 2011
Feb 2011
Jan 2011
Dec 2010
Nov 2010
Oct 2010
Sep 2010
Aug 2010
Jul 2010
Jun 2010
May 2010
Apr 2010
Mar 2010
Feb 2010
Jan 2010
Dec 2009
Nov 2009
Oct 2009
Sep 2009
Aug 2009
Jul 2009
Apr 2009
Mar 2009
Feb 2009
Dec 2008
Nov 2008
Oct 2008
Aug 2008
May 2008
Apr 2008
Mar 2008
Feb 2008
XML: RSS Feed XML: Atom Feed