Server's filesystem? Are you serious? Welcome to 2013, all the problems you mention are long gone, and are only brought back from time to time by people like you who stopped learning a decade ago. You should check out symfony.com... Or any other framework for that matter! For Christ's sake.
This idea seems like a pretty normal way of seeing the world among PHP developers.
Please allow me to vent/rant -- I'm finishing up a project where your comment resonates loudly with my frustrations.
I'm a journeyman freelance programmer trying to move from doing WPress marketing sites more interesting programming/development problems, and I just got out of a 2 month Magento project (Magento is an MVC-patterned store software that is based on the Zend PHP framework): extending it to allow users to sign in and create their own product listings.
This was my first time building MVC/OOP modules in the context of a framework, and it took a little bit to connect the OOP principles that I've studied to the actual implementation within the larger framework... but the last month has been like "WOW... I can finally see in a pragmatic way why OOP and MVC are both such a powerful tools!"
Not to mention that, since we were working with extending the system, studying that stuff seemed like an essential learning process if we were going to create the system, even if I was only tasked with the "front-end" side of templates and visualizing the things from the database.
However, the senior guy in charge of creating the functionality to manage products for users thought I was from mars-- his application, which was wholly separate from the Magento install and used a separate database, was patterned around directories, with a set of configuration and include files shoved into the head.
He intend me to integrate his functions by shoving his (single, large) functions file into the head of (each of) my template files, and then calling functions to return arrays of information that I could then push into markup.
Apparently, this is "the right and normal" way to do this stuff in the PHP world, and my process of writing modules, extending existing objects, creating routes to view the data through the framework's template system was all stupidly overcomplex.
I learned a lot out of doing that, and the module that I'm building for another client (aMember/Zend) is both smooth and fun because all of the database interactions and template stuff is already in place and just works... and I can focus on the UI Javacript stuff...
but I feel really badly for the project owner of the Magento project, as I feel the codebase is... well mostly a bunch of functions in a single file and a bunch of single-form .php files that make SOAP calls and depreciated mysqli_ calls...
Now, I dunno-- I'm definitely the less experienced programmer, but if this is the norm in PHP programming (surely it can't be), I will be spending my summer trying to build enough projects in other languages that I can transition out of doing PHP.
Sorry for the rant, but it was cathartic for me :D
I feel you, but it's just a matter of finding the right circles. I would never apply for a job just because it says 'php', you have to dig deeper. At this point in my career, I would never accept a freelance gig like the one you described, because I know how that goes.
You don't need to try other languages, do it only if you want to. If you wanna save time just take my word, Symfony2 has nothing to envy to Django or Rails (I have used them and also digged into their architecture). In fact, it's more modern and better designed.
I'll leave these links here, you might find them useful:
- http://silex.sensiolabs.org/ (minimalistic version of Symfony2, it's called Silex, and might be useful for small websites)
If you still want to try something else, try something that has nothing to do with all this, like Clojure. For example, Ruby/Rails is the same as PHP/Symfony2, you won't learn much. I jumped into Rails and just started coding, because I already knew web development, I wasn't impressed, the differences were mostly syntactic sugar, monolithic vs decoupled, and issues like the lack of interfaces and type hinting. But Clojure? Mind blown. I'm gonna spend my next summer learning more Clojure, because I already know it's my perfect language, but it's hard and full of new concepts. Meanwhile, php/Symfony2/nginx is my perfect stack for web development.
Thanks for the detailed reply and list of sources... while I hadn't really seen PHP-FIG, several of those links show up as read in my browser. Lots of good concepts, and I will definitely take a read through them over the next week.
I agree that the answer is being more selective about who I work with-- logically, I can probably write terrible code in about any language. For this last contract, it was more a case of having a one of my main clients that I do other projects with hiring a firm.
I didn't apply for it so much as "oh, the project is Magento? I'd really like to work with that", and the getting on as part of the program because I was pretty familiar with the overall project goals and I'm good with javascript/css/html and was hoping to gain a little experience in how Magento templates operate... but I did learn a lot, and I have lot better idea about what kinds of approaches that I am willing to work with.
Symphony2 looks like an entirely reasonable choice for a framework. I spent some time this year working on adding functionality to a cakePHP project, but that felt a little lightweight compared to other things I've been working with... though that is just a general feeling.
I had been trying to get Zend2 and Doctrine working, but I had to run it in a VM-- it wasn't playing well with my normal OSX environment... I eventually had it running and was building a really basic project with it when I got busy last fall.
So, anyhow-- symphony2 is now on my list of "build a really basic project in this framework": thanks :D.
Do you even Bitcoin? One of the main features of Bitcoin is that it can't be manipulated by a central authority like a bank or government (ie: they can't steal from the people by printing money).
No but I lift, .... mostly functions, sometimes they have multiple variables ;-)
> One of the main features of Bitcoin is that it can't be manipulated by a central authority
Q: What can a central authority with power to imprison and/or garnish your wage manipulate? A: anything it damn wants.
Yes the Fed Gov. can't print more bitcoin it sure can come after you with a rubber hose expecting to get some sales, or money exchange tax some rather-made-up-new-law-tax. A few high profile case about bitcoin used for terrorism, drug, illegal porn, money laundering and these new laws won't be hard to make.
By themselves, laws don't prevent actions (see copyright infringement), you need enforcement, and if a very large fraction of the population starts using Bitcoins, it can be very hard to stop, at least without taking some very drastic measures.
My guess is that the US government would just get enough computing power to control the network and prevent it from working well.
The latter seems very likely if btc every became really popular. It would probably send the United States into a radical depression and destroy its economy, but by then the ~500 Americans that own the world would have flown the coop anyway, and all that USD they had would still be worth something.
I guess this comes up kind of in response to the google thing. Honestly I don't know why people keep using anything from google. About two years ago I decided I would never use a google product again, and I never looked back.
For RSS, I have been using Liferea since then, and I totally recommend it.
RSS is a good example of an area where having an application be backed by a service brings huge value to a lot of people. If you want to access your feeds from multiple different machines, synchronization becomes awkward with a purely local app. It gets even more awkward if you want to do it from multiple different platforms.
You could use some commercial non-Google service as the backend instead, but those could equally well get cancelled.
You could maybe host your own service and have full control, but the installation and maintenance is a huge time sink. And in both cases the amount of applications you could choose from is likely going to be smaller than with Reader.
There can also be other benefits in sharing the service with other people. For Reader, the infinite feed history was a biggie for me. It really was quite amazing to subscribe to a 4-year old podcast, and have easy access to all the 200 podcasts from that period even if the current feed only showed the 10 latest ones.
(I used Liferea for a while maybe 10 years ago, and even contributed some code at the time. But ultimately even the web-based RSS readers of 2005 had a better workflow than a local RSS reader. Sure, the UI sucked and you were completely at the service provider's mercy. But at least it was possible to access your feeds both from work and from home.)
Liferea is worse than useless for me, it's downright dangerous: I procrastinate enough as it is, I don't want an RSS reader than I can only use when I'm at my computer and most probably should be working! RSS readers go on the tablet or phone to check in my spare time.
Liferea supports Tiny Tiny RSS sync, so that could be it. You can host http://tt-rss.org/ and use Liferea as desktop app (and may be the web interface for mobile).
In fact that's the only part that I really liked of Google Reader: it was the perfect backend (I got used to the web interface, but the real experience was with the native apps).
It would be nice to have a "standard" API for RSS sync that could be implemented by servers and clients. In that way we could host our own RSS backend in the same way we run a SMTP and IMAP servers to have our own independent email infrastructure.
Tiny Tiny RSS API could be a good start, or we can agree on a Google Reader compatible API.
I've used liferea with google reader for some time to keep things synced between computers and devices. I really hope some of those projects to keep that API alive bear fruit just for that. Though I have seen liferea become non-responsive when having 1000-2000 feeds to check (like other places, i just add stuff and never delete, because there's too many to sort through...)
Probably not, but we are talking about the CAPTCHA itself :)
You raise a good point about making captchas that target your target audience in that they aren't really designed to keep out bots, but humans who wouldn't fit in. This looks very much like that sort of captcha.
I have so many plugins in my Firefox for blocking stuff, that I'm not sure how to whitelist anymore. The other day I wanted to whitelist sleepyti.me to see how he had placed the banner, and realized I couldn't.