May 12, 2012 · By Sean Corfield · No Comments
I'll be at cf.Objective() this coming week, manning the Railo booth - we're Gold sponsors again! - and, for once, not speaking! However, if you want to learn more about Clojure, especially how we're using it at World Singles integrated into CFML, feel free to track me down and ask me about it.
[Read more →]
Tags:
clojure · coldfusion
May 08, 2012 · By Sean Corfield · 1 Comment
Your application is live but it isn't quite behaving the way you
expect - what do you do?
[Read more →]
Tags:
clojure · coldfusion
April 17, 2012 · By Sean Corfield · No Comments
With Clojure 1.4.0 available and Leiningen 2 in preview, I felt it was time to update FW/1 and the FW/1 template to have updated dependencies.
FW/1 now uses Clojure 1.4.0, Ring 1.0.2 and Enlive 1.0.0. The FW/1 template has been updated and verified for use with Leiningen 2 (as well as Leiningen 1.x).
Both FW/1 and the FW/1 template are now at version 0.1.0 and available from Clojars. See the README on the respective Github repos for more details.
Tags:
clojure · fw1
April 15, 2012 · By Sean Corfield · No Comments
A very small maintenance release: thrown exceptions are automatically unwrapped so you should no longer need to catch a RuntimeException when you're trying to catch a SQLException!
Tags:
clojure
April 15, 2012 · By Sean Corfield · No Comments
Clojure 1.4.0 has been released and it includes several nice enhancements and some bug fixes. Everyone will have their favorites but mine include (in no particular order):
- mapv and filterv (which return vectors) and reduce-kv (can treat a vector as a collection of indexed pairs)
- require can take :refer and a list of symbols - or :all - so you no longer need to blanket 'use' a namespace
- *compiler-options* so you can disable locals clearing to improve the debugging experience
- = on char arguments, removing the reflection warning and improving performance
- wrapping exceptions in RuntimeException no longer happens so you can catch the underlying exception more easily
- syntactically broken tests using clojure.test/are no longer silently pass - this bit me with a patch submitted to CongoMongo!
So, yes, it's a small release (I didn't mention the new reader literals - I'm not ready to use those yet but I'm sure some people will find them very useful). Planning for 1.5.0 has already started. This is all part of the plan to have more frequent, digestible releases of Clojure - now that the big breakage of the 1.2 => 1.3 transition is out of the way (changes to numerics; changes to contrib).
Hopefully, you were already testing your code against 1.4.0 builds? Now you can update your "lein multi" tests (or lein2 profiles) to test against 1.4.0 final and 1.5.0-master-SNAPSHOT!
clj-time and congomongo have both been updated to test against 1.2.1, 1.3.0, 1.4.0 and 1.5.0-master-SNAPSHOT. The next release of clj-time will be 0.4.0 since its main dependency has changed from 1.2.1 to 1.3.0 now.
Tags:
clojure
April 10, 2012 · By Sean Corfield · No Comments
Yesterday I posted that we're looking for a back end / data-centric developer, today we've posted a new req for a front end developer!
As before: World Singles is looking for a smart, motivated developer to join our small, fully distributed team of engineers, working on our multi-lingual, multi-tenant Internet dating platform.
This new job "involves a focus on UI/UX design, with the ability to realize it in HTML, CSS and Javascript. Design would need to be integrated in the CFML front end. The applicant will be required to design and implement front-end UIs within an existing ColdFusion application, as well as optimize them for maximum performance across different browsers and platforms."
For more details, and to apply, see our Craig's List post: http://bit.ly/worldsinglesuijob
Tags:
coldfusion
April 09, 2012 · By Sean Corfield · No Comments
World Singles is looking for a smart, motivated developer to join our small, fully distributed team of engineers, working on our multi-lingual, multi-tenant Internet dating platform. We're after someone with strong data management skills who can help us mine and analyze data in both MySQL and MongoDB, as well as help us leverage both more effectively. For more details: http://bit.ly/worldsinglesjob
The World Singles code base is a blend of CFML and Clojure - this role would be mainly on the Clojure side of the house but the primary skills needed are MySQL / MongoDB.
Tags:
clojure · coldbox · coldfusion · mongodb · programming
March 26, 2012 · By Sean Corfield · 4 Comments
When I wrote my summary of the conference, I forgot something very important: you can download nearly all of the Clojure/West 2012 presentations from github. Some of the files are quite large so you may not be able to simply view the raw PDF on github - you will probably have to clone the repo locally.
Tags:
clojure
March 23, 2012 · By Sean Corfield · 1 Comment
My team recently attended the
first Clojure/West conference
in San Jose, organized by Alex Miller, the man behind the incredible
Strange Loop conference.
Back in November, I attended the
second Clojure/conj
conference (my first) with one of my team, who took the three
day Clojure training course. The training course was a bit of a
firehose and during one of the conference sessions, my colleague
asked me whether he was supposed to understand these (mostly very advanced)
talks. The conj is an inspiring event: a single track of sessions
that cover the leading edge of work in the Clojure community,
philosophical deep dives, technical exploration, possible future
directions.
Clojure/West, by contrast, had three tracks which focused on
production usage, core language / library concepts and some left
field stuff respectively. This was where the rubber met the road. My
colleagues and I greatly enjoyed the sessions and learned a lot from
them. All three of us attended a session on Friday morning
that introduced
the Clojure
Koans and that got us hooked. Between the Koans
and 4clojure there are plenty
of puzzles that you can use to learn Clojure. Phil Hagelberg ran a
90 minute swarm coding session on Saturday - and the Overtone guys
organized a hackfest on Friday evening. Lots of opportunities for
hands on Clojure coding with other eager developers.
Rich Hickey explained Datomic (I haven't gotten my head around it
yet). Craig Andera provided an excellent grounding on namespaces,
symbols and the whole "var" concept. BG gave an excellent overview
of "deftype" and associated concepts. Friday afternoon saw three
consecutive sessions on testing (load testing, generative testing
and continuous testing) which I enjoyed - and took a lot of notes.
We're already putting changes into effect at World Singles based on
those sessions! Carin Meier took us down the rabbit hole to see if
Alice could figure out what a monad is all about (when the videos of
the talks become available, you have to see this one!). Richard
Gabriel closed out Friday's sessions with a philosophical look at
when engineering and (computer) science started to walk along
separate paths (I loved this talk but I don't think it was
everybody's cup of tea).
Bradford Cross kicked off Saturday with a tale of high performance
Clojure. Allen Rohner told us how painful it was to mix JRuby and
Clojure (I was particularly interested because of our work at World
Singles integrating Clojure into another dynamic scripting language
on the JVM - CFML, using Railo). Colin Jones gave a
thought-provoking analysis of how to apply OO's "SOLID" principles
to Clojure / functional programming. After lunch I talked briefly
about how World Singles is using Clojure (and why it helps us), then
I took a break to discuss libraries, tooling and community in the
hallway. Those hallway discussions lasted longer than I expected so
I only caught the last session of the conference: Stuart Halloway
shared his experiences creating straightforward solutions to large
scale problems - in the context of developing Datomic, taking a
data-centric approach has lead to clear, simple designs.
And that was just the sessions that I attended. My colleagues
attended some of the same sessions and several other sessions. They
were equally positive about the sessions they attended. The
conference proved to be great value for all of us, learning as
beginners and intermediate developers. My takeaway from the
conference is that the Clojure ecosystem is expanding, the community
is growing and lots of people are successfully tackling a wide
variety of real world problems with Clojure. And that's great news!
The highlight of the conference for me was absolutely Carin Meier's
talk on monads (and writing desks). Hugely entertaining and
creative, as well as educational, she took a really gnarly topic and
made it engaging and fun. I think I might finally understand monads!
Tags:
clojure
March 22, 2012 · By Sean Corfield · No Comments
I've attended every cf.Objective() since the first one in 2006.
That
first cf.Objective()
was awesome! Every one since has also been awesome. Since the
demise of CFUnited, cf.Objective() is the biggest CFML event on the
calendar. It offers the best CFML content in the world - and these
days it offers a lot more than CFML - and it offers a unique
combination of well-known speakers and new voices, something the
conference has always prided itself on.
So why should you attend this particular year? Every year, our
world of web development moves forward at what sometimes may seem
like an ever-increasing pace. This is reflected in the sessions
every year at cf.Objective(). This year sees an increased focus on
JavaScript with topics covering Node.js, Angular, jQuery Mobile,
Bootstrap, performance and testing. Even in the CFML topics, we're
seeing an increased focus on automation, performance and testing as
our community grows. cf.Objective() has always tried to offer
material for intermediate and advanced developers and this year we
have sessions on concurrency, collaborative code review, A/B
testing, advanced scalability and caching techniques. Another big
plus this year is the return of Adobe as platinum sponsor with
several sessions talking about "Zeus" - ColdFusion 10 - which is
currently in public beta.
cf.Objective() is all about helping you "up your game", to become a
better developer. That's why you should attend - to become a better
developer, to learn about new techniques and new technology.
This year we have ColdFusion 10 and Railo 4 and a lot of CFML
developers working across multiple technologies. cf.Objective() will
cover all of that so, if you aren't already registered, head over to
the cf.Objective() website
and get yourself signed up - it'll do you, and your career, a power
of good!
Tags:
cfobjective · coldfusion