
Why must you laugh at my back end? - pud
http://blog.pud.com/post/9582597828/why-must-you-laugh-at-my-back-end
======
nhashem
This is great. Seriously. I cut my teeth in the early 2000s writing the type
of PHP code that would make your eyes bleed. Global variables everywhere.
HTML/PHP/MySQL in the same file. Career-wise I ended up going down a
backend/database developer path, so if I do anything with consumer-facing web
applications, it's on my free time.

I'm working on such an app now, and right now the fastest way I can get
anything done is writing similar code to what I wrote in 2003. It's not quite
as bad, but I continually succumb to doubt. Shouldn't I be using a framework?
Wouldn't Python or Ruby be a better language to use now? Is it 'cheating' if I
just throw these form elements in an HTML table? Shouldn't I be using
something more scalable for the backend than a default installation of MySQL
5.1?

And yet, every time I try and address any of the above, it just gets
frustrating to me. I have a limited of free time to work on this web
application each week. So I want to spend that time actually DOING things with
my web application, not just ramping up on learning some stuff so that I can
maybe do some things a few weeks from now. This web application is getting a
bit of traction with users. I always figured that I would eventually "code
myself into a corner," and that making these suboptimal technology stack
choices would result in me hitting some local maxima that would bite me in the
ass and I'd have to basically rewrite everything.

But after reading this blog post, I feel a lot better about my choices. If
this guy can make his web application work with the technology stack he
prefers, then so can I.

~~~
Hisoka
That's not a bad strategy. I also believe in "Just get it out and done ASAP
and brush it up like heck afterwards". Worry about injection attacks,
efficiency issues, scaling after you gain some traction. You can always
rewrite later when it becomes an issue.

~~~
mark242
Can you please list out the applications you've created? I'd like to add them
to my "never ever register on these sites" list.

If you're only worrying about injection attacks "...after you gain some
traction" or "...when it becomes an issue" you're already too late, and I
don't ever want to trust any of my private data with you, ever. This is the
21st century. Scrubbing and validating user input is _trivial_ now, framework
or no.

Please, please, please, everyone who reads this, spend a day reading the OWASP
guidelines, and _use_ their sample code. This isn't difficult, and it makes
your applications a million times more secure _on_ _day_ _one_.

~~~
Hisoka
Oh please. I'm not building anything that requires a credit card, or anything
sophisticated. When you have literally just a hundred users, YES I will skip
paying lots of attention on injection attacks because the chances of that
happening is very low. To you techies, it sounds like a huge deal, but the
priority in any business to make profit first.

~~~
eropple
Sorry, but this is bull. If you take _any_ information, even if it's an email
and password, data security is either tops on your list or you're abusing your
users (even "only a hundred"; _one_ is too many!). There is literally zero
middle ground on this: you _do it_ or you shouldn't be building web
applications. And given how utterly trivial it is to provide proof against
injection attacks in any modern language and toolkit, choosing not to do so
because it's "hard" as irresponsible as you can get.

This sort of behavior is why the rest of us get a bad rap.

~~~
paganel
> Sorry, but this is bull. If you take any information, even if it's an email
> and password, data security is either tops on your list or you're abusing
> your users (even "only a hundred"; one is too many!). There is literally
> zero middle ground on this: you do it or you shouldn't be building web
> applications

[http://blog.moertel.com/articles/2006/12/15/never-store-
pass...](http://blog.moertel.com/articles/2006/12/15/never-store-passwords-in-
a-database)

Needless to say, almost 5 years have passed and they're still around :) their
traffic probably a couple of orders of magnitude higher. I was there when it
happened, and yes, probably some Russian hacker or whatnot has my password
from there, but that's not such a big deal because reddit doesn't know my
name, doesn't have my CC number or any details related to my life.

Now, were this to happen to a company that has a lot more information
available about each and every one of us stored in one central place (think
Google or FB), then things could get really nasty. And I'm not talking about
stupid mistakes like the one from above, I'm talking about MITM attacks
orchestrated by (vicious) Governments, or cyber-warfare, or just plain old NSA
not having to bother to collect information from a myriad of places anymore,
when they can just go directly to the source.

~~~
eropple
I'm unclear why you replied to me, because you didn't say anything meaningful.

I did not say you _couldn't_ build web applications if you were a jerkass who
was cavalier with the security of his users' data. I said you _shouldn't_.

~~~
paganel
>I did not say you couldn't build web applications if you were a jerkass who
was cavalier with the security of his users' data. I said you shouldn't.

That would have left us without reddit, I don't know about you, but without it
the Internet would have been a lot less interesting.

~~~
evilduck
Compromising user data isn't a prerequisite to building something cool.
Negligence is still negligence. Drunk drivers make it home without killing
anyone more often than not.

