Showing posts with label Community Members. Show all posts
Showing posts with label Community Members. Show all posts

Monday 28 June 2021

Do as I say, not as I do

G'day:

One of the more attentive people on the CFML Slack channel observed I had some unVARed variables in the last couple of my articles. And quite possibly in other ones I've written recently.

This was unintentional. I'm being caught out by Lucee's setting to not need to var local variables, which I have switched on in my dev environment. Also I'm still in the throes of porting my brain back from PHP which doesn't have such dumb-arsed notions about needing to be explicit about these things.

To be clear, my position on variable-scoping is as follows:

  • always constrain one's variables to the "nearest" scope. This would mean one ought always use function-local variables in one's functions.
  • If using any other scope: actively scope it. So if a function needs to set something in the variables scope, don't simply rely on not VARing it; explicitly refer to it as variables.myVar.
  • Only use explicit scoping on variables when it would otherwise be unclear which scope is being referenced. If you still to small simple functions, data encapsulation, and clean code, this generally means there's no need to scope stuff. It's just clutter.
  • If you see some code I've written that doesn't do this, presume it's by accident. It won't be the important thing about the code you're looking at, unless the topic under discussion is "let's look at variables scoping" or some such.

That last point is not meant to dismiss the observation our colleague made of my code: I mean I hastily went and fixed it! But just I'm gonna sometimes forget to dot my Ts and cross my Is&hellips; it's safe to assume that's just me being inattentive. For my day job, I take this stuff very seriously.

Please do point out when I mess stuff up! I'll fix it.

Cheers to all who actually read this shite, and pay that amount of attention to it. I really appreciate it :-)

Righto.

--
Adam

Sunday 4 April 2021

TDD & professionalism: a brief follow-up to Thoughts on Working Code podcast's Testing episode

G'day:

Yer gonna need to go back and read the comments on Thoughts on Working Code podcast's Testing episode for context here. Especially as I quote a couple of them. I kinda left the comments run themselves there a bit and didn't reply to everyone as I didn't want to dominate the conversation. But one earlier comment that made me itchy, and now one comment that came in in the last week or so, have made me decide to - briefly - follow-up one point that I think warrants drawing attention to and building on.

Briefly, Working Code Pod did an episode on testing, and I got all surly about some of the things that were said, and wrote them up in the article I link to above. BTW Ben's reaction to my feedback in their follow-up episode ("Listener Questions #1) was the source of my current strapline quote: "the tone... it sounds very heated and abrasive". That should frame things nicely.

Right so in the comments to that previous article, we have these discussion fragments:

  • Sean Corfield - Heck, there's still a sizable portion that still doesn't use version control or has some whacked-out manual approach to "source code control".
  • Ben replied to that with - Yikes, I have trouble believing that there are developers _anywhere_ that don't use source-control in this day-and-age. That seems like "table stakes" for development. Period.
  • [off-screen, Adam bites his tongue]
  • Then Sean Hogge replied to the article rather than that particular comment thread. I'm gonna include a chunk of what he said here:

    18 months ago, I was 100% Ben-shaped. Testing simply held little ROI. I have a dev server that's a perfect replica of production, with SSL and everything. I can just log in, open the dashboard, delete the cache and check things with a few clicks.

    But as I started developing features that interact with other features, or that use the same API call in different ways, or present the same data with a partial or module with options, I started seeing an increase in production errors. I could feel myself scrambling more and more. When I stepped back and assessed objectively, tests were the only efficient answer.

    After about 3 weeks of annoying, frustrating, angry work learning to write tests, every word of Adam C's blog post resonates with me. I am not good at it (yet), I am not fast at it (yet), but it is paying off exactly as he and those he references promised it would.

    I recommend reading his entire comment, because it's bloody good.

  • Finally last week I listened to a YouTube video "Jim Coplien and Bob Martin Debate TDD", from which I extracted these two quotes from Martin that drew me back to this discussion:
    • (@ 43sec) My thesis is that it has become infeasible […] for a software developer to consider himself professional if [(s)he] does not practice test-driven development.
    • (@ 14min 42sec) Nowadays it is […] irresponsible for a developer to ship a line of code that [(s)he] has not executed any unit test [upon].. It's important to note that "nowadays" being 2012 in this case: that's when the video was from.
    And, yes, OK the two quotes say much the same thing. I just wanted to emphasise the words "professional" and "irresponsible".

