Speaking at dev.Objective()

I’m very pleased to announce that I’ve been selected to speak at dev.Objective(), which is coming up in Minneapolis (more specifically Bloomington), MN on May 12-15. (And yes, if the conference name seems vaguely familiar this is the evolution of the former cf.Objective() conference.)

My session is Naked and Afraid: Mobile Offline Access to Emergency Data, in which I’ll be discussing how to build cross-platform mobile apps that sync and cache data so you can have access to it even if the Internet and mobile networks are down.

Since I quit doing CFML/ColdFusion several years ago and moved over to Python I stopped speaking at and attending cf.Objective(), but it’s a fantastic conference so I’m excited to be making my way back. It’s going to be really great to reconnect with a lot of people I haven’t seen in quite a while.

If you’re a web developer looking for a great conference with a lot of great sessions presented by world-class speakers this is it! Hope to see you there.

Prerequisites for CFML on Tomcat Deep Dive at cf.Objective()

I just added the prerequisites for the Tomcat Deep Dive I’m doing at cf.Objective() this year to the session description page, but figured I’d summarize here as well in case people don’t notice it over there.

This is designed as a “bring your own laptop” session and we’ll actually be installing and configuring Tomcat, multiple CFML engines, and web server connectivity in the session, but it would be VERY helpful if you grab all the downloads ahead of time since the wireless can be sketchy at conferences. Also some of the downloads are large and that will not only eat up bandwidth but many hotels cut off downloads after they hit a certain size.

So here’s the short list:

  • Java. Not just the stuff that ships with ColdFusion if you already have that installed, but a plain old JDK. (Don’t worry, it won’t conflict with anything ColdFusion-specific you already have installed.) Java 7 should work but to be safe grab the latest Java 6 (which at the moment is 1.6.0_32).
  • Apache Tomcat version 7. Grab the .tar.gz for GNU/Linux or OS X, or the appropriate .zip for Windows. I’d say don’t grab the service installer for Windows for these purposes, but if you want to install Tomcat as a service on your machine that’s fine too.
  • OpenBD. Grab the “J2EE Standard WAR” (any version)
  • Railo. Grab the “Railo Custom – WAR Archive” (any version)
  • ColdFusion. Anything version 8 or above will work (probably even older versions), including the CF 10 Beta, but main point here is you need the actual ColdFusion installer. So if you have ColdFusion installed on your machine already and don’t have the installer, that won’t work. To use ColdFusion in this context you’ll be running the installer and generating a WAR file (and feel free to generate the WAR file ahead of time if you already know how to do this).
  • Apache Web Server, or if you’re on Windows with IIS 7 we’ll go over that as well. I won’t be discussing IIS 6, both because it’s horrendously more painful than 7 and also because it’s ancient. Note that Apache runs on any platform so even if you’re on Windows, or if you’re on Windows with IIS 6, grab Apache.
Hope to see you there! It’s going to be a lot of fun. Well, geek fun anyway.

cf.Objective() NoSQL BOF

Heads up that on Friday night of cf.Objective() I'll be facilitating a BOF on using NoSQL databases with CFML, so if you're interested in things like CouchDB (my favorite thing on the planet as of late), MongoDB, or any of the numerous others please come to the BOF!

All skill levels are welcome so come to learn, come to share what you've done, or come to mock crazy people like myself who think the relational model is the biggest hoax ever perpetrated on the technology world and that we should have been using document-based datastores all along. Yes, that statement is meant to incite you to come to the BOF if you think I'm wrong, but I do believe it to a certain extent. 😉

When I say I'll be facilitating a BOF I mean just that–BOFs are meant to be highly participatory, free-form discussion forums, so while I'm happy to show off what I know about CouchDB, I'd personally love to learn more about some of the other NoSQL databases from people using those, and would love to have some heated discussions about NoSQL in general.

See you Friday night at 8 pm!

Prerequisites For My cf.Objective() Presentation on Tomcat

Quick note to anyone planning to attend my “Running Multiple CFML Engines on Apache Tomcat” talk at cf.Objective() — even though this is only a one-hour session, with just a bit of prep work you can easily turn this into a hands-on session since I only have a few slides and it will be mostly demo. You don’t have to follow along to get a ton of great info from this session, but if you want to follow along please grab the following ahead of time:

Some additional notes:

  • You do NOT need to install Tomcat ahead of time
  • You SHOULD install Apache ahead of time
  • If you want to use Adobe CF as one of your engines, you’ll want to run the installer ahead of time and for the installation type choose “generate a WAR file” and have that available on your laptop. Note that even if you have Adobe CF installed on your machine already, you can run the installer again and generate a WAR file without affecting your existing installation.
  • For Open BlueDragon and Railo, grab the WAR files and have those handy
  • Your operating system doesn’t matter–all the Tomcat stuff is pure Java, so whether you’re on GNU/Linux, Windows, or Mac it’s all good.

If you have questions/concerns ahead of time please comment here or email me. See you at cf.Objective()!

My CFFree Session Presentations From BFusion

Yesterday I had the great opportunity to spend an entire day covering the free software CFML engines at BFusion in Bloomington, IN, assisted by Adam Haskell (thanks Adam!). It was fantastic to be able to do a deep dive into building and deploying CFML applications on a free software stack, and I got a lot of good feedback from the attendees.

If you couldn’t attend and are interested, the Ubuntu VM we used in the course is available on Dropbox (3.8GB).

Here are the presentation slides on Google Docs–make sure to go down to “Action” at the bottom of the screen and select “Show Speaker Notes” because otherwise the slides don’t make a lot of sense. 😉
  • Session 1
    • Introduction to Free Software and Open Source
    • Introduction to Free CFML Engines
  • Session 2
    • Installing Open BlueDragon and Railo
    • Configuring Apache and Tomcat
  • Session 3
    • Exploring OpenBD and Railo
    • Enhancements in OpenBD and Railo
    • Deploying Applications
  • Session 4
    • Using the OpenBD Debugger
    • Extending OpenBD and Railo
    • Monitoring Your Applications With VisualVM and Lambda Probe
    • CFML on Google App Engine

Thanks to the attendees for participating in what I hope was a useful and informative session. Whether or not you were at BFusion, feel free to email me with any questions you have about anything related to free/open source CFML.

Get Your Hands Dirty at BFusion/BFlex

BFusion/BFlex is coming up on September 11 and 12, 2010 in lovely Bloomington, IN. You need to be there, and here’s why.

  • $30 for one day or $45 for both days is one of the best deals you’ll find in the conference world. (No, I’m not missing a zero at the end of those prices!)
  • BFusion/BFlex is all hands on, all the time. This isn’t a passive event by any stretch. You come armed with your laptop and you get to learn from the best people in the business.
  • Multiple all-day classes in both CFML and Flex are available. On the CFML side you can learn Mach-II from the great minds behind it (namely Peter Farrell and Kurt Wiersma), you can learn CFML from scratch from the great Adobe instructor Matt Boles, if you’re a programmer already but want to learn CFML you have none other than Simon Free at your disposal, and if you’re an open source junkie like me or just want to learn more about the free CFML engines, I’m giving an all-day in-depth class on that.
  • Great for all skill levels, from pure beginner up to advanced developers. There’s literally something here for everyone so you don’t have an excuse not to come. Just check the BFusion and BFlex schedules and tell me you don’t see something interesting!
  • It’s a nice intimate environment where you can corner speakers or other attendees and get whatever help you need.
  • Indiana University is a great venue with great facilities. Power and Internet for all!
  • Bloomington is a great town with tons to do.

I’ve been invovled with BFlex/BFusion since the first year and it’s one of my favorite conferences. I’m particularly excited this year to be able to help people delve into the open source CFML engines, so I hope to see lots of you there.

Great training, great price, great location, and great people. What are you waiting for? GO REGISTER NOW!

My CFFree Presentation from Dallas TechFest

Dallas TechFest was last Friday and although I was sad to be missing the final CFUnited, TechFest was a blast. It was incredibly refreshing to see 400+ CFML, PHP, .NET, Java, and Flex people all in the same place at the same time for some geek cross-pollination. This doesn’t happen nearly enough so thanks to all the organizers of the event, all the great speakers, and to Dave Shuck for inviting me to speak.