------
acangiano
In computing, there is an emphasis on the tools, rather than what you do with
them.

It's worth noting that it's not limited to computing either. Countless amateur
photographers spend their time discussing hardware, rather than techniques and
other aspects that would benefit their craft to a much greater extent.

Personally, as much as I'm fascinated by the tools, I'm much more curious
about what you do with them. So I'm always glad when I see someone succeed and
create something useful with an odd stack of technologies. It reminds me to
focus less on the tools and more on the creation process.

~~~
commandar
>Countless amateur photographers spend their time discussing hardware, rather
than techniques and other aspects that would benefit their craft to a much
greater extent.

You see the same thing among firearms enthusiasts. It's fairly common to find
people that spend (tens of) thousands of dollars chasing the best gear, but
won't spend $2-400 on training from a reputable instructor.

~~~
earl
And snowboarders. People spend probably minimum $1k for clothes, boots, board
and bindings; plus $70+/day for a lift ticket; but won't spend $50 to go to a
group class and actually learn how to do it. And they're dangerous to everyone
around them because they can't dismount a goddamn lift without falling down
and probably knocking down their neighbors.

~~~
knieveltech
And climbers. Nothing like wading through a gibbering horde of prana wearing
gumbies topropting with their $350 shiny new 70 meter bicolor ropes first
thing in the morning at the crag.

And kayakers. I've lost count of the number of times I've had someone's shiny
new boat (closely followed by an expanding slick of random gear) float past me
on class III+ runs.

And hikers. Ever see a day hiker doing a mile and a half loop trail wearing a
$350 hydration pack, $150 trail shoes clad head to toe in North Face gear?

And blacksmiths. Endless are the rants on why a $800 Beverly throatless shear
is infinitely superior to an identical model from Harbor Freight that costs a
mere $90.

And car enthusiasts. Ever see a $90,000 sportscar dinking around in traffic on
a Saturday afternoon?

See a pattern forming? People (mistakenly or otherwise) attach prestige to the
latest expensive gear, regardless of the activity in question.

~~~
gabebw
Good point, with broad examples. Seems like you've led an interesting life -
not many people would pull out "blacksmiths" as an example :)

~~~
knieveltech
I'm a man of many parts. :)

------
qaexl
(1) I have respect for people who can put a project together and get revenue
flowing through it.

(2) This technology stack sucks.

(3) That your technology stack sucks does not mean you suck.