This I think is what Ben is missing. He shows incredulity that someone in 2021 would not use source control. People's reaction is going to be the same to his suggestion he doesn't put much focus on test-automatic, or practise TDD as a matter of course when he's designing his code. And Sean (Hogge) nails it for me.

(And not just Ben. I'm not ragging on him here, he's just the one providing the quote for me to start from).

TDD is not something to be framed in a context alongside other peripheral things one might pick up like this week's kewl JS framework, or Docker or some other piece of utility one might optionally use when solving a client's problem. It's lower level than that, so it's false equivalence to bracket it like that conceptually. Especially as a rationalisation for not addressing your shortcomings in this area.

Testing yer code and using TDD is as fundamental to your professional responsibilities as using source control. That's how one ought to contextualise this. Now I know plenty of people who I'd consider professional and strong pillars of my dev community who aren't as good as they could be with testing/TDD. So I think Martin's first quote is a bit strong. However I think his second quote nails it. If you're not doing TDD you are eroding your professionalism, and you are being professionalbly irresponsible by not addressing this.

In closing: thanks to everyone for putting the effort you did into commenting on that previous article. I really appreciate the conversation even if I didn't say thanks etc to everyone participating.

Righto.

--
Adam

Thursday 26 January 2017

Survey results: most useful response first

G'day:
I've got the results in from that survey, and started looking through them last night. I haven't really organised anything yet, so nothing useful to report, but this response stood out. The survey had 16 questions, but they left them all blank except question 15:

  1. What else do you think might be useful to share?
    You are toxic.
That's it. That's what they decided to write. That's what they figured was worth investing their time in.

Now I'll not contest whether or not I'm toxic, but I'm not sure that in a community survey aimed at understand how best to help people migrate their skills from CFML is really the best place for it. They coulda just emailed me (my email address is in the "Communications policy" link to the right there). But what I will conclude is if they read the survey questions, and decided that was a sensible, relevant and effective answer to make, they should perhaps be worrying less about how toxic I might or might not be, and more concerned about their own state of mind.

But still: at least I got a new quote for my banner line.

Yours toxically,

--
Adam

Thursday 3 November 2016

CFML: proposed new meet-up in London?

G'day:
Perennial CFML community-member Mark Drew is looking at the feasibility of getting a CFML Meetup going in London. Sounds like a good idea to me.

He's just gathering some metrics as to people's interest levels and availability at the moment... here's a survey: London CFML Meetup.

Also help him get the word out by RTing this, and in general spreading the word, eh?

If it's on days I can make it, I'll probably pop along.

Good work, Mister Drew. Am always glad to see someone trying to put back in to the CFML community.

Righto.

--
Adam

Tuesday 9 February 2016

"Adam Cameron is kind of a twat"

G'day:
I know it's puerile of me to revel in such things, but this made me laugh: "Adam Cameron is kind of a twat."

It is, of course, completely true.

Well done, "TimDuncanTheAlmighty". Well done.

Righto. All this twattery does not get done by me loafing around here. I better crack on with it.

--
Twat

Saturday 23 January 2016

Am I being bullied? Or am I a bully? I'm definitely being a Big Meany again

G'day:
Just a quick one.

Michael Smith has been doing the hard work with the annual "State of the CF Union Survey 2016". Go fill it in if you're a CFML dev and haven't done so yet. Michael has posted some intermediary results: "State of the CF Union survey 2016 - partial results".

I had a quick scan over the results - I'll leave it for someone else to comment on them in more depth - but I just had to share this observation respondent #23 made:

Glad Adam Cameron is stopping CF, maybe the community as a whole can start to heal from his years of negative post after negative post. He did more damage to CF than any other single factor IMO.
Aaw bless. I'm pleased you think I have that much impact in the community. Sadly I think you put rather too much stock in my community "penetration" and my importance in the bigger scheme of things. Almost all people who use ColdFusion have no frickin' idea who I am. And - of the ones that do know who I am - I get the impression really rather a lot agree with my position, even if a few (a lot?) of them don't necessarily like the way I articulate it. Hey... even I don't like the way I articulate it some times.

