Justin Carter's madfellas.com

New site launched for FarCry Core 7.0 release

This past week we released FarCry Core 7.0 - the super sweet CFML framework - and launched a nice new site to celebrate! 

There's also some new FarCry Community Forums running Discourse in a Docker container on DigitalOcean. If you haven't had a look at FarCry Core in a while I'd recommend giving it a try, it's really shaping up nicely :)




Migrated to DigitalOcean. Fast, SSD Cloud Servers!

I'm now up and running with a shiny new Ubuntu "droplet" on DigitalOcean :)

Who? What? Why?

For the last several years I've been running my blog and a couple of other sites from a cheap, reasonable VM host who have generally met my expectations, minus a security scare or two. In January I started playing with DigitalOcean and was immediately impressed but not quite ready to make the switch. My blog has had some downtime in the last few weeks so I figured it was time.

I have to say DigitalOcean is fantastic. From sign-up to creating your first "droplet" to logging onto the console literally takes no more than a few minutes. After few apt-get installs, a couple of git pulls, a MySQL import, a Railo installer and an ngingx config later, here we are! My first impressions are that my blog - which runs on FarCry Core 7.0 - is somewhere between 3-5 times faster than it was on the previous host. Startup times are fast, page processing is fast (sub-10 milliseconds, without template or webskin caching!), and CPU responsiveness seems to be consistently fast as well, all on the $5/month droplet size. 

The Setup, the Stack 

DigitalOcean have loads of Community tutorials that make it very easy to get up and running, and it's also a good sanity check to see if you've got everything covered in your configuration practices. First step is obviously to create your droplet and choose the hardware specs and OS that you're going to use. I went with a 512MB RAM 20GB SSD droplet running Ubuntu 14.04 LTS.


My setup isn't too complex and, with the exception of SFTP, these are all things that I've done many times before in development environments (or their equivalents on production Windows servers), but I did check on a few tutorials just in case. Here are some that I found useful:

The final stack running on my droplet is:

  • Ubuntu 14.04 LTS
  • MySQL 5.5
  • Railo 4.1 on Tomcat 7
  • nginx 1.6
  • FarCry Core 7.0

There are other bits and pieces like Varnish that I'd like to have in an ultimate FarCry Core + Railo droplet template, but I think that's work for another day and deserves its own series of blog entries!

Try the Referral Program

If you want to give DigitalOcean a try and see for yourself, please follow my referral link below. If you sign up and spend $10 then I'll also get a $10 credit :) I've never been big on wishlists or donation buttons, but these guys have a great service that I'm happy to recommend and a little credit to run my blog would be nice!


https://www.digitalocean.com/?refcode=4734c06bf105

 

The new Dashboard for FarCry 7

The FarCry Core webtop has had a huge makeover in recent months. One of the new features we've added is a configurable, extendable Dashboard for the webtop home page.

When Ghost was announced last year there was a lot of hype and controversy surrounding the dashboard and it's availability; it was beautifully designed, but was it useful or neccessary? For FarCry we think dashboards are useful but they need to contain a mix of statistics and activity feeds - the useful stuff that a user really wants to know when they are about to start work.


FarCry 7 Dashboard 

Out of the box we ship a few simple dashboard cards as examples but the main idea is that developers can create dashboard cards that are tailored to their products, plugins or projects. For example the FarCry CMS plugin ships with dashboard cards that shows embargoed news and recently receieved user feedback. For custom applications the possibilities are endless; new user registrations, comments to be moderated, integrated analytics, newsletter signups, this weeks sales figures, etc.

FarCry Core 7.0 is shaping up to be a great release so keep your eye out for more news in the coming weeks :) 

90 Days of GitHub Commits

Yesterday marked 90 consecutive days of commits for my GitHub account. That's not just 90 days "at work"; it also includes weekends, nights on most normal work days that I don't have time to contribute to publicly available code, and the Xmas / New Year period. Was it hard work, or is this even much of an achievment? Yes and No...

In the past 3 months I think the biggest thing I've learnt is that every contribution counts, not towards a "high score" but towards making better software. Sometimes the most useful contributions you can make to open source software are done in 10 minute bursts; a small fix here, improve code readability or maintainability there, a small flourish or a bit of spit and polish. Each little piece of code adds up, and firing off that commit gives you enjoyment when you realise that some software is now just a little bit better than it was before. 




Open source software, distributed version control systems, GitHub, and the concept of social coding has a large part to play here. GitHub makes it very easy to see and follow the activity on a project repository and follow other developer's favourite repositories and commit activity. If you want to contribute a fix to an open source project then GitHub's Pull Requests are a relatively frictionless way to make your code available for merging.