The talk I gave was entitled “CFFree: Building and Deploying CFML Applications on a Free Software Stack.” This was a 90-minute introduction to developing, deploying, testing, and monitoring CFML applications using Tomcat, Open BlueDragon, Railo, and a plethora of other free software applications and tools.

If you didn’t make Dallas TechFest this year and are interested in this topic you’re in luck! I gave everyone who attended my session a VirtualBox VM that has all the free CFML goodness installed on Ubuntu 10.04, and you can download the VM from my Dropbox (2.5 GB).

You can also view the presentation directly in Google Docs; just make sure to click “Actions” at the bottom then “Show Speaker Notes” to view the speaker notes since the slides alone don’t tell you all that much.

As always if you grab the VM or read through the presentation and have any questions about any of this feel free to contact me. I’m considering doing a couple of screencasts on this topic because due to time constraints I had to breeze over some of the configuration details, not to mention some of the free software goodness I didn’t get to show at all.

If you want to learn more about free CFML in person, next up on the calendar is a full day hands-on session that Adam Haskell and I will be doing at BFusion in September, and then of course three full days at OpenCF Summit in February 2011. Hope to see you at one or both of these events!

Attend Dallas TechFest for only $25!

Dallas TechFest is a great multi-technology event that’s coming up on 7/30. There are tracks on Java, Flex, PHP, .NET, and most importantly CFML, so it’s not only a great place to get your CFML fix, but also to engage in some all-too-rare cross-pollination between technologies. (The tech community doesn’t do nearly enough of this sort of thing in my opinion.)

The CFML track doesn’t have details on the track page unfortunately, but when you check out the speakers page you’ll see the following great CFML speakers:

I don’t know what the specific topics for some of the speakers are, but I can tell you that I’ll be speaking on Building and Deploying CFML on a Free Software Stack, Jeff Lucido is speaking on Open BlueDragon for Google App Engine, and I’m pretty sure Steve Good is speaking on Mura. With this lineup I’m sure all of the CFML topics will be great!

UPDATE: Steve pointed out in the comments a big oversight on my part–you can check the Agenda page to see all the details of all the tracks.

There are also some big names from other technologies at TechFest as well, such asScott Davis (Grails guru extraordinaire), Ted Neward (.NET developer and consultant), Mark Piller (Midnight Coders), and Craig Walls (SpringSource) to name but a few.

Sounds excellent, right? Well, today’s your lucky day. If you haven’t registered yet there’s still time, and there’s a big discount to boot! Register now and use the discount code coldfusion to get in for only $25. That’s right, a mere $25 for all this geeky goodness.

See you there!

Open Source Bridge – The Story of Spaz: How to Give Away Everything, Make No Money, and Still Win