But yes, sure, there's a tiny wee minority such as yerself who seem to take it all a bit too seriously. Fortunately no-one else does. Well: I say "fortunately"... I sometimes wish Adobe took it a bit more seriously, but hey ho: they don't. It won't stop me trying.

I'm gobsmacked you place me as the top of the "problem list" for what ails ColdFusion. That is... um... really ignorant. And perhaps a wee bit detached from reality.

I think it's safe to say that - other than a few features I pushed to get into CFML and were successful with, and a few bugs I leaned on Adobe (or Railo, or Lucee) to get fixed and was successful with that - my impact on ColdFusion and its direction has been minimal. Same as with pretty much everyone in the community. Adobe don't really listen to us, after all.

I s'pose I should be annoyed that you put more stock in my whiney blog posts (or comments elsewhere) than you do in all the positive work I've done for the community, of which there's been a fair amount I think? Most of my articles here are discussing coding concepts or documenting the solutions to problems and the like, and a lot have pretty positive feedback. And I do spend a fair chunk of my spare time on Stack Overflow (where I am the top - read "most helpful" - users for ColdFusion. And specifically for ColdFusion 11, 10. And 9 and 8. And Lucee. And second to Peter Boughton for CFML and Railo), and before that on the Adobe ColdFusion forums where I'm one of the top users despite having not really touched the thing for a few years. That's not an exercise in hubris, it's more just a demonstration of exactly how bloody awful I must be if all that lot is trumped by the odd "being a big meany" commentary I make. Bloody hell, I'm a hell of a big meany in your eyes.

It's a shame - for you - that you are a bit of a "glass half empty, and I think what's in it seems to be piss" sort of person.

But good on you for taking your time to make a comment like that. I hope it brought you warmth. It did bring me a chuckle.

Righto, off to do something more useful with my time (which would be... you know... anything really). I'll let you get back to pushing pins into the eyes of your Adam Cameron dolly, or whatever it is you get up to on the weekend.

--
Adam

Friday 20 November 2015

ColdFusion: help one of our community members with a PDF problem

G'day:
One of our community members, Prabha (I dunno the rest of their name), is having some problems with PDFs. They came to me for help, but I don't know the first thing about PDFs nor how to manipulate them with ColdFusion. And to be completely honest, I am completely content maintaining that ignorance. But I know a bunch of people out there do know how to do this stuff, so they might be able to help.

The question is this one, on StackOverflow: "When exporting PDF with CFChart images in ColdFusion It shows embedded font error". I can't actually make head or tail of it, but there seems to be two things:

They're getting this error:

"cannot extract the embedded font 'PCBOHZ + TimesNewRomanPS-BoldMT. some characters may not display or print correctly ( OR ) cannot extract TimesNewRomanPS-BoldMT"

And clearly they'd rather not.

Secondly there's something about images missing:

In the generated PDF the images are showing as red cross marks, while creating PDF, CFDOCUMENT makes HTTP URL calls to coldfusion server to get the images from the CF virtual folder CFIDE/CFSERVLET (because these images are saved in this folder by cfchart tags based on the charting settings in CF administrator) [...]
It's all greek to me.

Now these should be two different questions on StackOverflow, but... err... shrug.

If there are any ColdFusion/PDF experts out there, can you have a look-see and try to help? Cheers.

Righto.

--
Adam



Thursday 29 October 2015

CFML community working well together

G'day:
I've not much to say here, but I'm just really pleased how the CFML community - especially Dom Watson and Sean Corfield - have been chipping away and planning out and discussing a ColdFusion enhancement request Alex Skinner raised last night (Allow additional attributes to be added to CFPARAM tags).

I put my usual cynical / jaded oar in (that said, I stand by what I say!), but Dom and Alex have been having a lot of discussion today (not just on the bug tracker, but on the CFML Slack channel too), and it's great work.

Well done, community.

--
Adam


Friday 10 July 2015

500+