On a personal level for a developer, it allows you to see your own progress on the things you've been working on in tangible terms and with an easily reviewable history. "When did I fix that again? Did I even fix that? Oh cool, yeah I can see I fixed bug X last week, and new feature Y was implemented 3 days ago". If you don't use any kind of source control you're really missing out on great features that let you better understand your software.

The bulk of the coding I've been doing has been on FarCry Core as we prepare for the release of version 7.0. We started this work on 19th February 2013 and although there were a few quiet months we really started to ramp up during the last half of the year.

To keep momentum with contributions was tricky to begin with. Initially we had a full redesign of the FarCry webtop to deal with and it's sometimes difficult to want to push your changes before you're "finished". The change in thinking for me was to commit to finishing a small piece of work each day because even if it's something that seems trivial it's still a task that needs to be done. Break everything up into smaller parts, keep a priority list of your tasks that is reviewed and reorganised often (I'm a fan of Kanban, but you can do the same thing with a simple todo list in a text file!), and choose a task that you think you can complete in the chunk of time available to you.

Of course I used a few tricks along the way to "90 days of GitHub" :) In Australia our timezone offset means that a GitHub "day" ended at around 6-7pm and this gave me the opportunity to get some commits in just before and just after that time to ensure that I had produced something during each 24-hour period, particularly when I knew that the following day I wouldn't be around a PC to get anything done. On the odd occassion I also waited till the following day to publish some code that I had written earlier, again because I knew I might not be able to get anything done the next day. In the end I found that thinking in small achievements was a driver of momentum, and after the first 30 days I actually found it difficult not to contribute something each day because the momentum had become a natural part of my development practises.

FarCry Core is one of the longest standing, commercially supported, open source frameworks in the CFML sphere, and so it's really exciting to work on a product that is now looking better and performing better than ever. I'm not sure if I'll make it to 120 days or even 100 days of contributions but it's been a fun ride so far!

Redesigning the FarCry 7 Login Page

The login page in the upcoming release of FarCry Core 7 has had a similar redesign treatment to the overall webtop redesign. In addition to adding a custom webtop logo you can also upload a background image for the login page which makes it easier to customise out of the box. The login page will also still work with our existing User Directory plugins such as LDAP, RPX Now and Google OAuth (though with Google OAuth set as the default User Directory you essentially skip the login screen).

This is the default login page for a vanilla installation of FarCry Core with a plain grey background. To customise it, log in to the webtop and browse to Admin -> General Configuration, and upload a Login Background image:

Once your background image has uploaded, log out to see your new masterpiece :)  

Blurry, abstract and textured background images give a nice effect and can still help convey the brand of your application, while adding a little something extra to the often bland login page that goes unappreciated!

Redesigning the FarCry 7 Site Tree

In the upcoming relase of FarCry Core 7 we've rewritten the Site Tree to make it fast, easy to use, and added a nice quick preview feature.

The Site Tree now looks more consistent with the other object admin grids across the webtop but of course feature expanding nodes that are loaded via Ajax, and a simplified context menu that is touch friendly. This is one of the parts of FarCry Core where we've stated to use Backbone.js for some of the more complicated UI elements (the other main one being the new bulk file and image upload UI).

The quick preview button (the "eye" icon next to Edit) is a nice new feature which lets you preview a page in the site tree without leaving the webtop or even opening a new tab. It also supports switching between different screen sizes and makes use of FarCry's native support for device targeted webskins. This means you could preview a page using the mobile templates as opposed to the full desktop version, or if you build one set of webskins that are fully responsive you can see the effects of using different screen widths, or you can mix and match the two techniques.

The quick preview feature will be also be made available to standard object admin grids in other areas of the webtop some time before release.

Special thanks to Mark from TAFE Western for the use of the screenshots in this post :)

Redesigning the FarCry 7 Webtop Header

At Daemonite HQ we've been working away on the upcoming release of FarCry Core 7.0. The long list of goals for FarCry 7 included Cloud and PaaS friendliness, support for CDNs, bulk upload of files and images, queued processing of image crops, startup performance enhancements, better archiving and undeletes, a new site tree with instant previews and device type switching, and a redesigned webtop.

There are a number of features that make the new webtop nicer to work with and nicer to look at, and some features which are subtle but useful.

1. Client / project branding

You can now upload a logo for your project which will display in the top left corner of the header. FarCry of old used a text label for the site title and an optional tag line, but if you happen administer a lot of FarCry sites their respective webtops can begin to look the same, so using a logo to quickly identify a site is a nice touch.