Edward Finkler http://getspaz.com @funkatron http://funkatron.com

  • non-technical talk–“why I do what I do”

    • learned how I define what success and happiness are

  • Spaz is a personal project — about 3 years old

    • twitter client — “your special twitter friend”

      • based on original logo people thought he was making fun of mentally retarded people
      • actually is a picture of clay aiken from early american idol

  • Early 2007

    • work started on Spaz
    • had done a couple of open source PHP libraries in the past
    • had only done open source for other developers, not for end users
    • started work in RealBasic on Mac

      • also the author of LameBrain, wrapper for LAME

    • started getting interested in twitter API
    • not many other Mac clients for twitter at the time
    • article written up in ars technica about it
    • pownce came along about the same time

      • came out with desktop client, written in apollo (now AIR)

    • RealBasic wasn’t set up to make it easy to make it look non-standard or skin things
    • silverlight was also being released about this time, also Java FX
    • particularly interesting aspect of AIR was that you could make apps in HTML/CSS/JS in addition to Flash

      • looked at using Flex, but not a fan of monotheistic technology
      • Flex community is a lot like the MS development community–one official source of information, not a lot of community sharing going on

        • quite a contrast with something like PHP where everyone shares in a bunch of different ways

      • didn’t like having to go through the official channels to try and figure things out

        • really hard to simply search for things on the internet and find examples with Flex

    • twitter was really flaky at this point–had to write the code very defensively
    • learned a ton by digging into this–crash course in javascript
    • driven because he was interested in it and enjoyed working on it

      • “I liked what it did, and I used it”

  • November 2007

    • Adobe had AIR Developer Derby in mid-2007

      • submitted Spaz on a whim
      • got a call in October 2007 from Adobe saying he won

        • got to go to Adobe MAX conference, lots of PR around it

    • Adobe didn’t give a rat’s ass that it was open source

      • they liked it because it was pretty
      • only got about 5 submissions on the HTML side of things

    • was at the AIR booth–people asking tons of questions that frankly Adobe should have been answering

      • turned into evangelist of sorts

    • cool that Spaz got known in the wider world

  • 2008-2009

    • started to get emails criticizing the name–“why do you hate the disabled?”

      • happened quite a bit

    • tons of twitter clients released in 2008

      • lots of them written in AIR
      • a few clients were a lot better with marketing themselves — biggest example is TweetDeck

        • people spending full-time on it, went after venture capital, etc.
        • cool if you want a twitter client that fills your whole screen, but wasn’t what he wanted to do

    • seeing success of tweetdeck was hard

    • the thing I like about open source is creating something and getting ideas from people, hearing about how they’re using the product, etc.
    • lots of end users were saying stupid things like “Spaz sucks”

      • big disconnect–creating products for end users is pretty different from creating developer libraries
      • people were dismissive and mean — made it not fun
      • eventually learned to respond with humor to baseless criticisms

        • helped to not get as upset about things

    • started seeing companies that were hanging off twitter and providing services that twitter doesn’t provide

      • twitter has started to stomp out all the ancillary business around twitter

    • started getting offers from companies around spaz

      • people offering money to add specific services to spaz, e.g. twitpic

    • wanted to continue to provide an open source, transparent twitter client

      • in one case took money as a donation to offset overall development time into spaz
      • wasn’t interesting in doing this in general

    • this underlined a specific way that he wasn’t willing or able to compete with other clients that were out there

      • would sacrifice transparency around the project
      • realized how screwed up and evil tech journalism is–fundamentally wrong

        • actively manipulate how people perceive things, don’t give coverage to things that don’t play their game

    • started to realize he couldn’t compete with other clients because of all the extraneous junk that goes on

  • palm webos — jan 2009 – june 2009

    • got call to see if he was interested in working on apps for the new webos
    • palm wasn’t really known as an open source company
    • said up front he wanted to keep the app open source–palm didn’t object
    • web development as a rule is pretty open, but palm didn’t really have this understanding in their DNA
    • had to sign really strict NDA
    • palm was rushing things out, documentation was terrible
    • went to a developer event at palm–could talk about things, but couldn’t share the code he had written–against the NDA
    • this six months sucked because couldn’t make something and share it with other people
    • palm didn’t tell him another company was also working on a twitter app for webos

      • found out from someone else–no information sharing going on
      • bunch of secret stuff–wasn’t fun

    • didn’t get a development device–emulator ran 3X faster than the actual phone

      • didn’t write specifically to their proprietary platform so it ran slow
      • another twitter app that did write to the proprietary bits ran faster

    • got email from palm asking not to release source code

      • had told them first thing he was going to open source it
      • lot of wtf moments
      • decided he would never work for another company like this under an NDA
      • palm didn’t get the sharing culture–they get it much better now

    • two guys from ajaxian got hired to better interface with the development community

      • immediate changes for the better–hope HP doesn’t screw it up

    • reminded me of lessons i should have learned the first time around
    • friend recommended book — “ignore everybody and 39 other keys to creativity”

      • the thing that you really like doing, if you rely on it for income, it’ll become less enjoyable and it will change how you interact
      • when spaz became something that was being defined by standard definitions of success, the process became less enjoyable
      • had to redefine what success was

  • july 2009

    • spaz statement of purpose

      • can keep going back to this and referencing it to remind himself of why he’s doing what he’s doing

    • spaz was built for the sake of building it. it is not a means to an end. however, creating it has had several good consequences.

      • point of it was to build something and build something good

    • spaz demonstrates that making things is good, and sharing how you make them is better.

      • creative endeavor in and of itself is good
      • sharing is what makes me happy

    • spaz is a necessary counter to closed, hidden technologies. spaz must always be open.

      • source code must always be open and have to be transparent about the intentions of the project
      • important that we have options, even if they aren’t the most popular or defeat other projects

    • the value of spaz does not lie in the judgments of others, but in the process of building it, and the enjoyment derived by those who use it.
    • we welcome anyone who wishes to participate in the spaz project with open arms, as long as they understand and respect the purposes of the project.
    • the spaz project values clear and open communication between participants.
    • having the statement of purpose helped keep things going when it was frustrating

  • 2nd half of 2009

    • not a lot happened
    • worked on getting webos version better
    • started on spazcore to share common things between all the different platforms
    • discovered didn’t have time to try to keep multiple versions going
    • started working on community building

  • diversity statement

    • women are under-represented — 10-15% in IT as a whole, open source it’s more like 2-3%
    • worked with a group called phpwomen
    • largely lifted from python’s diversity statement

  • rest of 2010 — cultivating a community

    • initially was using google code for everything
    • have found that github works better

      • a lot of people use git (particularly js people), more social aspects oriented around git (easier to fork, etc.)
      • potentially attracts more people

    • tenderapp.com and lighthouseapp.com

      • tender oriented towards end-user support — offer free accounts for open source projects
      • lighthouse more oriented towards developer issue tracking, setting milestones, etc. — also have free accounts for open source projects

    • if you only have roadmap, etc. in your head it’s very hard to get people to help you

      • need to break things down into issues of various size
      • schedule people’s time for them in the sense that you give them bite-sized tasks

    • hackathon

      • great way to get more people involved
      • helps to have a schedule
      • done online with irc

    • have someone who’s more or less dedicated to doing community related tasks