G'day:
This is yet another code-free article, I'm afraid. I know I've been slack recently :-( I do have a coupla code-centric articles in the pipeline, which should be out the door over the weekend, with luck.

Anyway, this is all about the #CFML Slack channel. Here's the good news:


That 500 (at time of writing... it should be higher than that by the time you read this) is the number of CFML community members signed up to the #CFML Slack channel. That's not bad given it's only existed for a coupla weeks. If you haven't signed up yet... get on over there. Just click the thing above to get invited.

Sunday 26 April 2015

CFML: just cos something looks like an array doesn't mean it is an array

G'day:
One of my Aussie chums hit me up the other day, asking me for some help with some quirky code he was seeing. We worked out what the issue was, but it stands repeating because it was non-obvious from a CFMLer's point of view.

Thursday 23 April 2015

Help Indy

G'day:
I probably should have got onto this earlier, as it's the last day this funding campaign is running, but... err... didn't think about it.

Indy is a fella I follow on Twitter... he's part of our CFML community. He's one of the brightest potentials in New Zealand's IT industry, as demonstrated by his application Parent Interviews. He's been working on this since he was still at school (he's in second year @ uni now, I think), and has got himself onto the tech radar in New Zealand as one to watch ("Website graduates to take on world").

Indy's 19.

Anyway, he's after some $$$ to expand his horizons, and I reckon he deserves the encouragement.

I've just flicked him some money myself, and I know perennial CFML community member Kai has too.

Go on. It's worth it. But hurry up... the campaign finishes today I think.

URL: https://www.pledgeme.co.nz/investments/81-parent-interviews.

Please also circulate the word:


--
Adam

Wednesday 18 March 2015

Ad: "UK or Ireland Based Remote ColdFusion Developer"

G'day:
I'm just circulating this for a community member, Rowan Brewer:

UK or Ireland Based Remote ColdFusion Developer

As a developer at Tutuka you’ll be building enterprise-level high scalability systems that process tens of millions of transactions and tying them to web, mobile and API interfaces that make it easy for people to issue prepaid cards all over the world. We already have a team of amazing ColdFusion developers that work out of our local offices in South Africa as well as remotely out of Ireland and the UK, and now we need you! What you will be doing [etc, check out the link]
Good luck if you apply for it, and Rowan, I hope this helps you fill the post. Lemme know!

--
Adam





Thursday 26 February 2015

CFML: Dan Kraus - "more CF devs need to leave The Shire for a bit"

G'day:
I'm going through my in box today, catching up with all the comments ppl have made that I've not replied to.

Dan Kraus made a comment the other week on that article "Lucee: does its future include CFML?". It and its follow-up warrant repeating and more eyeballs on it, so I said I'd promote it to an article so people would def notice it. I should have done this back when the article was fresh, but got sidetracked.

Wednesday 18 February 2015

"ColdFusion Interfaces": a question from a reader

G'day:
One of my readers hit me up with a question about interfaces in CFML:

[...] I would like to ask you a question please. I was unable to find a recent good article by you or anyone else about this topic.

ColdFusion Interfaces; do you rekon using them or not please? Please provide why you would not reckon using ColdFusion Interfaces. [...]

I started looking at this yesterday which explains yesterday's blog post, but I got sick of writing before I had a chance to actually answer. Now I'm sitting at my folks' place (sans rat, today), in the middle of a power outage. Fortunately my battery is charged up, and I can answer this one without any research, so here we go.

Friday 3 October 2014

Good work, CFML community

G'day:
A few days ago I knocked out a quick article about the Bitnami contest that Railo is a participant in: "Ballot stuffing: vote for Railo".

At the time Railo was on the first page of participants, but well down the list.

But the CFML community has really stepped up here I think, because as I type this, Railo is now in the lead (425 votes; second place 423). I dunno when the contest ends, and the margin is still really tight so if you want to support CFML and encourage getting the word about it out there more, go and vote.

Update:


Blimey, whilst I was writing this, Railo's vote went up to 461!

And good work everyone who did vote, and who did circulate the word.

--
Adam

Wednesday 10 September 2014

Update regarding irritation: cheers Rakshith

G'day:
Y/day I got all ranty with this: "Please indicate your irritation @ the ColdFusion Team".

A bunch of people joined in the irritation (that sounds vaguely NSFW, I know), and fortunately Adobe have fed back:


Adam made a good follow-up point, and Rakshith responded positively to that too:


This is all positive. I thanked him on Twitter, but I just wanted to say thanks here too.

Good man, Rakshith: thanks.

--
Adam

Friday 5 September 2014

Enhancing block syntax in CFML

G'day:
This is not an article per-se, but just a heads-up to go have a read of something Rory (I dunno Rory beyond his name on the forum post) has raised on the Railo Google Group: "I actually like tags in script". I think this is worth a read, and worth people putting their oar in.

And, hey, listen: even if you are a staunch ColdFusion-only person, it's worth reading and participating in the conversation, as it's a general CFML topic, and what Railo implements generally leads the way for where Adobe's CFML goes (except when Adobe balls it up, which, admittedly, is frequently). The Railo Google Group is probably the best place to discuss CFML stuff, in my opinion.

So, anyway, go have a read, a think, and put your thoughts down.

I'm still formulating my position, and when I flesh it out I'll post it both there and here. Obviously I don't agree with everything he says (esp. given its basis is in part specifically disagreeing with things I've had said in the past), but I don't disagree as much as Rory might think I do.

I'm in Ireland over the weekend, so that gives me plenty of time to think about stuff (at the Salt House, pint in hand), so I should come up with something at some stage soon.

Righto.

--
Adam

Tuesday 29 July 2014

Embryonic ideas

G'day:
This is gonna have to be quick, as I've spent my "before work" blogging window chatting on Twitter / Skype with various people. So I need to get this out the door in the next 30min.

Over the last week, a coupla interesting (well...) ideas have been presented to me by way of community projects. Which I might undertake.

Sunday 13 July 2014

Seven Languages [etc], and how guilt tripping me tends to work

G'day:
A few weeks ago Sean piped-up about the sequel to "Seven Languages in Seven Weeks":

Seven more languages? I hadn't even looked at the first seven yet :-|

I do actually have the first book at home (Marcos, I must give it back to you), but haven't really opened it.

However then this happened:

I claim I don't "do" peer-pressure, but it seems to have worked this time. I'm over in Ireland @ the mo', so don't have the book with me, but bought my own soft-copy of "Seven Languages in Seven Weeks" y/day, and have commenced working through it. And once I've done that, I will consider moving on to the sequel.

The first language is Ruby which I've done a bit of already, and at the end of Day 1 I have not covered anything I didn't already know or haven't already actually covered on this blog:


However the writing style is accessible, and I've now paid to learn this stuff, so I had better work through it.

I'll keep you up to date as I go (and guilt trip me if I do not!). In the mean time, Ben Nadel did all this stuff years ago, so maybe go read what he had to say on the topic: "Seven Languages In Seven Weeks: A Pragmatic Guide To Learning Programming Languages By Bruce Tate". There are links to each day's progress at the bottom. I think perhaps I'll go read them myself.

This seems a bit of a pointless article, outwardly. The general gist is that once I have said I am going to do this stuff, I want you to give me a hard time if I go not. I'm crowd-sourcing motivation, it seems.

But short-term... I'm done with programming for the weekend. I shall now resume drinking Guinness and waiting for my flight. And probably pass the time with a DVD rather than with code.

Righto.

--
Adam

Thursday 10 July 2014

CFML: This always trips people up: the difference between listContains() and listFind()

G'day:
This question came in via email. Fortunately (given my reaction the other day "I'm not Ben Nadel (or Ray Camden)") this one was suggesting a blog article, and a blog article it shall receive. The email was about listContains(), as is as follows:

I just wanted to throw this out there for you as a possible blog post if you’re interested. I was working on some code which I was running through an array of structures. Anyhow, as I loop the structure, I have an if condition ListContainsNoCase(“label,fieldtype”,KEY). One of the keys is “type” which was causing the dynamic form not to display correctly. When I remove the “fieldtype” from the list, the form works. I was removing “fieldtype” so that it’s not an attribute of the field. I thought it was interesting that it’s looking at the word “type” within “fieldtype” vs. looking at the comma delimited list instead and looking at the word as a whole.
Unfortunately the person here is falling foul of something I think everyone falls foul of... when they're seeing is exactly what's expected, and exactly how listContains() (and listContainsNoCase() works).

Here's what it says in the docs ("listContains()"):