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.
"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."
The biggest objective problem this style has is that it affords everything-injection; cross-site scripting attacks, SQL injection, command injection if you're using shell commands, etc. Every time you bash one string together with another one, you run the serious risk of introducing a security attack, and with this style of programming, you basically have to be thinking about every single string concatenation.
Using a framework that will take some of the cognitive load off can be a net gain. It need not be a Glorious Framework, it just needs to be something that makes doing the right thing easier than doing the wrong thing.
Otherwise, most of the rest of the pain will be felt by you, not your customers, so hey, whatever, go nuts. But this is a legitimate objection to this approach. (And a legitimate objection to every framework that fails to make the right thing easier than the wrong thing, which is still a great deal of them.)
I have respect for people that can deliver, regardless of what they use. The allure of cool tech is strong but tech doesn't make products: people do.
I cannot see what is wrong with your using plain PHP if you can get the job done faster (as long as you avoid things that make exploits easy, such as raw mysql db functions). When the time for a framework comes, you'll know.
Stop worrying about what others think and good luck!
Use what works for you. For me, the main benefit of a framework is scalability of new developers. If you have to bring on someone else to extend & maintain your code, it's incredibly helpful to be able to point them to documentation.
nhashem, wow you really hit the nail on the head. So accurate it's scary. I too, thought I was the only one who put DOING before "ramping up and learning some stuff so that I can maybe do some things a few weeks from now." And of course Pud for the courage to be honest about how he's working.
So many times in startups and new endeavors, getting things out is far more important than doing it "right". It's stinky, but it's a reality. If your checkbook, bills and time say one thing but your code says another, your checkbook/bills/time win - always. And the person who can pump out more working (working, not necessarily pretty/proper code-wise or stack-wise) apps wins (even if they lose, they win, based on odds - more attempts means more possible chances at winning).
I'd really, really, really advise you at least check out a framework :) Spend 10 minutes reading the documentation behind CodeIgniter (http://codeigniter.com/) and you'll see that you can have more time to spend developing, e.g., features, as the framework has taken care of the routine and mundane stuff.
As a note, I would recommend Kohana (http://kohanaframework.org/) over CodeIgniter, but if you're pushed for time, you don't want to deal with a sparsely-documented framework ;)
I was like you back in the day, then I tried using one of the new frameworks (it was Django) and I was like why didn't I do this earlier, it would have saved me a bunch of time from all the stuff it does for me and the less writing I have to do.
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.
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.
>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.
It's not just the emphasis on tools. Context matters too. I know that pud was trying to make a narrow point, but it's interesting to note that the blog doesn't mention the problem he uses the tools for or the rest of the context. There's a lot of that in the industry as well.
I would extend this to just about anybody who could be considered a "geek". Photography, Programming, Writing, everything. There is so much discussion over tools and process that everyone forgets to actually make stuff.
Which reminds me, I should stop reading HN and get back to work.
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?
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.
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
"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.
> Most techies who have a negative opinion about any technology do it with hearsay and not first hand experience.
I've used PHP. Trust me, it sucks. It's not worthless, you can certainly build successful whatevers with it. But, it will suck. Perhaps in ways you can't even imagine cause you've never learnt a non-sucky language/system.
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.
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).
It's like arguing about what colour is the best. It's pointless.
I have a theory that people act this way because of evolution.
--------------------
Imagine you live in a tribe of 10 people, and there are 5 different ways the entire tribe can use to hunt animals for food. All 10 people must hunt together, and each of the 5 ways are equally successful.
After an animal is killed, the tribe determines who was most responsible for the kill, and he/she gets to pick and eat the tastiest meat before anyone else. Others' still get to eat, but it doesn't taste as good.
If all 10 hunters are equally skilled, each will get tasty meat 10% of the time regardless of the hunting method. But humans are not all equally skilled. Some can throw spears better than others. Some can run fast. Some can sneak up quietly. Some can climb trees. Some can wrestle a wild bore.
So what happens? Before a hunt, if you're a fast runner, you say "Let's chase after an animal!" If you can climb trees, you say "No, let's drive an animal up a tree, and climb up to kill it!" You push for the option which gives you the best chance eating tasty meat, and do everything you can to stop any other hunting methods.
Things get political. Someone says; "Running after animals is too much work! Lets climb trees instead!" You say; "Bullshit! Climbing up trees is for pussies. Real hunters run after their food! Plus, we have to see your nasty balls every time you climb up!" You support your cause, and do everything you can to demonize and discredit other options.
Through politics, arguments and fights, you might be able to sway the majority opinion of your tribe in your favor. "Yeah, I guess I don't really like climbing trees either; I'm sick of seeing that guys balls too. Let's run instead!" Now, your entire tribe runs for food, and being the fastest runner, you get tasty meat more than 10% of the time.
--------------------
So my theory goes, when you see someone arguing about something pointless like Windows is better than Linux, even though both are pretty good, what they're really trying to do is sway the opinion of the entire world in their direction. If every company dropped Linux in support of Windows, there would be a lot of Linux sys-admins and programmers out of work. Sure, they could learn Windows, just like a slow runner could learn how to run fast, but they would be at a disadvantage compared to seasoned Windows admins.
The same thing happens with programming languages and APIs. These can be very volatile, going from extremely popular and hot, to nobody wants to touch them in a few years.
When you see someone arguing about what color is better, they're using the same algorithm, only it's firing on something seemingly trivial. But is is? Perhaps if you convince enough people that red is better than blue, the next Macbook Pro you want to buy will end up red instead of blue. Unlikely, but possible...
I don't hang out with a lot of programmers and I guess this is the reason. This "laughing" the op alludes to.
Actually, what this means is that you shouldn't hang out with douchbags, programmers or not. As I can guarantee you, there are just many non-techie douchbags as there are techie ones.
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".
Didn't knew about them either. Not too worried about the home page having hickups earlier as it isn't their database cloud. But, I'll definitely do some testing around this/these MySQL MySQL cloud service(s). Something I haven't looked at before and sounds too good to be true.
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.
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?!?
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.
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.
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.
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.
> 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.
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.
Yes. But people write crappy code in [your preferred language] too. There's nothing inherent in CFML that forces people to write bad or hard-to-understand code.
> OMG can you believe some people still use TABLES???
The whole post boils down to what appears to be proud, willful ignorance.
Perhaps, but I kinda liked the contrast to the constant stream of proud, wilful "Clojure/CoffeeScript/CaramelMacciatoScript is the new black" hipster-sounding posts on HN.
For the record, I find the dogma around tables kind of grating at this point. I understand that table-based layouts get complex and it can be difficult to develop an accurate mental model, but the same goes for regular divs and CSS, especially considering all of the hacks necessary for IE to render CSS semi-properly. I don't know of many browsers that struggle with tables.
While I agree that it's a good general rule to use CSS/divs, if something is taking too long, my philosophy is that you should just make it easy on yourself and break out a table, especially if the layout is something obviously tabular visually.
> Why did the OP take an entire blog post to say what could have been posted to Twitter ("you darn kids and your twittin'!")?
How many blog posts couldn't be boiled down into a twitter post? The fact that something can be transformed into a 140-character blurb for teenagers with short attention spans does not mean that it should be.
> The whole post boils down to what appears to be proud, willful ignorance.
You whole comment really comes off as a bit short-sighted at best. The whole point was to share the way he gets stuff done. The fact that you do things a different way does not make his way wrong. Automatically assuming that your way is best is a sign of professional immaturity.
>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.
Is there are good replacement for HTML tables yet that works well in all browsers?
I'm talking about for things that actually need to be laid out in a grid, which, in my experience, is many things. Grids are fairly fundamental to layout and design.
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.
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.
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.
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.
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?
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.
[+] [-] nhashem|14 years ago|reply
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.
[+] [-] jerf|14 years ago|reply
The biggest objective problem this style has is that it affords everything-injection; cross-site scripting attacks, SQL injection, command injection if you're using shell commands, etc. Every time you bash one string together with another one, you run the serious risk of introducing a security attack, and with this style of programming, you basically have to be thinking about every single string concatenation.
Using a framework that will take some of the cognitive load off can be a net gain. It need not be a Glorious Framework, it just needs to be something that makes doing the right thing easier than doing the wrong thing.
Otherwise, most of the rest of the pain will be felt by you, not your customers, so hey, whatever, go nuts. But this is a legitimate objection to this approach. (And a legitimate objection to every framework that fails to make the right thing easier than the wrong thing, which is still a great deal of them.)
[+] [-] wynand|14 years ago|reply
I cannot see what is wrong with your using plain PHP if you can get the job done faster (as long as you avoid things that make exploits easy, such as raw mysql db functions). When the time for a framework comes, you'll know.
Stop worrying about what others think and good luck!
[+] [-] drumdance|14 years ago|reply
[+] [-] itrackmine|14 years ago|reply
So many times in startups and new endeavors, getting things out is far more important than doing it "right". It's stinky, but it's a reality. If your checkbook, bills and time say one thing but your code says another, your checkbook/bills/time win - always. And the person who can pump out more working (working, not necessarily pretty/proper code-wise or stack-wise) apps wins (even if they lose, they win, based on odds - more attempts means more possible chances at winning).
[+] [-] mootothemax|14 years ago|reply
As a note, I would recommend Kohana (http://kohanaframework.org/) over CodeIgniter, but if you're pushed for time, you don't want to deal with a sparsely-documented framework ;)
[+] [-] dusklight|14 years ago|reply
[+] [-] dalore|14 years ago|reply
[+] [-] 0x12|14 years ago|reply
[+] [-] infocaptor|14 years ago|reply
look at wordpress, joomla, drupal
[+] [-] Hisoka|14 years ago|reply
[+] [-] acangiano|14 years ago|reply
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|14 years ago|reply
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.
[+] [-] michaelfeathers|14 years ago|reply
[+] [-] tyler_ball|14 years ago|reply
Which reminds me, I should stop reading HN and get back to work.
[+] [-] qaexl|14 years ago|reply
(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...) 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|14 years ago|reply
[+] [-] jsdalton|14 years ago|reply
That said, I'm very confused. The post says these sites are running off of your "awesome" backend:
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|14 years ago|reply
I co-founded both Blippy and AdBrite but did not have technical roles there, so they have nothing to do with this stack.
[+] [-] JasPanesar|14 years ago|reply
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|14 years ago|reply
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.
[+] [-] njharman|14 years ago|reply
I've used PHP. Trust me, it sucks. It's not worthless, you can certainly build successful whatevers with it. But, it will suck. Perhaps in ways you can't even imagine cause you've never learnt a non-sucky language/system.
[+] [-] PedroCandeias|14 years ago|reply
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|14 years ago|reply
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).
[+] [-] dgallagher|14 years ago|reply
I have a theory that people act this way because of evolution.
--------------------
Imagine you live in a tribe of 10 people, and there are 5 different ways the entire tribe can use to hunt animals for food. All 10 people must hunt together, and each of the 5 ways are equally successful.
After an animal is killed, the tribe determines who was most responsible for the kill, and he/she gets to pick and eat the tastiest meat before anyone else. Others' still get to eat, but it doesn't taste as good.
If all 10 hunters are equally skilled, each will get tasty meat 10% of the time regardless of the hunting method. But humans are not all equally skilled. Some can throw spears better than others. Some can run fast. Some can sneak up quietly. Some can climb trees. Some can wrestle a wild bore.
So what happens? Before a hunt, if you're a fast runner, you say "Let's chase after an animal!" If you can climb trees, you say "No, let's drive an animal up a tree, and climb up to kill it!" You push for the option which gives you the best chance eating tasty meat, and do everything you can to stop any other hunting methods.
Things get political. Someone says; "Running after animals is too much work! Lets climb trees instead!" You say; "Bullshit! Climbing up trees is for pussies. Real hunters run after their food! Plus, we have to see your nasty balls every time you climb up!" You support your cause, and do everything you can to demonize and discredit other options.
Through politics, arguments and fights, you might be able to sway the majority opinion of your tribe in your favor. "Yeah, I guess I don't really like climbing trees either; I'm sick of seeing that guys balls too. Let's run instead!" Now, your entire tribe runs for food, and being the fastest runner, you get tasty meat more than 10% of the time.
--------------------
So my theory goes, when you see someone arguing about something pointless like Windows is better than Linux, even though both are pretty good, what they're really trying to do is sway the opinion of the entire world in their direction. If every company dropped Linux in support of Windows, there would be a lot of Linux sys-admins and programmers out of work. Sure, they could learn Windows, just like a slow runner could learn how to run fast, but they would be at a disadvantage compared to seasoned Windows admins.
The same thing happens with programming languages and APIs. These can be very volatile, going from extremely popular and hot, to nobody wants to touch them in a few years.
When you see someone arguing about what color is better, they're using the same algorithm, only it's firing on something seemingly trivial. But is is? Perhaps if you convince enough people that red is better than blue, the next Macbook Pro you want to buy will end up red instead of blue. Unlikely, but possible...
[+] [-] Goronmon|14 years ago|reply
Actually, what this means is that you shouldn't hang out with douchbags, programmers or not. As I can guarantee you, there are just many non-techie douchbags as there are techie ones.
[+] [-] reinhardt|14 years ago|reply
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|14 years ago|reply
[+] [-] jeromeparadis|14 years ago|reply
[+] [-] freshhawk|14 years ago|reply
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|14 years ago|reply
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|14 years ago|reply
[+] [-] bobstobener|14 years ago|reply
[+] [-] rmason|14 years ago|reply
If you're not on 'CFML entrepreneurs' on Facebook you should be.
[+] [-] blantonl|14 years ago|reply
good times... good times..
[+] [-] encoded|14 years ago|reply
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|14 years ago|reply
> 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....
[+] [-] rmason|14 years ago|reply
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://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.
[+] [-] pud|14 years ago|reply
> Some people write crappy code in CFML.
Yes. But people write crappy code in [your preferred language] too. There's nothing inherent in CFML that forces people to write bad or hard-to-understand code.
> OMG can you believe some people still use TABLES???
view source
[+] [-] reinhardt|14 years ago|reply
Perhaps, but I kinda liked the contrast to the constant stream of proud, wilful "Clojure/CoffeeScript/CaramelMacciatoScript is the new black" hipster-sounding posts on HN.
[+] [-] cookiecaper|14 years ago|reply
While I agree that it's a good general rule to use CSS/divs, if something is taking too long, my philosophy is that you should just make it easy on yourself and break out a table, especially if the layout is something obviously tabular visually.
[+] [-] dpark|14 years ago|reply
How many blog posts couldn't be boiled down into a twitter post? The fact that something can be transformed into a 140-character blurb for teenagers with short attention spans does not mean that it should be.
> The whole post boils down to what appears to be proud, willful ignorance.
You whole comment really comes off as a bit short-sighted at best. The whole point was to share the way he gets stuff done. The fact that you do things a different way does not make his way wrong. Automatically assuming that your way is best is a sign of professional immaturity.
[+] [-] drblast|14 years ago|reply
Is there are good replacement for HTML tables yet that works well in all browsers?
I'm talking about for things that actually need to be laid out in a grid, which, in my experience, is many things. Grids are fairly fundamental to layout and design.
[+] [-] unknown|14 years ago|reply
[deleted]
[+] [-] eapen|14 years ago|reply
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.
[+] [-] kakuri|14 years ago|reply
[+] [-] 51Cards|14 years ago|reply
[+] [-] radagaisus|14 years ago|reply
CFML verbosity and the entangled html is a downer though.
[+] [-] st0p|14 years ago|reply
[+] [-] dclaysmith|14 years ago|reply