iizip – Hacking Together Your Own Dropbox

Ben Dechran, Sputnik Agency (Australia)

  • works for a marketing agency, lots of photoshop files thrown around
  • file server which works great most of the time unless …
    • people forget to put the files on the file server
    • people forget to rename a file before putting it on the file server and delete the old file
    • people don't put a file on the file server and go on vacation
  • dropbox nice solution, but has issues
    • works well for small companies, small groups, unconferences, etc.
  • problem #1 — storage space
    • in our case, needed 3TB of space
  • problem #2 — need internet connection
    • if connection goes down, you have the files but you lose the sync
  • problem #3 — dependent upon third party
    • what if they go down?
  • problem #4 — all or nothing
    • every person replicates everything
    • dropbox supposedly doing selective sync
  • problem #5 — user management
    • users can't be managed by your company's infrastructure
  • problem #6 – big bad world
    • security and privacy
    • it's encrypted, but you're sending data out to someone else's servers
  • other options
    • ifolder – open source project by novell, written in .net
      • tricky to set up
      • slow
      • packaged for windows, mac, opensuse
  • decided to roll my own–needed …
    • local files
    • monitor for changes
    • versioning
    • conflict resolution
    • transparent — install and forget
  • attempted solutions
    • tortoisesvn — people forgot to check in, etc.
    • cron job to push changes to svn
      • some of the changes were hard to detect
      • if someone deletes a directory on their hard drive, deletes the metadata
    • tried git — since it's distributed it solved some of the issues with svn
  • for synchronization
    • inotify, inotifywait — in the linux kernel
    • notify-send — could use this for bubble type notifications in dropbox
  • for conflict resolution
    • grep the git status
  • iizip is the combination of all these various tools
    • currently the project is a bunch of scripts; eventual goal is to have a package that would be deployed/installed on local machines
    • iizip-init — creates git repository and iizip directories
    • the scripts mostly map to the git commands
      • e.g. send checks in locally and also pushes to remote repository
  • someone in the audience suggested looking into using couchdb in similar fashion to how ubuntu one works
  • what's in the pipeline?
    • partial checkout so not everyone has to have every file locally
      • idea of subscribing to specific directories–IMAP already does this
    • push changes from other machines
      • currently there's a cron job that runs on the local machine
      • dropbox immediately pushes changes to all machines
      • considered using xmpp to handle this, but IMAP has persistent connections and also supports directories
    • multi-user
      • currently can't run more than once on the same machine since the directories are hard-coded
  • unix tools philosophy — many small tools linked together to achieve a larger goal
    • also makes it easier to port to other operating systems
  • unison — would in theory do all of this so worth checking out
  • potential issues — git doesn't track empty directories
    • if it's empty you may not care