Showing posts with label CFML24h. Show all posts
Showing posts with label CFML24h. Show all posts

Saturday, 16 January 2016

Missing/undecided chapters in this CFML book (and other questions)

G'day:
So with me "abandoning" that CFML book I was writing (Abandonware: "Learn CFML in 24h" notes), I've now got rekindled interest in it. I'm nothing if not contrary.

I've read over what I've done so far and I'm reasonably happy with it as a first draft / general direction sort of thing, but it's also raised some questions.

If you haven't looked, it's currently got these chapter headings (only a few have content: * indicates a first draft of the whole chapter is there; ** means I've started it, but it's incomplete):

  1. Housekeeping (*)
  2. Commands/statements/expressions, variables, operators (*)
  3. Flow control structures (*)
  4. Built-in types (*)
  5. OO with CFML (*)
  6. OO with CFML cont'ed
  7. Error handling (*)
  8. TDD
  9. Clean code
  10. The CFML application server, the request/response process & scopes (**)
  11. Application framework
  12. Basic database persistence with ORM
  13. MVC basics
  14. View logic with CFML tags
  15. Custom Tags
  16. Advanced OO
  17. Advanced DB
  18. Advanced ORM
  19. File system / HTTP / FTP
  20. REST
  21. Functional programming concepts
  22. Threads and locking
  23. Java interaction
  24. TBC
  25. TBC