2. Improved navigation

FarCry has always used a tabbed UI in the header and a long list of navigation links on the left hand side, with a drop down toggle to move between subsections. For large applications with many dozens of features it may have taken up to 4 clicks and a little waiting to get to a particular part of the application. The new webtop header in FarCry has familiar tabs at the top with multi-column drop down menus that activate on hover for desktops, meaning you can reach any part of the application in just 2 clicks.

3. Environment indicator

Developers, application testers, producers, content contributors and administrators will often find themselves switching between different operating environments of the same application, i.e. development, staging, production. The thin green bar you see at the top of the screenshot indicates that the application is running in a production environment, and it expands to reveal the environment name and domain / IP address / port number that the application is running on. One nice feature is that if you forget to configure the environment you'll see the red "Unknown" indicator, which is a good trigger for making sure that you're indeed working in the correct environment.

4. Favourites / starred pages

This is just a small feature that is helpful if you have access to a large number of areas of an application but need to access a few key sections quickly or frequently. Simply clicking the star icon will favourite (or unfavourite) the page, and clicking the favourties drop down toggle will show you your current list of favourites for easy navigation.

5. Profile menu and avatars

You can now edit your profile or log out by using the profile menu in the top right corner of the header. A profile avatar can be automatically picked up from your email address using Gravatar or you can upload a profile image when editing your profile. This is just a small touch but helps to make the webtop a bit more personal.

And... we're back! BlogCFC to FarCry migration

I've just finished a quick conversion from BlogCFC to a brand spanking, bleeding edge revision of the upcoming FarCry Core 7.0, along with a move of all previous comments to Disqus. I'll be releasing the FarCry Blog plugin including the BlogCFC data / comments migration tools in the near future. For now however, enjoy this tasty screenshot which gives a small teaser of the brand new Webtop in FarCry 7 :)

FarCry Core 6.1 Express: Ready to run

farcry-usb

FarCry Express is a "ready to run" installation of the latest FarCry 6.1 code base and the brand spanking new Fandango theme. So now you have no excuse for not checking out the latest FarCry code base!

http://org.farcrycore.s3.amazonaws.com/express/farcry-express-111125.zip

Express is not a production ready environment, but its a lot of fun to get a handle on the FarCry caper, run a few tests, do some training or just toy with an idea.  The install runs a Railo Express instance from the folder -- everything is contained in the one little directory branch. To uninstall or start a-fresh, just delete the folder and you're done. It even works on a USB!


This is a cross-post from the official FarCry Core Team blog.

Sublime Text 2 key bindings for CFML Developers

One of the first things I did when I started using Sumblime Text 2 was to set up some key bindings to emulate functionality that I was used to using in CFEclipse / CFBuilder 1. These were the usual keyboard shortcuts for inserting or wrapping selections in code like CFDUMP, CFOUTPUT, hashes, comments, etc.

To set up your own user key bindings, choose Preferences -> Key bindings - User from the menu. The configuration is an array of JSON objects, so remember to put your comma's in the right places :)

Here's my current ColdFusion / CFML related key bindings which you might find useful.

 

[
// cf tags
//
	// cfabort
	{ "keys": ["ctrl+shift+a"], "command": "insert_snippet", "args": {"contents": "<cfabort>" } },
	// cfdump
	{ "keys": ["ctrl+shift+d"], "command": "insert_snippet", "args": {"contents": "<cfdump var="#${0:$SELECTION}#">" } },
	// cfoutput
	{ "keys": ["ctrl+shift+o"], "command": "insert_snippet", "args": {"contents": "<cfoutput>${0:$SELECTION}</cfoutput>" } },
// wrappers
//
	// hash
	{ "keys": ["ctrl+shift+h"], "command": "insert_snippet", "args": {"contents": "#${0:$SELECTION}#" } },
	// single line comment
	{ "keys": ["ctrl+shift+m"], "command": "insert_snippet", "args": {"contents": "<!--- ${0:$SELECTION} --->" }, "context": 
		[
			{ "key": "text", "operator": "not_regex_contains", "operand": "
" }
		]
	},
	// multi line comment
	{ "keys": ["ctrl+shift+m"], "command": "insert_snippet", "args": {"contents": "<!--- 
${0:$SELECTION} --->
" }, "context": 
		[
			{ "key": "text", "operator": "regex_contains", "operand": "
" }
		]
	},
// remap sublime text defaults
//
	{ "keys": ["ctrl+alt+d"], "command": "duplicate_line" },
	{ "keys": ["ctrl+alt+m"], "command": "expand_selection", "args": {"to": "brackets"} }
]