Archive for the 'Opensource' Category

subSyndicate

Once again, Yasashii has issued a press release regarding something I’ve done.

I purchased David Black’s book, Ruby for Rails, and was inspired to mogg together a (non-Rails) Ruby program to syndicate my SVN logs. Eventually, you guys may see my add the feed to OwlManAtt.com. I’m not sure yet…

I’m proud of the name of the fucking thing, too. subSyndicate is so perfect - Subversion Syndication, released by the Syndicate. I lol’d.

I would also like to point out that I’ve released this under the MIT license instead of the GPL. That’s a first for me.

Calgary, Alberta (Yasashiisyndicate.org) - Syndicate member Nicholas Evans is pleased to announce the Syndicate’s first software release, the subSyndicate Subversion Syndicator for UNIX and Linux.

About subSyndicate
The subSyndicate Subversion Syndicator is a simple piece of software designed to allow easy publishing of your Subversion logs via Really Simple Syndication, an Internet standard for content syndication.

Because subSyndicate is implemented in the Ruby programming language, it is portable across all UNIX and UNIX-Like (Linux) systems that are supported by the Ruby runtime environment. Support for Microsoft Windows is so far untested, but is theoretically possible.

About The Yasashii Syndicate
The Yasashii Syndicate, otherwise known as the Gentle Syndicate, is an organization dedicated to its execution of The Sekrit Plan. The Sekrit Plan’s goals, to outsiders, seem strange and mysterious. To syndicate members, however, The Sekrit Plan makes perfect fucking sense.

For more information about the Yasashii Syndicate, please see yasashiisyndicate.org/about.

subSyndicate

Subversion In Fifteen Minutes

I am pleased to announce that I have written a Subversion tutorial for the Syndicate. Please see the following press release from the Syndicate website for more details and a link.

Calgary, Alberta (Yasashiisyndicate.org) - Syndicate member Nicholas Evans is pleased to announce the release of the Syndicate’s first tutorial, Subversion In Fifteen Minutes. This is the first in a long series of document that the Syndicate plans to release as a part of its Seekrit Plan.

About Subversion
Subversion is the premiere source control management software package. The Subversion project was founded by a number of individuals who were discontect with CVS and its philosophies. Since its founding in June of 2000, nearly six years ago, incredible progress has been made.

About The Yasashii Syndicate
The Yasashii Syndicate, otherwise known as the Gentle Syndicate, is an organization dedicated to its execution of The Sekrit Plan. The Sekrit Plan’s goals, to outsiders, seem strange and mysterious. To syndicate members, however, The Sekrit Plan makes perfect fucking sense.

For more information about the Yasashii Syndicate, please see yasashiisyndicate.org/about.

Subversion In Fifteen Minutes.

Initial Thoughs on Ruby on Rails

As mentioned in my last post, I’ve been reading a book about Ruby on Rails. This book, Agile Web Development with Rails, consists of two major sections. In the first, a demo application (a shopping cart) is written. In the second, you get an excellent look through most major features and concepts in the Rails framework. The book also includes a (breif) primer to the Ruby language.

Rails is an interesting beast. It forces the design pattern of MVC down your throat. This, however, is not a bad thing. It allows Rails to make a bunch of assumptions about how your application is going to work. Based on these assumptions, Rails picks lots of sensible defaults. And Rails is all about defaults. Defaults save you time.

So, now, lets ponder the model. The model is the data your application deals with. Normally, this data is stored in a database (Rails supports MySQL, Postgres, Oracle, and more). But, since Ruby is an object oriented language, it would make sense for us to translate the model from a relational database into objects.

This is where Rails’ concept of models comes in. When you start a project, rails generates a lot of files with code stubs for you. In our project/app/models folder, we’ll find a bunch of classes that link together database tables. We can also find things that tell the model what to accept and what not to accept as valid input for a field. Rails even has a number of hooks that allow us to insert our own code to be run before or after a database operation (like, we can add a method to automagically log something every time we save an object).

Rails uses a kickass package called ActiveRecord (not to be confused with Microsoft’s LDAP implementation, ActiveDirectory) to interact with relational databases. Not only does it do all of the cool stuff from above, but it also generates methods for updating/selecting/saving/inserting, has built-in SQL sanetization, and lots of other cool features. You can read more about it in the Ruby on Rails API documentation.

Next up, we have the concept of controllers. Controllers are where a lot of where our application logic resides. Their job is to actually do it. They change the application’s state, find appropriate database records, and generally take care of business. They can then hand off what data they’ve gathered to the view, but more on that in a bit.

Controllers, like models, are also just more classes. One can invoke a controller by going to something like ‘example.org/myapp/controller_name’. Rails would look for a class called ControllerName in app/controllers/controller_name.rb.

Notice how the class name changed from what we specified in the URI to what it looked for. This is something Rails does a lot. The idea behind Ruby on Rails is that you can express ideas cleanly in something that looks human-readable. As such, Rails guesses at things that look nice, so you don’t have to specify them. ActiveRecord also does this by playing with the pluralization of the model to find the approprite database table. For example, if the model was called ‘Book’, the table it would look for is ‘books’.

Yes, I know. That sounds like a really, really bad idea. I agree with you, one hundred and ten percent. I have the feeling that I am going to be burned by Rails when I start developing in it because someone had the bright idea to teach their development framework the English language. This is my single biggest complaint with Rails (keeping in mind that I haven’t done much with it yet, having only read a book on it).

