Those two things are not mutually exclusive.
3,071 karma · joined June 14, 2010
[ my public key: https://keybase.io/pewpewarrows; my proof: https://keybase.io/pewpewarrows/sigs/qM3v1iGt_COVZCU_O2mROjyzm71RRe7OPofffpSynmg ]
Those two things are not mutually exclusive.
Apologists post in threads like these time and time again, whether the argument is for them using PHP, SVN, or whatever. My reply boils down to this:
Sure, you can construct a home using nothing but straw and mud. And because the house is still standing at the end of the first day, you convince yourself that those are good materials for your next job. But don't kid yourself. Straw and mud are not good, modern tools for construction. You're going to be looked down upon by the rest of your industry that moved on to wood, brick, and cement. Deal with it.
As for production, going with a fleshed-out service like NewRelic makes more sense to me. If I see slow queries start happening I'd want a broader report of what's going on in my system, not just a map of the query to a controller/action.
Also, Chef/Puppet aren't "alternatives" to something like Fabric. Use the former for server provisioning, and use the latter for actually kicking off the deployment process. Trying to shoe-horn the finer deployment steps (git checkout, tarballing, symlinks, building the virtualenv, etc) into Chef was a nightmare every time I tried. Those tasks are better suited for Fabric's imperative design. Plus you can just run any Chef commands from Fabric itself, or use something like pychef for finer grained control. It's a win/win.
https://github.com/kennethreitz/envoy
For reference, he's the same guy that did the Requests module, which is pretty much the defacto standard for avoiding urllib hell.
/s
1. Decide if the core of the site is undoable without JavaScript. Something like Google Docs or games relying heavily on Canvas/WebGL are prime examples. It is very rare for this to be the case, but if it is then disregard the rest of the steps.
2. Build the entire site without even considering JavaScript as an option. The advantage of this is I can finish all functionality without opening my browser window once. I build out the core with unit tests, and assert the base user workflow using integration tests that can simulate things like form submissions to route end-points. My test suite is now a constant confirmation that my site works with JavaScript disabled.
3. Open up the site in a browser, and begin the design & UX portion of development. Because the site is essentially feature-complete and tested already, I can have a lot of fun experimenting in this stage, tweaking things to my heart's content.
4. I slap this on the page after I'm satisfied with the enhanced UX that design and client-side scripting provides:
<div class="jsnotice">
We notice that you currently have Javascript disabled. While this site is fully accessible
without it, you're still missing out on some pretty neat features. We work tirelessly
to ensure that our scripts are small, unobtrusive, and do not harm your user experience.
Please add us to your whitelist, or <a href="//enable-javascript.com/">enable Javascript in your browser</a>!
</div>
Using Modernizr, that class only shows if JavaScript is disabled. The message itself is unobtrusive, and I always provide a way for the user to dismiss it permanently. If I want, I go into a little bit of detail on what "features" they're not experiencing fully.The actual internals of both are a complete mess, and trying to get them to do anything outside of trivial blog hosting and content management is a nightmare.
Just because you don't know of any Python/Ruby/Java "apps" doesn't mean they don't exist. Jenkins, Redmine, Trac, etc.
I don't even want to sum up the amount of time that Django would have solved my problem instantly, but instead I had to pull my hair out dealing with Flask's global variables, circular dependency issues, and general lack of cohesion or standards. I think it's a great micro-framework if you're writing a one-python-file personal site or blog. Anything larger than that and you're going to regret it.
Associated HN discussion: http://news.ycombinator.com/item?id=2592741
And not that it's relevant, but I like Microsoft's products. I think their direction of the latest Windows Phones are great. I'd rather they didn't resort to cheap tricks to try and "prove" that their product is better.
In this case, it was to show the weather of two different cities. The only reason the contestant won was because he happened to need that information enough in his day-to-day life to warrant the two separate weather widgets on his home screen. The Microsoft representative obviously knew what the challenge would be going in, and already had the tiles ready to go.
All of my work-related communication happens over internal Jabber, IRC, or Skype.
AIM, like MSN and ICQ before it, has gone the way of the dodo bird in every tangentially related social circle that I've touched in the last 5 years. Frankly I'm not surprised in the least that their tech team was supposedly all laid-off... I didn't even know that one still existed for the product.
Yes, I've used Cakephp. It's a slight improvement.
- Error messages that are often nowhere near where the problem is, and sometimes contain no stacktrace
- PHP-provided function names are inconsistent and follow no set convention, mostly because the language was built without Objects or Namespaces
- The arguments to PHP-provided functions are arbitrarily ordered (such as array manipulations, and string searching). I have to look them up every... single... time.
- Core features of basically every other popular dynamic language took years to arrive in PHP. Hell, it didn't even get a real shorthand array syntax until a few months ago.
- Backwards design decisions, such as having sort-related functions modify data structures in-place.
- Completely insecure on a default install. No directory traversal protection, combined with having urls map directly to on-system files, is a recipe for disaster.
- No isolation or easy support for simultaneous PHP working copies. If I want to work locally on 2 separate PHP projects, each requiring different PHP versions and different (often conflicting) libraries, I have to pollute my entire global workspace.
I could go on, but it's making my blood boil recalling the times I had to deal with this foul stain of a language. There is no reason for a self-respecting developer to ever choose it, especially when alternatives like Python or Ruby exist. Period.
PHP is the training wheels of the server-side language world. You can pick it up and almost immediately see results on any number of popular hosting providers that provide support out of the box for it. That's why you see it so much.
Obviously everyone has different sensitivities, but if you cannot objectively identify sexism of both men and women in advertisements, yes you're a hypocrite.