January 6, 2009

Pages


Search Site


Topics



Archives

Tweets

Entries for month: June 2008

CFUnited: Mark Drew — ColdSpring: Better Living Through Configuration

June 18 2008 by Adam

I'll be updating this post with notes from the presentation as it goes on…

Welcome, all, to Spaghetti Coder's Anonymous. ColdSpring is an IoC framework. (Inversion of Control) aka Dependency Injection Framework. It has a component factory (bean factory) built in.

Without ColdSpring, you need to wire together your dependencies. This causes coupling, which is in theory, a bad practice. When one of your dependencies needs to change, you have to change it in every location it's used. This is less maintainable code. With ColdSpring, you have "separation of concerns." Components don't have to do things that are not related to their function. They don't have to do anything except their own function.

Another benefit is that it's easier to create testing stubs, you can see all of your components and how they relate in once place (xml config).

  • Bean = Component
  • Bean Factory = ColdSpring – holder of the beans
  • Singleton = there is only one
  • Lazy load = only loaded when needed.

Properties and constructor arguments can be more than just simple value and ref bean's. Can also be a list or array, or a structure (map).

A singleton is a bean that only gets created once, and the same instance is passed to anything that requests it; whereas a non-singleton is recreated any time it is requested. Ssingletons are persisted inside the bean factory; so wherever you store your bean factory, you're also storing singletons. (Application scope is generally the default)

Mark also showed how AOP can be used to do some pretty neat stuff with Accessors and Interceptors.

And said something about actually being a woman.

Posted in CFUnited |

CFUnited: Adobe Keynote

June 18 2008 by Adam

This session is over, and I'll come back and update the formatting of this post when time permits.

Ben says that Adobe has a long history of cool announcements at CFUnited; and hopefully this year won't buck the trend. Adam Lehman is helping present technical aspects, while Ben will be talking at a higher level.

CF8 adoption is doing very well. Adobe is strict about discussing numbers, but he admits that CF sales are the best they've been since Adobe took the reigns, possibly ever. Ben says that ColdFusion 8.01 is an important release for library additions, enhancements, and security improvements.

Coming soon: Public bug tracker, public enhancement request system! (I say: about time [or] awesome!)

Adobe has has already begun working on version 9 ("Centaur"): Advancing CFML, Improving Integration, Improving developer experience. (Everyone thinks that this means an official IDE)

