Thursday, August 23, 2012

Announcing TurboGears 2.2.0!

That's right, we finally did it! It's up right now, and if you follow the directions on you'll get 2.2.0.

I'd like to take a minute to thank Alessandro Molina in particular. I did what support I could, but this release really belongs to him. Please pass along congratulations and thanks to him. And if there's bugs, I'll take the blame myself for not doing more to help.

The full changelog is below.

Monday, July 16, 2012

Are we ready for +TurboGears 2.2.0?

It's time to ask that most dreaded and anticipated of questions: Are we ready to release 2.2.0?

We've pushed out out second release candidate. We've had it available for testing. Only one flaw has been found, and that can be integrated into the release easily (and since it's a security flaw, it will be).

What say you, the community? Are you satisfied with what will be released if we were to release right now? I'd like to make the release official, and happen on Thursday, so speak before then!

Note that if you reshare this, please block comments. Make people reply to this post, so that we can be sure we'll see any replies in a timely fashion.

Thank you!

Saturday, July 14, 2012

Custom Renderers with Dynamic Content on TurboGears

One of the most common questions we get on the TurboGears mailing lists is actually a group of questions:
  • How do I make a controller return a customized PDF?
  • How do I display a custom graphic to a user?
  • How do I return an Excel spreadsheet?
This all boils down to the same question: How do I generate dynamic content that is tailored for the user and is returned in a non-HTML format? While I won't answer for each format (because of the fact that every format gets built differently), I will show you how to tell TurboGears about the format you want to send to the user.

Saturday, July 7, 2012

Social Networks Replacing Forums

Okay, so I asked this a couple days ago, but I think I'm starting to see ideas. I may be crazy, but I can start to see these ideas come together. Especially if the social network is more of a platform than it is just a stream.

Wednesday, June 27, 2012

What Does The Future Hold For Blogs And Forums?

I was thinking a bit about this just now, and I think it makes for an interesting question. I've heard people saying that social networks are killing blogs and, to a different extent, forums. I'm not sure I agree, but I can see how it can happen, I think.

Announcing TurboGears 2.2.0rc2

Hello everybody. It's been a while, but at least I have some good news to share: We've just put 2.2.0rc2 out.

At this point, unless we find something seriously wrong, this is likely to become to 2.2 release officially. I've worked with Alessandro, and cleared up the issues we were seeing on We've upgraded many of our support packages. We've added more renderers, and more options. 2.2 looks amazing to me, and I think you'll feel the same way.

The changes are listed below, but here's how to get it and try it out:

virtualenv ${HOME}/tg22rc2
source ${HOME}/tg22rc2/bin/activate
easy_install -i tg.devtools
paster quickstart tgtest
# answer the questions here how you see fit
cd tgtest
python tgtestdevelop
paster setup-app development.ini
paster serve development.ini
# now point a web browser at http://localhost:8080/

You should be up and running within 5 minutes.

Here's the changes:

TG2 Core Updates:

  • Template engines in tw2.core could collide, based on template extensions. Fixed.
  • Subclassed controllers now keep the decorations inherited from their parents
  • repoze.who v2 is now supported
  • Form validation now supports TW2 validation dictionaries, less dependent on FormEncode
  • When multiple renderers are registered for the same content type, the default renderer is now preferred
  • URL keyword args, marked for removal in 2.2, are now removed.
  • Ming setup issues are resolved, and Ming is in its own module
  • repoze.who v2 is not compatible with repoze.what v1. New compatible module has been provided to make code change minimal.
  • Jinja templates must now have the extension .jinja Conflicts with .html were being found when Genshi and Jinja were mixed in the same project.
  • Mako option "reloadfromdisk" has been deprecated. Use "auto_reload_templates" as this is the default for other rendering engines
  • __before__ and __after__ were renamed to _before and _after in the past. Code and documentation now reflects this.

Devtools / Quickstart Updates

  • New applications will be set up to use repoze.who v2 by default
  • Improvements to the quickstart look, layout, and content
  • Quickstarts now support Kajiki as a rendering engine
  • Twitter Bootstrap support in quickstart
  • Genshi is always available in new quickstarted projects. Provides a common template language for use in extensions
  • Sessions are now stored in encrypted cookies

Friday, April 13, 2012

Anybody Available To Talk?

Thanks to and his posts about #LeanStartup, I'm finding myself questioning whether or not my business idea is a good one. I'm looking to start up a company that will fit between the offerings of Monster and LinkedIn.

Anybody available over the next two weeks for a short interview? I'd be conducting them between 9pm and midnight eastern time. Let me know if you're willing.

Friday, April 6, 2012

Announcing TurboGears 2.1.5 Release

The TurboGears team is proud to announce the release of TurboGears 2.1.5!

This release has many new features and bugfixes, all of them listed below. Due to issues with getting 2.2 released, we have chosen to produce another 2.1 based released. As a result, this release will be the final 2.1.x release, and the final release that will support Python 2.4.

We strongly recommend you upgrade. We are seeing benefits of newer template engines and faster response speeds, and it's only going to improve.
  • Backport template rendering parameters from 2.2
  • Add hook for render calls to be able to hook even partials
  • Test unit for validation messing hooks
  • Improved Jinja template support for Python 2.4
  • Avoid running wrong decoration hooks when controller is switched due to a validation error
  • Permit to avoid doctype injection when manually rendering templates with tg.render.render
  • Added new new command (tgdevelop tgdeps) to setup.cfg to help with creating a good working virtualenv.
  • Added jinja2 template loader with dotted notation.
  • Fixed multiple paginators in same page
  • Fixed missing tw.forms dependency when auth is disabled

Tuesday, February 7, 2012

A Dropbox Replacement

So, I've just had an idea, and am not having much success finding it out there already. If you know of it, please let me know. What am I thinking of having it do?

This will need to do several things. First and foremost, it needs to support the same ideas as Dropbox: It syncs files across Windows, Linux, Mac, Android, and iPhone. It will allow people to share files with each other. It will also allow public sharing of files (such as photos).

The remaining pieces are where it gets interesting. I'd like the system to use a system like TrueCrypt. Using this, it will keep the entire dataset encrypted. It will also use many small files (on the order of 10M-100M), so that only an encrypted chunk has to be transferred, instead of the whole encrypted dataset. Doesn't sound like a big deal, until you start factoring in the ability to store photos. Imagine having to upload the entire dataset as one big chunk just because you rotated that picture of Uncle Jim where you were holding the camera sideways. 10G (or more) being uploaded, just for that, kinda sucks.

The backend storage is also different: Instead of uploading those chunks of data to a specific server somewhere, it uploads to a service utilizing Amazon's S3 protocol (obviously, Amazon itself is a viable choice for this).

As an added bonus feature, it should be able to commingle chunks from different S3 backends, and use that as a way to provide steganographic features. Using that, it would even be possible to have multiple layers of hidden volumes.

Another bonus feature: A destruct password. One that, when entered, will render the entire volume, and any hidden volumes, unusable. Considering the direction the government is going, this could be a very good thing to have.

An even better bonus feature would be having the TrueCrypt container dynamically resize as you add data, so that your space only goes as large as you need it to. With the idea of hidden volumes, this might not be feasible, but it would be nice.

Now, put all of this together, and you wind up with a service that is actually very easy to manage. It gives the security of TrueCrypt, the convenience of DropBox, and the mobility to use all of your data where you want and how you want.

Is this out there? Does anybody already have it available? Or is this something to be written at some point?

Sunday, January 1, 2012

Wikis Suck

There, I said it. They suck. And it's not just wikis; pretty much every documentation system I've seen sucks. I'm not going to outline a solution here, because I don't have one. I can only say that these things are pretty awful, and until we can find something that actually solves these problems, we won't have a truly great documentation system out there.

I apologize for the nature of this post. It's a problem I've seen for years, and been trying to find an answer to. I just don't have one, and the problem is only getting worse. Maybe somebody out there can help to refine this problem into something that an answer can happen. In no particular order, here's the problems I've got with wikis:

Organization. I have yet to see something really handle this well. A straight up hierarchy doesn't work. Too often, a given document belongs in two places (or more). Anything that enforces a hierarchy must require a choice of where to place something. On the flip side, when discussing a wiki, very few of them impose any sort of hierarchy. In fact, some of them don't even have a hierarchy at all, placing every item in the same "folder". This makes for a mess when it comes time to search for something. Tags can help in this regard, but they're still far from ideal. How do we make sure that a given article is sufficiently tagged? How do we make sure that the searcher knows which tag will provide the desired results?

Authoritativeness. Sometimes, you need documentation that you know the source. You need to know it came from the right person or team. Documentation that is crowd-sourced simply doesn't always cut it. On the other hand, sometimes you need to have areas where the crowd can update things. This is a balancing act that is very difficult to get right, and I'm not convinced that the open model of the wiki is the right solution. Simply locking a contentious page doesn't actually solve the problem of determining accuracy, and the lack of accuracy in those cases undermines authoritativeness.

Access Control. When dealing with something open to the public, you're going to get spammers and defacers who don't care about what you have to offer. They're just going to come in and update every page they can with their garbage, and you have to clean up the mess. Some wiki systems simply go with "allow the user to revert to a previous version of the page", which is not actually useful at prevention.

Cross-Referencing. This seems like I'm talking about the primary strength of wiki: It cross-references so easily it's amazing. I can reference something anywhere (within the wiki, outside the wiki) without much effort at all. And yet, it's still a major weakness. Cross-references are entirely manual across all of these systems. If I'm reading a wiki, and decide to make a new page for a given phrase, I can find myself surprised that the page already exists. I have no way of knowing it unless someone else does the work of making the link.

Supported Formats. They support one specific type of media: Specialized markup text using the markup style of their choice. Why can I not upload a PDF, or DOC, or ODT? Hell, any other format. And I don't mean as an attachment: I mean as a first class piece of data to be reviewed, searched, and edited.

wikis are impressive, and do a difficult job. I'm not convinced they do it well, though, and I'm sure I'll have other issues to discuss about them later. I just wish I had a solution, instead of a rant.

The closest description I can have is that the ideal documentation system would be automatically cross-referencing, supporting a variety of data formats, with an intelligent search that would help me find what I'm looking for. It sounds like I'm asking for some sort of local internet with a Google search. Maybe I am, but I don't think so.

I just don't know. Does anybody else have any thoughts?