Sunday, November 29, 2009

Mach-II 1.8 Release Candidate Available


Team Mach-II (which is now six people strong!) is pleased to announce the immediate availability of Mach-II 1.8 RC1. Download Mach-II 1.8 RC1 now.



Mach-II 1.8 introduces numerous new features and also sets the stage for us to move forward to 1.9 code named "Integrity" and the big 2.0 release code named "Velocity".



New features and enhancements include:




In addition to these "marquee" features, Mach-II 1.8 includes a ton of smaller improvements that will make building Mach-II applications even faster and easier than before, so make sure and check out the "What's New in Mach-II 1.8" page on the wiki for all the details.



And there's the usual round of bug fixes and performance improvements of course. You can see the details in the CHANGELOG, but we do want to point out some highlights:


We can't thank our community enough for all the fantastic feedback and assistance they offer on the development of Mach-II. From questions on aspects of the framework that aren't as clear as they should be, to bug reports, to feature requests, to testing on real-world Mach-II applications, this is all vital to the continued progress and success of Mach-II. We couldn't do what we do without the active participation of our vibrant, smart community.



I'm so excited because we're starting a whole new development cycle for Mach-II. Mach-II Simplicity (1.8) has been development for an entire year now and having a new features is going to be a lot of fun. We're moving to a milestone type releases so look for new features soon in Mach-II 1.9 code named "Integrity".

Wednesday, November 25, 2009

A bit of levity - Muppets: Bohemian Rhapsody

Because everybody needs a bit of levity in their day.  Without a good laugh, it is easy to make every little thing seem like life or death.  Enjoy a brand new Muppets!

[youtube http://www.youtube.com/watch?v=tgbNymZ7vqY?wmode=transparent]

P.s. I didn't expect the chickens or the penguins.

Tuesday, November 24, 2009

Slow Custom Domain on GAE

I recently deployed an application to Google App Engine (GAE). Accessing the application via the appspot.com subdomain was fast however the custom domain consistently was slower (sometimes 5 seconds versus 200ms). I believe the issue is that custom domain was set up on the same day and that the DNS has not propagated through the internet completely. This leads to some crazy routing to Google's network.

I'll wait a while longer because I ask the Google App Engine group (not much else other than this explanation is mentioned in the searches I've done). I'm going to reboot my local wireless/wired routers.

SES URLs on OpenBD GAE

I've been working on a brochure style site for a friend this week.  The budget is nothing and I'm doing this as a favor for my friend so it's my time. Instead of doing the same old, I decided that I should try something new and learn since I'm donating my time.  I hope to be posting more about using Google App Engine (GAE) as free hosting for CFML applications.  GAE is cloud computing and it does turn the usual concept of building applications on its head.  Since GAE's daily http request limit for the free account is 1.3M requests, I don't foresee any issues with overing over our quotas.


The application I'm building is using Mach-II Simplicity (1.8) and is running on Open BlueDragon (GAE Edition).  My friend wanted to use SES URLs so I investigated to see if the SES URL filter that is usually bundled with Open BlueDragon was commented out in the web.xml file.  It was not even present in the file (whereas in the normal OpenBD edition it is commented out) so I was a little nervious this wasn't going to be possible.  Instead of wasting time researching, I used GAE's nifty one click (ok, it's two clicks and your Google account password) deployment option to just try by testing it.  Here is the snippet I added in my web.xml right at the top after the <web-app ...> node:





<filter>
    <filter-name>SearchEngineFriendlyURLFilter</filter-name>
    <display-name>SearchEngineFriendlyURLFilter</display-name>
    <description>SearchEngineFriendlyURLFilter</description>
    <filter-class>com.newatlanta.filters.SearchEngineFriendlyURLFilter</filter-class>
    <init-param>
        <param-name>extensions</param-name>
        <param-value>cfm,cfml</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>SearchEngineFriendlyURLFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>



Bam! I deployed it to the cloud and it worked.  SES URLs on OpenBD GAE is a go!  Thought I would share it with the world.

Wednesday, November 18, 2009

How to Apply the Apache 2.0 License to Your Project

Every once is a while I get asked the questions about open source licenses.  Here is a simple tutorial on how to apply the Apache 2.0 License to your project.

1. First you'll need a copy of the Apache 2.0 License for your project. Grab a copy by downloading in text form from the Apache Software Foundation.
2. Now, you need to modify a notice statement so you can add them to your files. We'll get to where you put the notice statement in step 3 so just hold your horses for a moment. Here is boilerplate notice which you will modify for your project:

   Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
   limitations under the License.


Some things you must do:

a) Replace all [bracketed] items in the above notice statement. There are only two of these items so should not be hard for you to do.
b) Do not leave the brackets in the notice. For example, "[yyyy]" would be replaced with "2009" (or what ever year you release in). Again, do not leave the brackets in the notice statement.

3. Apply the your notice statement to each and every file in which the Apache License applies. The most common mistake when applying the license that people think that supplying the license text is enough to make your the project licensed under the Apache License.  Again, you must place a copy of the notice statement (probably at the top) in the appropriate "comment syntax" for the file format.

4. Secondly, you need two files in the root or top directory of your distribution.  It's best to not deeply nest them in a some directory deep in your project.  Leave them in the root or top directory. One file should be named LICENSE (no file extension) in which you will place the text from the license you just downloaded in step 1. The other file that is required is a file named NOTICE in which you place a copy of your notice statement you modified above and a listing of the names of licensed libraries used in your project (be sure to list the names of the developers of those projects as well -- show your appreciation).

5. If use other code in your project that is licensed under a different license, I must make sure those libraries are compatible with the Apache 2.0 License.  For example, GPL version 2.0 is not compatible with the Apache 2.0 license. Also, you must leave any original copyright and patent notices in the code you redistribute.  It is important that you preserve this notifications and you must explicitly sate if you made changes to that file.

Presto! You're done!  The depending on the size of the project, adding the notice statement to each file will take you the most time.  I'd recommend against using a SVN keyword or other placeholder to dynamically insert the notice statement at build time because your notice would not be present when browsing code through a source code repository (such as SVN or CVS).

Internet Explorer 9 Wish List



According to Neowin's Tom Warren and Cnet News's Ina Fried, Microsoft will have something -- maybe just a little something, but something -- to say about its plans for Internet Explorer 9 at its Professional Developers' Conference in Los Angeles today. The company often briefs tech reporters in advance about major announcements, but it hasn't told me a darn thing about IE9. So I'm just as curious as anyone else to know what the upgrade is going to involve.


And for the next few hours, at least, I'm free to ponder the features that would get me excited about a new browser from Microsoft . . .




It's not like I'm terribly excited for IE9 to come out, because in corporate environments we have to support IE6, IE7, IE8 and IE9. I hope IE6 dies a quick death. However, the author of the post above does cite some items that would make -- at least for me -- IE9 less of bother as technologist (although it gives me no excitement in the end).


However I found one statement from a comment by user "obviocapitao" to be interesting:



The problem for Microsoft is that the world changed, and didn't wait for them.



I can't help but think there is a little bit of truth in that applied to the CFML world due to the introduction of the open source CFML engines. When the world changes, so do all of the rules which means the status quo no longer applies.


I'm all for heads down, get it done and live in your own world. However, every once in a while it's important to look up, break the surface of the water and grab a breath to reorient yourself. Software development of projects used by many and not just yourself is a tricky business of balance. I just think how the world looks to Microsoft and how the world looks to me are completely different.


Sunday, November 15, 2009

CFML Documentation core to Open BlueDragon


The journey has started. Let me present the official resource for CFML documentation for Open BlueDragon:



OpenBD CFML Documentation



Key features:



  • JavaDoc like interface

  • Produced from the raw Java code; no external XML/wiki/sites to keep in sync

  • Hot links to any particular function (CreateDateTime)

  • See other functions/tags that fall in that category

  • Quickly discover which parameters/attributes are optional

  • Real look-ahead search

  • See all functions/tags with their parameters/attributes

  • Hot links to the OpenBD WIKI

  • User contributed comments (Moderated)



We haven't finished annotating all the functions/methods yet, but even without that, you will find this an incredibly useful resource. I have even rediscovered functions I had completely forgotton existed!



In addition, the CFML app we developed for this, is already being bundled in the nightly build in the web-app folder. So you can even run your own internal documentation, complete with your own private notes.



We are annotating functions and tags as and when we get time, and already 80% of all the functions have been completed. For me, this is 10 years too late, for that I apologise. But we are here now. Never again will the documentation not match the implementation.




This is great -- not that it's just available via the web, but it comes bundled with the engine so it is available locally. Sometimes it's hard to get documentation on something if you're not currently tethered to the internet at the moment.

I've always thought it was strange that documentation in the CFML engine world is an "after" process. This approach is prone to error either from exemption (forgotten notes) or too much time elapsed. Unless you're a code maverick and dig around the CFML engine source code, documentation is the only way for people to understand new features and actually use them. Only after they are used do people find ways to improve them.

I hope to blog more in the future about open source, licensing and the world of CFML open source which I believe is currently in a positive flux. So check back often or subscribe to my RSS feed.