The biggest problem facing ColdFusion customers today is the lack of available developers. (how true!) This is good for existing developers (because they can charge more) but bad for (Adobe's) business and the wider CF community, as it will force more companies who are currently using CF to switch away from CF. Adobe doesn't want that to happen, so they are going to be working to spread the reach of CF and lower or remove some of the barriers to getting involved…

…ColdFusion will be freely available for students and faculty for academic use. It will have a similar model to Flex Builder's free license for Education. (Licensee must provide verification of student/education status), and what they get will be the full unrestricted version. The goal is to make CF easily and freely available (for educational purposes), and they hope that it will come with documentation, and a curriculum. Ben jokes that if we have free time due to more developers being available, we can teach CF part time.

"Over the years, CFML has become fragmented and inconsistent." This must mean a sort of language overhaul? Maybe a CFML language steering committee that Open Source engines can be a part of? I was right!

CFML Language Advisory Committee: Will help define the rules and guidelines around the use and evolution of CFML. Will initially consist of Sean Corfield (Lead), Ben Forta (Adobe), Sanjeev Kumar (Adobe), Gert Franz (Railo), Ray Camden (CF Jedi), and Rob Brooks-Bilson

"Centaur" Sneak Peek: The focus is Building A Better ColdFusion. Adam notes that, of course, the lawyers have to get their $0.02 in: What we see here may or may not make it into the final release. Most of it is only conceptual, not an implementation. Language enhancements: Create UDFs and CFC methods (entire CFCs!) using scripting syntax.

  • argument definition and validation
  • roles
  • write full component syntax in cfscript

component name="CF" extends="adobePlatform"{
   public string function welcome(){
      //...
      return "Welcome!";
   }
}

More CFScript enhancements:

  • Explicit LOCAL scope keeps local variables local: No more need to use <cfset var local = StructNew() />!!
  • No need to declare all variables at the top of the function. (And the crowd goes wild!)
  • New CFSetting option to set a default scope for variables!
  • <CFFinally> and <CFContinue> to do improved try-catch processing. Goes after catches, inside try's. CFFinally will always run, CFContinue will work like a continue in C: In the middle of a processing loop, it will skip the rest of the loop and start at the top with the next iteration.
  • They're planning on adding new and import keywords!
  • <cfcomponent init=""> will allow us to define the constructor, which will run automatically? (How does this affect constructor arguments? Can we have multiple constructors?) CF will also look for function named like the component, like a classic C or Java style constructor.
  • Implicit getters and setters for CFProperty settings. The will not override your defined getters and setters.
  • New Server.cfc file: Will work per instance of ColdFusion, and all Application.cfc's will "sort of" inherit from it. It will be useful to pre-load application stuff (ie: Model-Glue framework stuff) as the server loads, and before the first user hits the site… and have it ready for them! Excellent! Adam specifically mentions: OnServerStart() and OnServerEnd()
  • Centaur will make CF AIR integration easy. (Easier?!)
  • LiveCycleDS will make offline/online data sync almost seamless. Not a whole lot of detail was given, but it sounds awesome.
  • Another huge announcement that sends the crowd into a frenzy: ORM will be baked in 100% with Hibernate. The details of this is way over my head at this point, but holy crap it looks awesome! With all of this data being persisted as cfc objects, the idea has come up that so many functions and tags are based on a query object and would need to be modified for this new system. Ben assures us that they'll be working hard to make changes that will abstract this all so that we can continue to use these things just as easily.

Q&A:

Q: Talk more about the free version for education. Flex is available to staff and faculty
A: Wording is still intentionally ambiguous because they're nailing down the details. They want it to be free and available for EDUCATIONAL use. Lower the barrier for teachers to teach CF in the classroom. Also need a curriculum. CF Team plans on (at least helping) develop curriculum.

Q: Will JRun continue to come as part of the CF Stack?
A: Maybe, maybe not. JRun should support everything they need, but they reserve the right to change it. Plan to keep the install as simple as possible.

Q: Will CFScript be able to do everything that CF Tags can do?
A: The visited it in development of CF8 and couldn't do it without half-assing it, so didn't do it at all. Would revisit it if they thought they could accomplish something. UDF wrappers are available for every tag, anyway.

Q: Will version of Hibernate that ships with CF be stuck in, or can we plug and play?
A: They hope it will be interchangeable, but of course, no promises.
(Hopefully they learned their lesson from the whole Ext 1.0 fiasco?)

Q: Will there be an Official IDE?
A: "Come to MAX." (Sounds an awful lot like, "Yes, but I'm not allowed to even answer that until MAX" to me!)

Q: Why are some companies not represented in the CFML committee? (Of course referring to Open Blue Dragon)
A: (Ben is careful with his wording here. Obviously a sore subject.) His brutal honesty: Group is made of people who have demonstrated a committment to the wider CFML community. List can and will grow, but only in the interests of the businesses involved and the community.

Q: Someone asks about pricing for the new version.
A: … (Do we really need to revisit this? Again?!)

Q: Will there be changes to the server administrator, making it easier to administer multiple servers?
A: Adam says, "Yes." Of course they are always looking to improve everything. They are always looking for recommendations, feel free to submit them!

Q: Will the "this" scope be kept?
A: Of course they will not break existing code. It will stay.

Q: Will there be more examples and tutorials on LiveCycle Data Services?
A: Yes, yes, yes!

Q: Will there be official CF Administration training? (I assume something to do with clustering, tuning, etc)
A: Some partners offer it, they are considering adding some official training. No specific plans yet.

Q: Is KTML editor gone?
A: There are some licensing issues that preclude them from doing what they want to with it. Still trying to work that out.

Q: Any plans to allow CFQueryParam outside of CFQuery?
A: See: CFscript problems! One of the biggest problems of CFML in CFScript. They would like to solve this, but of course no official word yet.

Q: Anything new with Share Point integration?
A: Nobody is clear on what exactly is needed. Need more use cases, so if Share Point is important to you, figure out how you would use it, and tell them!

Q: Better support for memcache or other caching capabilities?
A: Yes, actively being researched.

Q: What additional tooling will be available for ColdFusion?
A: Ben says, "That would fall into improving the developer experience. See you at Max."

Q: Will speed and performance improve at leaps and bounds for between versions 8 and 9 like they did between versions 7 and 8?
A: It won't get slower, and they'd always like it to go faster. Adam says the rule of thumb is that if adding something or making a change will cause CF to run slower, they just don't do it. Period.

Q: Is CFML language grammar published?
A: That's a question for the CFML Language Advisory Committee.

Q: iCal and Imap integration?
A: Ben is a big fan. Thinks they are important, and it's on the wish list, but no promises.

Q: Someone requested a custom tag for working with Java Resource Files
A: Noted.

Q: Will it have virtualization-friendly licensing?
A: They plan to keep the current licensing scheme: Licensed by physical CPUs — very friendly to virtualization!

Q: Dynamic PDF Form generation without LiveCycle?
A: Creating forms from scratch is probably doable, but you would lose some of the benefits of PDF in the first place. Need more use cases and more research.

Q: Word document generation? Not RTF.
A: Noted for wishlist.

Q: Staging licensing: shared instance, which you can't do with a developer license; but not used in production so it doesn't need to be as powerful?
A: One way is to use separate virtual machines on the same box; but they are looking at other options.

Q: Multiple filled PDFs into a single merged PDF?
A: Engineering team is looking into this.

Q: Anything new in the roadmap for CFReport?
A: Ben would like to think there is. If there are things you want, please tell them! There are some known issues, but beyond those, submit requests!

Posted in CFUnited |

CFUnited: Teratech Keynote

June 18 2008 by Adam

I'll be updating this post as the keynote goes on, check back for updates… Seems like the theme is improving software quality and coding techniques through the use of simple common practices and tools.

Things like:

  • source control
  • code reviews
  • coding standards
  • frameworks
  • documentation
  • prototyping – specification in a language that users can understand
  • testing tools like CFUnit/CFCUnit
  • and attending conferences like CFUnited!

Closes by asking each of us to think about what we want out of the conference this year.

Popular answers: Free beer, and not having to be at work. ;)