(4) Maslow's Four Stages of Competence starts with Unconscious Incompetence.
You don't even know you are unskilled.
(<http://en.wikipedia.org/wiki/Four_stages_of_competence>)

(5) This isn't a popularity contest.
([http://www.ribbonfarm.com/2009/10/07/the-gervais-
principle-o...](http://www.ribbonfarm.com/2009/10/07/the-gervais-principle-or-
the-office-according-to-the-office/)) Being cool and being in the in-crowd has
nothing to do with your technology stack. That goes for nerds too
(<http://www.paulgraham.com/nerds.html>)

(6) The tone of this article is defensive. The issues relates to identity, not
technology.

(7) Relax, people.

~~~
abscondment
1-3 remind me of a great "I Can Has Cheezburger?" anecdote about being a
successful CTO: [http://www.scottporad.com/2010/11/12/what-it-really-means-
to...](http://www.scottporad.com/2010/11/12/what-it-really-means-to-be-a-cto/)

~~~
3pt14159
I wish more people knew about FreshBooks' rewrite. They had horrible code. And
they slowly morphed it into a php-python-ruby mix which is (from my dev
friends there) pretty damn good now. It's ok to have a setup or tools that are
fucked, but FB would never be able to hold onto developers or iterate quickly
on their product if they hadn't sunk at least 9 man-years on the clean up. A
million bucks for a slow rewrite is worth the price when it mitigates the
risks of a failed from scratch rewrite.

~~~
qaexl
You ever played Weiqi? (Otherwise known as Go).

Unlike chess, stones don't move once played. They can only be captured. On a
19x19 board, you have to balance short-term gains with long-term gains. Since
there are no left-right or top-bottom orientations, you often have to
reimagine where you draw the lines of territory as you play. Sometimes, you
can kill your shapes by playing too many stones. Better players can see where
things will go, identify "dead shapes," and stop wasting time trying to rescue
them. Sometimes you trade off bad moves for bigger gains. Sometimes you simply
have to work with mistakes you made in the early game.

This is very much like writing code and getting it to market. You're trying to
build something despite disruptive opposition even as the clock winds down.

~~~
z0r
Ah, but in Go there is the concept of good shape - you can play along similar
strategic lines with both good and bad shape, but if you play your stones
clumsily (write your code in PHP?), you will be vulnerable to many forcing
plays and clever tesuji that may transform the position into an unwinnable
one. It could happen during the middle game - bad shape may allow a group to
be cut in half or have its eye shape pounded out of it - or in the yose, where
you may need to make a very large number of moves to defend very few points
(long development cycles to add features to a poorly written product?).

Therefore the analogy of Go justifies spending time making good shape with
your code as you go along.

~~~
qaexl
See (4) about unconscious incompetence.

~~~
z0r
Don't take the fun out of this! But that was a nice write up about Go and I
enjoyed the analogy

~~~
qaexl
:-D

I'm glad you said something about shape. It's something I'm stumbling through
right now.

~~~
z0r
You might find "Making Good Shape" helpful, as it is one of the few shape
focused go books available in english:

<http://www.gobooks.info/k73.html>

The problems are very challenging, but that shouldn't stop you from thinking
about them and then enjoying the enlightenment of the answers after a minute.
Very helpful material! Best of luck in your pursuit of a better game

~~~
qaexl
Funny you should mention that. Right after you talked about shapes, I browsed
through Sensei's Library and saw that too. Thanks for the recommendation.

------
jsdalton
Some weird part of me loves this, and I don't know why.

That said, I'm very confused. The post says these sites are running off of
your "awesome" backend:

    
    
      * http://www.pud.com
      * http://adhdinc.com
    

But those are just pages with links to other services? Furthermore, while some
of those services (TinyLetter, FaqMe) do seem to be produced by ADHD, others
(Blippy, AdBrite) do not seem to be, though it seems you claim to have
participated in them in some way, shape or form.

I don't really care one way or the other, but my real question here is: Which
websites in your list are _actually_ running off of the backend described
here?

~~~
pud
On this stack: TinyLetter.com, FaqMe.com, and many of the other sites listed
on pud.com and adhdinc.com. (and more importantly, not-yet-released stuff I'm
currently working on).

I co-founded both Blippy and AdBrite but did not have technical roles there,
so they have nothing to do with this stack.

~~~
jonah
Congrats on selling TinyLetter to MailChimp!

[1] <http://tinyletter.com/>

[2] <http://blog.mailchimp.com/mailchimp-acquires-tinyletter/>

------
JasPanesar
Customers don't care what you code in.

Or what your backend is like as long as it works.

They just want their lives to be easier.

Use what you know, use it well, and make a difference.

\---

Most techies who have a negative opinion about any technology do it with
hearsay and not first hand experience.

For examples, all web languages pretty much do the same stuff, and you'll
rarely come across a web app that uses a language in a novel way that actually
makes a difference which language you use. They all have their pros and cons,
it just depends on what you want to coo / boo over.

To be fair many haven't accessed the tools that may require money to use.
Alternatively others might not have had the luxury of free time to learn
something on their own. It's not better, or worse, just different. Sadly a lot
of devs build wizardry to make their own lives easier and avoid tackling
making their users lives easier, and that shouldn't happen in any language.

All that matters is can you deliver a result that works well. If techies spent
as much time obsessing over improving their skills and finding way to build
valuable solutions than which tools to use, they'd know this.

For those who hold a holier than thou attitude in believing the only way one
can correctly create and innovate with a computer (software included) need to
be from narrow list of tools/education fields, they forget that smart people
can often learn to be great at more than one thing:

"I was lucky to get into computers when it was a very young and idealistic
industry. There weren't many degrees offered in computer science, so people in
computers were brilliant people from mathematics, physics, music, zoology,
whatever. They loved it, and no one was really in it for the money." (Fortune)
Steve Jobs

Get building.

~~~
mgkimsal
"Most techies who have a negative opinion about any technology do it with
hearsay and not first hand experience."

You'll find that even when you _have_ first hand experience, you'll often be
met with "well, you didn't do it right". Or "you need to do XYZ first - _no
one_ ever does foobar with XYZ first - are you stupid?". And so on. Even first
hand experience isn't enough for some fanboys when you choose to reject their
tools/languages.

~~~
JasPanesar
Lol, good point. It's kind of _ironic_ that _geeks who were
picked/excluded/ostracized in school_ turn on each other in their adult lives
and become snob/hipsters, instead of breaking the cycle.

 _Love and power to anyone doing anything good out there with the tools that
enable to do them._

As for the _fanatics_ who _can't change the topic_ (to keep bashing) or
_change their mind.._ I hope you can see the forest for the trees one day.

 _Imagine_ what it would feel to be supported by a developer of any language
and doing the same for others. We should _cheer_ accomplishments, not berate,
belittle and attack others without a track record of our own.

When it comes to getting opinions, I learn a little more every day to ignore
anyone who is a perfectionist and hasn't accomplished/launched/profited. It's
the enemy.

Scaling/rebuilding/whatever you're afraid of is okay when you're growing and
profitable. _No business built itself in one version._

Remember, In 10 years you might have forgotten about the tools you're so
passionate about today.

~~~
bitflipping
" It's kind of ironic that geeks who were picked/excluded/ostracized in school
turn on each other in their adult lives and become snob/hipsters, instead of
breaking the cycle."

This is more a result of our tribal tendencies which manifest themselves in a
number of ways: including xenophobia, racism, nationalism, religious
discrimination etc...

edit: Tarsems

~~~
JasPanesar
Lol, Tarsemity is something on another level..

No talking until the food is walking!

------
PedroCandeias
I don't hang out with a lot of programmers and I guess this is the reason.
This "laughing" the op alludes to. This endless discussion of what language or
back end is the best. I find it impossible to talk about programming with
people who would rather indoctrinate me on the benefits of their chosen
language than talk about, say, data structures. It's like arguing about what
colour is the best. It's pointless.

So big ups to pud for his post and his peculiar stack. In its own way, it's a
very cool and imaginative stack. And it works, which I think is the only thing
that matters in the end.

~~~
humbledrone
Talking about the differences between, say, assembly language and Ruby is very
different than arguing about what color is the best. I guarantee that some
projects will be successful if written in one of those languages, and not the
other (webapp in assembly? bootloader in Ruby?).

Also, in your view, how is talking about data structures any better than
talking about languages? Wouldn't that just be "indoctrinating me on the
benefits" of your chosen data structure? If the only thing that matters is
that the program works, then why does it matter what kind of balanced binary
tree is in use behind the scenes, any more than the language matters?

Tools do matter. Maybe you're not interested in incremental improvements in
your productivity as a programmer, but those who are will probably spend time
talking about their tools (hopefully balanced by spending even more time
actually using them).

~~~
PedroCandeias
I don't think you read me right. There's nothing wrong with debating the pros
and cons of a language (or whatever else), but there's a difference between
discussing and preaching. I'm always open to a nice chat, but I've got little
patience for preachers. That's all I'm saying.

~~~
mikedouglas
It's hard to understand your point if you change it. Of course no one likes
preachers or endless discussions or anything else that's clearly bad: that
doesn't have a whole lot to do with programming languages though. If that's
all you're saying, it doesn't amount to much.

What you actually wrote (and what this article partially argues) is that the
only thing that mattered was that it worked, which is a statement people can
disagree over. Working isn't a binary switch that flips when you launch, any
discussion of the value of something as complex as a piece of software has a
lot of different dimensions. After all, bubble sort "works" too, but you'd be
a pretty terrible computer scientist if that was as far as you investigated
the issue.

------
reinhardt
_As long as Xeround sticks around and does what they say they can do, I’ll
never have to worry about scaling my database_

Never heard of that database/company before so I clicked on the link out of
curiosity and guess what, their server is down. Not very reassuring for an
"infinitely scalable solution".

~~~
pud
Well damn, you're right. Looks like they were Hacker News'd. Fortunately
Xeround's database servers are still up, but this is a bit disconcerting.

~~~
revorad
I wanted to give them a try but if a scalable database company can't handle HN
traffic, it makes me think twice.

~~~
endtime
They may be using something cheap for their homepage because they
(understandably) don't expect to get hit hard there.

------
freshhawk
I don't understand what's so difficult about holding the following facts in
your head at once:

1\. Better tools make you more productive and make larger problems tractable.
Using outdated or subpar tools seriously limits your options, especially if
you need to compete with professionals. The simpler your problems, the less
this matters.

2\. It's easy to get sucked in to constantly learning the new
language/framework/toolset when you enjoy learning these things, finding the
balance between the diminishing returns of trying out new tech and being
highly productive is difficult. Welcome to life.

3\. Some people on the internet loudly engage in ignorant fanboyism,
especially if they see smart people using their new piece of tech and figure
they got onto a good idea early.

4\. That same fanboyism defends crappy tools because it's human nature to feel
that kind of tribal defensiveness when you've invested a lot of time learning
and using something, this is especially strong when someone has all or most of
their experience with a single tool or set of tools.

Here's an idea: in the real world tools and productivity are tied in a
complicated way.

The comments "it doesn't matter what you use, just keep getting things done!"
is just as stupid as "stop working on things and upgrade your skillset
immediately!".

Since this is aimed more at the commenters than at pud's submission I will say
to him: You are impressively productive with that tech stack, it really
doesn't look like it would be difficult for you to move to something more
powerful than cold fusion at least. You seem like a pragmatic guy who can see
the future payoff from that investment. You also look like a young guy who
should not be ignoring the kind of commitment to life long learning necessary
to compete in this industry.

------
mattbillenstein
What sort of traffic do you push through this infrastructure? Micro instances
only have ~600MB of memory and I found them to be severely over-sold cpu-wise
-- doesn't windows require like ~300MB of RAM to just boot?

And Windows is only a penny more per hour on micro instances (although that is
50% more than Linux) -- but quite a bit more on larger instances should you
ever have to scale up: <http://aws.amazon.com/ec2/pric..>.

Re database choice -- <http://xeround.com> is totally down right now...
Thoughts?

I dunno, just seems like a world of hurt should you actually have to scale up
-- but presuming you do, perhaps you'd have the funds and/or resources to
cover it anyway.

Additionally, How on earth do you hire people to work in this stack?!?

------
hristov
Is that the same pud that did fuckedconpany? It was a hilarious site where
people made fun of over valued companies during the first boom. Unfotunately
the site eventually became overrun by nazis (not kidding) and had to be shut
down.

~~~
pud
Indeed.

~~~
maukdaddy
Wow! Blast from the past! You might need to resurrect that site if the current
bubble continues ;)

------
bobstobener
I've built my product on CFML as well and I can't understand why it doesn't
get more love from the developer community. It's a solid, productive language
and the only language available in both commercial and open source (free)
versions with tremendous support forums on both fronts. I personally use Railo
for the CFML engine. Again, very productive and it enables me to get products
to an MVP stage quickly.

~~~
rmason
Bob,

If you're not on 'CFML entrepreneurs' on Facebook you should be.

~~~
bobstobener
Thanks I'll check it out.

------
blantonl
For those of you that were not around during the dot.com implosion in
2000-2001, pud (the author of this blog post) ran the notorious site
<http://www.fuckedcompany.com> which gave an awesome view into companies that
were going down the tubes during that time.

good times... good times..

------
encoded
I wonder if some of the laughing isn't so much at you and your stack, but at
the laugher's experiences with those (or similar) technologies.

We've all worked with technologies that cause us pain in our development
process. Sometimes, the pain becomes so great that we look for, and find,
something that we like better. Changing to this new techonology eases said
pain, and allows us to be (or at least feel) more productive.

I believe it's possible that some people laugh because they remember when they
used one or more of those technologies, and the pain they felt while using it.
They laugh and suggest other technologies because they assume you have the
same pains they've had, and they'd like to offer you what they consider a
better alternative that might ease some of the pains. After all, it worked for
them!

It appears that you've had some pains with this stack, but that you've found
ways to deal with those pains that don't involve leaving your current
technologies. Good for you. You've built successful applications on them. Also
good for you. These are, of course, the things that _really_ matter.

------
ary
Cold Fusion? No, no... _no_.

> CFML. I really like programming in CFML (a programming language, “ColdFusion
> Markup Language,” as opposed to ColdFusion, a commercial CFML interpreter
> made by Adobe). I know it’s not "cool" like Node.js or Clojure or even RoR.

Doctors used to bleed people with leeches to get out the "bad humors". They
stopped using that "tool" for a reason. It was a _bad tool_ , and better
"tools" came along.

Not only is CFML not _cool_ , it is hard for most people not familiar with
CFML to understand [1]. The syntax mixes in with HTML markup in such a way as
to make it very difficult to distinguish the two apart. _With_ a syntax
highlighter your mind still has a hard time as there isn't enough of a
difference to make a subconscious context switch easy. Also, the need to cram
logic constructs into HTML/XML-like syntax makes for some screwed up code. My
understanding is that you can put the attributes for the tags in any order,
and that means that things you'd always expect (in other languages) to appear
in a certain order, like conditions for statements, are instead a matter of
style [2].

> It’s got an old vibe. Not just because it was the first made-for-web
> programming language (tho it’s modern & updated frequently), but because
> whenever I meet other CFML coders, they’re always old dudes.

My experience with CF developers is similar. This is not a good thing. This is
_nothing_ like the C and C++ graybeards you occasionally meet and develop
immense respect for. These old CF developers are, in my anecdotal experience,
the kind people that learned one type of development and stuck with it for a
long, _long_ time. They've not really improved their skill sets beyond what
was popular practice when they first learned Cold Fusion. These are the kind
of people (I kid you not) that think HTML tables are a _great_ way to get your
page layout _just right_.

Why did the OP take an entire blog post to say what could have been posted to
Twitter ("you darn kids and your twittin'!")? The whole post boils down to
what appears to be proud, willful ignorance.

A lot of "you're a developer, but you really should learn about business"
stuff gets posted to HN. This case looks to be turned around and we have a
business person doing double-duty as a developer. My advice is to learn
something more current, and not because it's cool. More current technology has
business value in that it's easier to find people who can work with/on it, and
you will be able to find more of those kind of people for longer. The
underlying tech will also (usually) be supported for longer, and by a wider
range of companies. The reasons are too many to comprehensively list here.

I wasn't laughing at your back-end, by the way. It made me a little sad.

[1] <http://www.quackit.com/coldfusion/coldfusion_tutorial.cfm>

[2]
[http://www.quackit.com/coldfusion/tutorial/coldfusion_loops....](http://www.quackit.com/coldfusion/tutorial/coldfusion_loops.cfm)

~~~
rmason
What I find sad is people making judgements based on twelve year old
information. Like most languages CFML has evolved.

People writing CFML today use MVC frameworks, use ORM and the cloud. Yes it is
still easy for beginners to write bad code, I think that may be more true in
ColdFusion than in other languages. But getting started easily can also be a
virtue.

You might be surprised but a lot of the ColdFusion community don't have tunnel
vision and are familiar with a lot of other languages.

[http://www.bennadel.com/blog/2061-Seven-Languages-In-
Seven-W...](http://www.bennadel.com/blog/2061-Seven-Languages-In-Seven-Weeks-
Ruby-Day-1.htm)

<http://corfield.org/blog/post.cfm/learning-clojure>

Sometimes another language is a better choice for a given task. We write CFML
because we like it and are more productive in it, even if it isn't cool.

~~~
rorrr
Yet the OP mentions the <cfquery> tag, which is exactly the problem. It's
mixing of the presentation (view) with a DB call (something that should be in
a model and routed through a controller).

~~~
snow_mac
No if you write in a CFC... N00bs. btw, that's the standard way; use CFC's for
db logic, separate out logic & db functions from presentation

------
eapen
As a ColdFusion developer looking for a job in the valley, I also faced all
the negativity associated with the language. In fact, I ended up barely
mentioning the language on my resume. If the language was renamed to something
else and totally re-branded, it would probably gain more respect. Most people
still think of the older versions when it was built in C. But since the
conversion to Java, it has been able to benefit from a lot of the Java
enhancements while still functioning as a duck-typed language.

Another advantage is that, it has a very short learning curve. But like with
any tool, it can be used by amateurs to produce amateur looking code. Using a
framework (eg. FW/1) encourages better structured code and OOP approaches.

You can meet most of your web needs with ColdFusion and some highly
specialized items may be more complicated. But that is the case with just
about any language. The only part where I havent found sufficient
documentation or user experiences related to scaling applications. That is not
to say, it hasn't been done.

Given the relatively high price of Adobe CF (compared to Ruby/PHP etc), it is
not really an option that startups (in the Bay area) will consider. There are
open-source CFML engines like Railo as the author notes, but unfortunately, it
lacks publicity.

~~~
bobstobener
Which is very unfortunate because Railo is a great product and, in several
ways, superior to the Adobe engine. You're right about the branding aspect.

------
kakuri
If you don't mind working alone, work with whatever you like. If it's
important to your business to attract the best talent, you need to use the
best tools. I'm leaving my job largely because of tools & tech, and passed on
a lucrative offer to pursue a different job with better tech.

------
51Cards
I'm not laughing, I run several sites on a similar stack and it all runs very
well. I do run Railo though just because it runs circles around the native CF
server (and I don't use any of the "high level" stuff Railo doesn't include),
and I use mySQL 5.5, but all under Win 2k8 Server. I have dabbled in several
other frameworks as well but I simply keep coming back to CF to get things
done. Be it personal familiarity or platform flexibility or a combination of
both, it's never come up short or failed to perform very well and _that's_ how
I judge something to be an acceptable platform.

~~~
snow_mac
Do you blog about Coldfusion at all?

~~~
51Cards
Not I. I have debated starting up a blog a few times but lack of time is one
issue, and I'm also not sure anyone really cares to hear what I have to say :)

~~~
snow_mac
What resources do you read about cold fusion? (i'm new within the last 1 year
to CF).

------
radagaisus
I didn't even know CFML was an open standard. Check out cfwheels.org before
you comment. It's a RoR like framework, and from 15 minutes of tutorials -
it's actually pretty good. It handles APIs better than Django and deals with
AJAX in a smart way.

CFML verbosity and the entangled html is a downer though.

------
st0p
At the end of the day, making stuff work is all that matters. I would never
have considered CFML or IIS or Windows as a webserver, but if it makes your
stuff work and helps you make stuff work, why would I laugh at it?

------
dclaysmith
The synchronizing with Dropbox is pretty clever. Had never thought of that.
Probably some latency issues--it wouldn't suit all cases but definitely would
be a simple fix to a few problems I've had in the past.

~~~
icebraining
Do you (the plural you) really trust Dropbox Inc. enough to give them access
to all your application files on your servers?

Personally I don't use Dropbox for anything minimally sensitive (basically,
anything that I haven't downloaded from the web) without putting it on a
Truecrypt container. Maybe I'm just paranoid, though.

~~~
Luyt
I'd use tarsnap.

------
softbuilder
So, he's got:

* rapid development tools (at least for him) * scalable, low-maintenance backend * affordable infrastructure * automated deployment * automated backups

This is almost a Joel Test for web startups.

------
rbanffy
I wouldn't laugh, but I am surprised it works. I have abandoned Cold Fusion in
the late 90's - it kept hanging up, to the point of someone (me) having to
write a program that detected the lockup and proceeded to restart the service.
It may have become more reliable over the years, but I wouldn't know. CFML
also has several drawbacks as a web programming language - the way it mixes
presentation and application logic makes it hard to test properly and reminds
me of what is wrong with a lot of PHP and JSP code out there.

I am also surprised someone claims it's faster to work on Windows than it is
on a Unix-like OS. Most of the things I do on servers are moving files around,
installing/updating packages and occasionally restarting a daemon. For that,
clicking and dragging on a remote GUI is much less efficient than issuing
equivalent commands in a shell.

I also read IIS progressed a lot since I last had to automate virtual server
creation. Again, Apache runs on Windows and spitting (usually rendering from a
template and adding custom values) a new config-file and doing a graceful
restart appears simpler than right-clicking, form-filling and manually copying
settings from one place to another. Windows doesn't even offer the courtesy of
select/middle-button operation (unless you are operating IIS from the
console).

Like someone else said, unless your infrastructure fails miserably (and
CF/Windows failed me long ago) your app won't suck because of the technologies
it stands upon. A good idea implemented in CF, PHP or ASP is just as good as a
good idea implemented in Django or Rails or Node or Lisp. It's just that it
may be harder to evolve it over time, or make it scale, or deploy it in the
first place.

------
oemera
I'm little late here but I can't stop but write my response to this.

I know the problem to laugh about code, backend or infrastructure. I know a
lot of people are opinionated and if they don't like something you can't stop
them firing on you. I'm very happy for you that you found a stack which works
for you HOWEVER this doesn't mean that it works for others. A lot of
programming languages, paradigms, frameworks and infrastructures just work for
one guy on his greenfield project but while getting bigger things get lot
harder and crappy cause it isn't modular enough or no-one understands "the
legacy code" ect.

At beginning it seems like you can't run into such problems but after a couple
months of development this happens nearly in every project. You learning from
these mistakes and get better with every project. There are a lot of things in
software development people are talking about but you can only truly
understand it when you came to the point where you have this problem people
are describing to fix.

For example a lot of my old colleagues are in love with PHP. They get stuff
done with it and somehow they get code shipped but they don't go for elegance
and having less code smells. They just go for "it works what you want more?".
Software development is not only "it works" it is far more than that!
Maintainable code, readable code, performance, architecture, elegance (for
example: less readable code which covers the same as before) you name it.

I found my self learning a lot from different languages, paradigms, people and
different systems. For example what I love about linux is: I could write a
automatic shell script to do anything. With Windows you can't! You just can't
write for every step a shell script a lot of things are only available through
the GUI. This bad. I don't like that. And I also don't like to run the GUI on
a server. You are wasting a lot of resources here.

------
bobstobener
Typical posts against CFML. "It's old." Well then so is Java, PHP, you name
it. Actually, of all of those languages, CFML has the latest iteration (which
is the most important stat). Railo and Adobe both have new updates ariving
soon. Hey, how bout that JSTL huh? Morbid since the late 90's.

------
rdouble
What sites are running this hilarious back end?

~~~
pud
Several of these: <http://adhdinc.com> and <http://pud.com>

~~~
xyzzyz
[i]Please[/i] tell me that these animated GIFs and background MIDI on pud.com
are parts of the joke.

~~~
j_col
My guess is they are, considering the footer says "This site is best viewed
with Netscape Navigator 2.0 or above".

It's a cool domain though, how many three letter .com domains out there?

------
bcrouse
I don't get it. Would anyone argue that you couldn't launch successful sites
this way? Tools are made to improve the process and enable new possibilities;
that's why use good tools.

------
fatalerrorx3
You need elastic load balancing for iPhone Apps, do they call your web servers
that often? How many users are you dealing with currently? Wondering if my
single server in my house will be enough to launch a new web service
shortly..the server is currently a quad core dedicated Ubuntu LAMP Server with
2gigs of ram that I built a little over a year ago, currently hosted off of
residential cable

P.S. That's a nice looking backend

~~~
pud
Several of my iPhone apps interact with a web service.

As for your situation, my cable company's upstream is so slow that I wouldn't
host anything on it. But if yours is fast and you like dealing with your own
hardware, go for it. Maybe you'll be the next Rackspace :)

------
hm2k
The web page at <http://xeround.com/> is currently unavailable. It may be
overloaded or down for maintenance.

HTTP Error 503 (Service Unavailable): The server is currently unable to handle
the request. This code indicates that this is a temporary condition and that
the server will be up again after a delay.

------
ebiester
The only piece that made me cringe was CFML. I promise that a better life
awaits you if you have the courage to break free.

~~~
JasPanesar
Cringing aint so different than laughing ;)

I work in 7-8 languages, was just wondering referring to my post: \- What was
your experience with CFML that made you cringe \- Is it possible the same can
happen in any language \- What is better, in what way?

Always looking to use better tools if they really get more done with less
effort :)

~~~
ebiester
I will admit that my CFML experience is limited to studying it for an
interview (that made me not want the job) and learning it well enough to read
old source code for a new application based off the old. (The app was MX 7)

My primary complaints were (as everyone) the verbosity - I've never seen a
more verbose templating system, which led people to copy and paste all around.
While there were some CFCs, those were mostly for tying to java backend. All
this _could_ happen in ASP, for example, but CF seemed to make it painful to
do the right thing.

Of course it could happen in other languages, but my experience let me to
cringe whenever CF was mentioned.

The OP used Microsoft already, so I'd look along those lines for him, even
though my professional life is in java (95% javascript/HTML application with
minimal templating from JSP)and my current weekend project is in rails. Razor
looks like a nifty templating engine in ASP.NET MVC, for example.

~~~
JasPanesar
Verbosity is totally a pain.

Interestingly, I didn't know ECMAscript (aka Javascript) is too verbose for
folks out there.

It turns out that CFML has two syntaxes, script and tag.

The tag based html-type that's being discussed here, and and cfscript.

Cfscript is is nearly identical to javascript and based on ECMAscript. Several
languages follow ECMAscript.

In a way, if you know HTML and Javascript, any language should be easier to
pick up than a language that looks completely different from HTML and
Javascript, no?

Googled and found:
[http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0...](http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7ebf.html)

ECMAscript: <http://en.wikipedia.org/wiki/ECMAScript>

~~~
ebiester
I thought that the CFML was the tag language and CFscript was considered
separate, and this particular project didn't take advantage of CFscript, but
looking around, people aren't too keen on the interfaces given to CFscript,
even today.

[http://www.clearcrystalmedia.com/pm/full-cfscript-cfcs-
not-w...](http://www.clearcrystalmedia.com/pm/full-cfscript-cfcs-not-where-
they-need-to-be/)

[http://www.forta.com/blog/index.cfm/2011/2/4/I-Am-Not-A-
Fan-...](http://www.forta.com/blog/index.cfm/2011/2/4/I-Am-Not-A-Fan-Of-
CFSCRIPT)

I can speak to a similar adobe product, Flex (and MXML/ActionScript) and at
least there, Adobe tried to figure out what would make most sense in MXML, and
then the ActionScript interface fell out of that, rather than what made sense
for an ActionScript interface. Then, Adobe pointed everyone to the MXML as
documentation, rather than having a separate documentation for ActionScript.
However, things didn't work exactly the same.

Perhaps life is better in CFland, but Adobe has seemed to have "good enough?
Then ship! Our devs will figure out workarounds." in their DNA. Looking at
this thread -- <http://forums.adobe.com/thread/507720> \-- it seems ColdFusion
is no exception.

------
kokon
Why must you laugh? If it works, why not?

------
samyvilar
I'm not surprise people would laugh at this back end, it's sort of a who's who
list of frow upon technologies, it's amazing how popularity contests are so
prevalent in tech ...

------
perfunctory
For a webapp written and maintained by one person it does not matter what
tools you use. Just like it doesn't matter what tools you use to build a
doghouse.

------
emehrkay
I've killed a potentially great startup by trying to get the "code perfect"

------
austintaylor
Not using source control.

------
iml
I'm laughing at your front-end, actually.

~~~
mattbillenstein
LOL! Is that a geocities page?

------
bitwize
Because it's big. And dirty.

------
trebor
I laugh at your backend because you need to exercise!

(Just a joke, nothing more.)

------
joshu
aren't micro instances heavily throttled?

~~~
pjscott
Yes. Their main use is for really wimpy applications, or for apps that need
occasional bursts of CPU -- the throttling allows bursts up to 2 compute
units, but you get very little on average.

------
dreww
this stack is... interesting. but the real problem, i think, with what he's
saying, is that it is basically "i refuse to learn anything new that is not
tightly bound to what i already know".

it's true that the laughter is unnecessary, and the trends and hype can be
obnoxious, but it is somewhat about the excitement of always learning new
things and new ways to think.

------
alnayyir
It's less laughing and more "first world paternalistic concern for a third
world nation trashing about".