Finally, the view. Rails has two templating systems, rhtml and rxml. They’re pretty self-descriptive; rhtml is for HTML, and rxml is for XML. Rxml was covered very breifly, but it looks nifty for generating feeds. Rhtml was discussed much more completely. It offers all of the features of the Ruby programming language, making it incredibly flexible. Additionally, the book demonstrated how one could add a new templating system to Rails. It was not very hard.

Ruby also supports writing little modules that you can drop in and out, along with creating ‘helpers’. I’m not sure of their practical usefulness just yet.

There is a little Rails features that really makes Rails shine. When one generates form elements using the built-in form helpers, Rails can automagically highlight fields that have invalid input in them, with almost no work on the part of the developer. That’s really cool!

All in all, Ruby on Rails looks like it’ll be interesting. It seems easy. Agile Web Development with Rails was a great read. In fact, it was the first book of its class that I was able to read cover-to-cover in just a few days. I strongly advise it to anyone who is interested in developing under Rails.

S7: Concepts Evolve

Howdy folks. Yesterday, I announced that I had begun working on a dohickey called ‘S7′. In this annoucement, I discoursed on my inspiration for S7 and the renderer I had completed, yet gave barely any detail on the S7 Creator GUI I have in mind. I wish to fix this.

In my mind, the S7 Creator will be a web application that will be accomodating of users working together on the same slideshow, at the same time. This will sort of take a [controlled] wiki approach; anyone who is ‘on the project’ can add, delete, edit, and re-order slides and content items on those slides. Now, that does not mean that single users will not find S7 to be useful, because you can still create slideshows on your own.

You might be wondering, why would anyone want to work together on a slideshow? What niche does this fill?

Highschools, for one. It seems as if it is some kind of status symbol for highschool teachers to get everything from their students in slideshow format. Group projects, however, throw a mitersaw into this plan - students can’t crowd around one computer and be adding six slides at once, all together. PowerPoint is built for one user editing a show at a time. A stupid limitation, I know, but PowerPoint isn’t Web 2.0 hip. [Yes, yes, the second Web 2.0 reference this week. If you want my address so you can come and beat me with a 2×4, just ask.]

Now, on paper this sounds like a nifty idea. In practice, it’s a fucking pain in the ass to implement. I need to determine how to establish locks on content, so users don’t step on each other’s toes. I’ve pondered it, and I only have one area in which I am not sure as to the most effective locking procedure. But this is for me to worry about, unless you want to get involved.

A user can share presentations with people, or set them as private. A gallery of presentations with the most views will be available, as will other charts. If bloggers can spend all day writing posts about taking a nap, maybe people will make slideshows about it, too.

S7 Creator is going to use a lot of AJAX and DHTML-ish tricks to make the creation of slideshows painless. I have a bunch of sketches of add screens that take only one or two clicks to add and organize content. It’ll be hot.

So yeah.

S2 + S5 = S7

Back during November ‘05, Chuck Hagenbuch gave a presentation to SCOSUG about Horde. It was an excellent presentation, which prompted me to set up my own Horde installation, but there was one aspect of the night that really got me.

Did you click on the ‘presentation‘ link? If you didn’t, you really should. Clicked it? Looked through it? Good. Now noticed that the slideshow software is web-based?.

Holy shit batman! BROWSER-BASED SLIDESHOW TECHNOLOGY? The potential is incredible!

The technology is called S5, or Simple Standards-Based Slide Show System. The project is lead by a bloke named Eric Meyer, and it’s all in the public domain.

From the S5 site:
S5 is a slide show format based entirely on XHTML, CSS, and JavaScript. With one file, you can run a complete slide show and have a printer-friendly version as well. The markup used for the slides is very simple, highly semantic, and completely accessible. Anyone with even a smidgen of familiarity with HTML or XHTML can look at the markup and figure out how to adapt it to their particular needs. Anyone familiar with CSS can create their own slide show theme. It’s totally simple, and it’s totally standards-driven.

S5 is a standard HTML document, combined with some Javascript and CSS. That presentation you saw - yeah, that was a single HTML document. Impressive, huh?

By itself, S5 might be good for those users who are unafraid of sticking their fingers in to an HTML document and learning how to use unordered lists. Unfortunately, that falls woefully short of being a PowerPoint killer and a proponent to Web 2.0 (yes, I know, shoot me).

S5 Presents is a Ruby-On-Rails application that lets you build presentations through your web browser, then renders them out for viewing with S5.

The designing of slides involves using the Markdown syntax, which is still not much of a PowerPoint killer. You can sort of share presentations (I don’t think you can collaberatively build them, though), so this still falls short of being on the forefront of Web 2.0.

Now, ever since I saw S5 in action on that fateful night, I’ve been meaning to make it database driven. I have some great concepts for an online slideshow builder, too, but that will come with time. For now, I only have some scripts to get a presentation out of a relational database and render it as an S5 presentation.

I give you the Slightly Snarled S5, or S7, renderer, alpha one. It is a complete implementation of the S5 1.1 reference. Unfortunately, building slideshows through PhpMyAdmin sucks, but this is something.

This takes S5 Presents a bit further in that instead of a slide having stuff on it, slides have individual ‘content items’ (as do the handouts that go with the slides). I think this would make it easier to re-order talking points when it comes to the UI.

So yes. Perhaps I am suffering from Not Invented Here Syndrome, but meh. It’s something fresh, and who knows, maybe I’ll end up making something of it and being bought by Google so I can retire when I finish highschool.

« Previous PageNext Page »