Reviewing it today I have a few questions.
  1. Are the chapter breaks for 0-22 in a sensible order? Does anything stand out as being out of place? It's supposed to progress from chapter to chapter, with a subsequent chapter pretty much requiring the framing of one or more of the earlier chapters for it to make sense in context.
  2. What should I do for chapters 23-24? I am actively omitting a lot of CFML (like <cfclient> and anything referenced in ColdFusion UI the Right Way). None of that stuff should be in CFML and I'm damned if I will ever encourage anyone to ever use it. Or even make them aware of it. When thinking about this, bear in mind this thing is about CFML (the language), it's not about ColdFusion (the application server). So I'm not interested in stuff that's mostly related to the ColdFusion server (admin, security etc). There's some stuff CFML facilitates like all the PDF manipulation and spreadsheet stuff which is "significant" to CFML, but don't in themselves represent anything "different" in the way one uses CFML. Once one knows how to use functions and tags, one knows how to use said functionality to do PDF stuff or spreadsheet stuff. There's no need to go over it again.
  3. MVC. Nolan did an excellent presentation at CFSummit about MVC without a framework, which - coincidentally - was where I was gonna start with this, but the more I think about it... the more I think it's just encouraging bad practice to take that approach. If one is doing MVC, one should use a framework. I guess the first bit could be a discussion on the MVC pattern, but I don't want to be writing code that demonstrates a sub-par approach to things. Equally I don't want to regurgitate stuff that I'm sure FW/1 / ColdBox etc already covers much better. What should the narrative approach be here? Sean and Brad, I'd be particularly interested in what you think on this one?
  4. It irks me that in chapter 0 I encourage readers to save CFM files into a web-browseable directory. That is pretty poor practice, although it's kinda necessary for running small scripts like one will end up with in this book. I don't really want to get into "web sites" too much, but I guess it's innate to CFML usage, and this made me think I ought to mention "do not put your CFML files in a web browseable directory" somewhere. But there's not much to say on that (other than explain why, and what one should do instead). Is there scope for a full "other best practices" chapter? I will already cover most of what I want to say on that in the TDD (might undergo a title change, based on some stuff we're doing on our project now), and Clean Code chapters, but there are perhaps some CFML-specific best practices that ought to be written down?
  5. Alex was dismayed I changed the slant from Lucee-centric to ColdFusion-centric. I couldn't write it completely Lucee-centric because, well: almost everyone using CFML doesn't use Lucee. And the more I wrote code that needed to run on both, the more Lucee f***ed me off for not being CFML-compliant (their prerogative, and I used to be all for it, but I've changed my mind there). This was more in the CFScript docs I wrote, but it was also impacting me here. But Alex makes a good point in that there's benefit to include Lucee's CFML in all this too. So I thought an appendix? What do you think?
  6. Anything else I've obviously missed from all this? I've had some pretty CFML-savvy eyes over this thing already, but more eyes would be better.
I have to say this still conceptually interests me quite a lot as an exercise. I'm just struggling with motivation to write it. Plus I also need to hunker down and just work out which next bite of the elephant to chow down on.

And... hang on... am not I a PHP developer these days? :-S

Oh, and a special shout out to James Mohler who's dived in and trying his best to help with this thing. And even more so for enduring my idiosyncractic pull request requirements. Cheers fella.

Righto.

--
Adam

Wednesday, 13 January 2016

Abandonware: "Learn CFML in 24h" notes

G'day:
I've just been talking to a few people on the CFML slack channel about the sorry state of ColdFusion documentation.

A while back I started a private project "Learn CFML in 24 hours", which was gonna be my attempt at teaching people CFML in a style appropriate to 2015 (or perhaps 2014, at the time). There's other learning material out there, but I think all of it does CFML a disservice, and I wanted to move people on from that.

But I can't be arsed.

I find writing easy... most of these articles are created at about 100wpm... rattled out as fast as I can spew my stream of consciousness onto the screen via the keyboard. But I find focus and motivation very difficult. unless it's typing drivel straight from my brain, things become tricky, so I never finish anything I start. And that project is no different to any other I've started.

Seen in that light, I've just converted it from a private repo on Github to a public one.

My idea is people can look at what I've done and perhaps add some stuff or perhaps guilt-trip me into writing more, or... whatever.

The project is at https://github.com/adamcameron/cfml24h. I present it as-is. There is currently no licence, which means it's not licensed for anyone's use. I'll CC it or something soon.

I'm OK with continuing to write it, actually. Maybe I just need some direction from the community as to where to go in various areas. Raise issues I guess. I dunno. If anyone gets a handle on the editorial slant I am trying to take with it and wants to contribute, then I'll take pull requests. Perhaps discuss them with me first though.

BTW, Mark Drew helped me a lot with this when I first started this: with tone, motivation and general "food for thought". He might not realise how much I appreciated his input, so it's worth mentioning.

Righto.

--
Adam

Wednesday, 22 April 2015

That CFML book I claimed to be writing...

G'day:
Yesterday Daniel asked me for an update on this "Learn CFML..." book I'm supposedly writing:

The news isn't very impressive, I'm afraid.

I haven't done a commit to it since [checks Github]... March 16, and the current status is that I've got five chapters at "first draft" level, and two chapter in progress. That's out of notionally 24 chapters in total.

I had a completely writing motivational slump when I was over in NZ, through until a week or so ago, but this seems to have passed now. But this means I have a backlog of stuff to write down for this thing, and then once I catch up I'll go back to the book-writing.

It had become a bit of a pain in the arse and a bit demoralising because trying to write about using CFML in a platform-neutral but still coherent fashion is actually a bit tricky. There's really quite a lot of difference between ColdFusion and Railo / Lucee's CFML, and I really don't want to get too bogged down explaining that sort of shite. Also I was finding an awful lot of bugs in both platforms as I progressed. Often a bug will take a coupla hours to clearly and portably reproduce, which just kills my flow. I could simply not raise the bugs, but that's not very helpful.

I'm also waiting hopefully that Lucee might solve some incompat issues that I'd really rather not have to expose them for, as Lucee is my preferred dialect of CFML. It's just a shame they do some stuff quite differently from ColdFusion in place.

Oh, that reminds me. I hit Lucee up about a shortfall I saw in one of their features (I must actually write this up too), and it took about a week to go round the houses with them on the forums and the end result was f***-all other than me questioning... well: a number of things. So that didn't help. That was the point at which I stopped writing completely.

Prior to that I was actually considered going "you know what? Screw ColdFusion, I'm gonna write this about using Lucee's dialect of CFML only". I'm still mulling this over. That said, I first started thinking that a few weeks ago and... well... if you've been keeping apace of things, you might know that I'm hesitant about that being a worthwhile horse to back any more. I'm def on "watch this space" mode @ the moment.

So not a great deal of progress, but I do intend to get back to it. Plus Daniel's made me feel guilty now (nice one, Daniel :-| ;-), so I might try to pull finger and start chipping away again.

Anyway, that's me lunchbreak finished, so I better crack on with some PHP.

--
Adam

Friday, 16 January 2015

"Learn CFML in 24 Hours" status

G'day:
You might remember this: "Learn CFML in 24 hours: chapter 0" back in Dec. I've not had much more to say about it, but I am working on it. I have that sketchy draft of chapter 0, and also pretty much done chapter 1 ("Variables, commands/statements/expressions, operators").

I'd like to get some other people's eyes on it, and I've had some volunteers to help sanity check / bullshit detect on it. But I don't want it to be a public thing, and I've been mulling over how to implement that. Yesterday I created a BitBucket account... BitBucket allows private repos for free. I am not prepared to pay GitHub £5/month to enable me to have a single private repo for a coupla dozen files. I've also invited a coupla bods to have access to it, to see how that works.

I'm pretty busy at the moment so progress has been a bit slower than I would have liked. But I am enjoying the writing I've thusfar done, so my interest is not waning at all. I have a month off work in Feb, so I anticipate breaking the back of the thing then. As long as the Kiwi sunshine and World Cup Cricket don't occupy all my time during that period. The good thing about cricket is that it takes all day, and doesn't require 100% of one's attention, so I should be able to multi-task a bit.

Anyway, that's that. A bunch of people have indicated interest in the project so I thought I'd write a quick update.

And now to convert the work I've done so far into markdown. Grumble.

--
Adam