Posted in CFUnited |

Off to CFUnited

June 17 2008 by Adam

If you're reading this, then I've already left for CFUnited. There's no real rhyme or reason to this post; I just wanted to abuse the schedule-post ability and at the same time, rub it in that (if?) I get to go and you don't!

If you're going to be there, I suggest you buy this man a beer. I hear that his hair isn't quite as long any more, but the face doesn't change:

And the darker the drink, the better!

Like J.J. Merrick, I'm going to go ahead and include my schedule for you, too. It's changed since the last time I posted it:

My Revised CFUnited Schedule

Posted in CFUnited |

Computer Science vs. Software Engineering

June 16 2008 by Adam

I was listening to some back-episodes of the Stack Overflow podcast the other day, and they mentioned the difference between Computer Science and Software Engineering (that the latter is more about working on software in a team, how to design together, etc), and the thought occurred to me that if I wanted to get my Masters Degree, maybe that would be something worth pursuing.

I have my Bachelors of Science in Computer Science. I found it to be a wholly worthwhile program, because as much as I already knew about programming, I got so much experience with different types of programming and the fundamentals behind it all — from Turing Machines in Mathematics of Computer Science to writing my own File System in Operating Systems, to writing a very basic game with OpenGL in Computer Graphics. Between all of my other programming classes, I got to play with VB, C, C++, Perl, Awk, Bash shell scripting, and Java. At work I was writing Natural/Adabas/JCL (IBM Mainframe), ColdFusion, and a touch of VB. When I graduated, I really felt like I had tried everything and I was ready to choose my career path.

I'm really glad I chose to pursue a career in ColdFusion. It's been exciting and rewarding, and a lot of fun. My wife and friends think I'm crazy for coming home from work only to want to sit down and write more CF code — but it's like an infectious disease, and one that I like. Every now and then I've thought about going back to school to get my Masters Degree, but I always write it off to the idea that a Masters in Computer Science would be a waste of time: Nobody is looking for them on resume's, and the content seems like it would be a rehash of my undergratuate work.

But the idea that Software Engineering might be something new — and a way for me to become a better developer — has me kind of intrigued. Is there something worthwhile I could get from a graduate program on Software Engineering that I haven't already gotten from eight years of working in "the industry"?

Posted in Meta |