It certainly won't be quite as fast as idiomatic Java code, but it should be considerably faster than other non-local exit implementations that rely on exception handling to manipulate the stack.
2,116 karma · joined August 14, 2007
It certainly won't be quite as fast as idiomatic Java code, but it should be considerably faster than other non-local exit implementations that rely on exception handling to manipulate the stack.
Furthermore, trying to implement fork queues, pull requests, and even proper contributor attribution atop Subversion would be a ridiculous amount of work for very little gain.
Regardless, if you really want to stick with Subversion, you might at least consider setting up a cron job that fetches to a local git-svn mirror and then pushes a clone to GitHub. You won't have to learn a whole new version control system, and your users will happily run circles around you with their ability to fork, branch, and merge before you can copy your source tree into a new tag.
How many Rails apps out there can handle more than, say, 200-300 concurrent clients without either pegging the CPU or bringing the database to its knees?
Putting Passenger behind Nginx just removes a need to install + configure Apache for folks who are already use and like Nginx. It may also have some benefit on memory-constrained environments like entry-level VPS hosts.
That being said, I personally think that folks who spend days or weeks tweaking their deployment to run in <256MB of RAM to save a few bucks a month on hosting should probably reevaluate their priorities.
The difference in resource usage is due more to the fact that Apache is written to be a sort of generic network service platform, rather than a lean-and-mean HTTP server. It allows plug-in modules (whether written in C, or any of the mod_perl/python/ruby/etc. dynamic language bindings) to interact with just about any stage of request processing. In addition, a default Apache install will usually link a large number of other modules in each worker
That being said, tuning Apache for performance + minimal resource usage is a bit of a black art. If you're not comfortable configuring + building your own server package from source, it's probably easier to just grab Nginx and be done with it.
My parents made less than $30k combined when I entered college in the late 90s. I dropped out after my freshman year, worked as a restaurant cashier and temp for about six months, then managed to land an entry-level media production job at a startup. Since then, I've slowly clawed my way up to a decent development gig at a major systems player in Silicon Valley, all without the benefit of a college degree, or any major financial support other than my own earnings.
Even several years after I first "broke in" to the industry, however, I've had entire years where I made only a few thousand dollars. If you're willing to live in shared housing, eat a lot of cheap stir-fry and soup, and occasionally suck it up and ask a friend or family member for a couple of hundred bucks to make rent that month, you can weather some pretty drastic changes in your income.
Regardless, after a decade or so of working as a developer, I've found that the lack of a college degree matters less and less. Am I less likely to be on the short list of folks to get promoted to upper management? Almost certainly. Does that bother me? Not really. I like writing code, and am happy to continue doing so until something else seems more interesting.
The baseline they quoted was 2MB, which may not be much when you're talking about a desktop app downloaded over cable or DSL, but in the mobile space, where (non-iPhone) devices may only ship with 50-100MB of storage free, and many users are served mostly by poky EDGE networks, a multi-MB "hello, world!" seems a bit excessive.
That being said, for their core market -- namely, developers porting enterprise app UIs to mobile devices -- I think it could be an acceptable tradeoff for the productivity gain that results from it being "just another browser app".
Of course, it took them a few years longer than he thought to get there, but the basic idea is sound.
I find it honestly hilarious to hear it suggested that one of the early high-volume Rails shops should stick with "safe" language choices because they won't be able to hire enough developers to work with a new language.
I've read through the sources to Kestrel, and found them quite easy to grok. If anything, most real-world Scala code seems to be essentially very clean Java, with much of the syntactic cruft (redundant type declarations, inner classes, 'public static final' declarations, etc.) removed. Any experienced, effective developer is going to spend far more time getting to know your in-house APIs and coding style than they are the language.
Eventually, more servers == more headcount.
Within that niche, Rails does a fine job. For infrastructure and middleware code, however, Rails has little to offer other than the Ruby language, which has serious issues when applied to time + memory-intensive problem domains.
I'm a huge fan of Ruby, and a (perhaps somewhat begrudging) user of Rails, but that doesn't mean I think they're the right solution to every problem.
Secondly, any "ranting" you hear in this article is the product of El Reg, not Alex. He mostly offered a calm, positive presentation about the improved speed (with relatively little, if any, tradeoff in developer productivity) that came from using Scala instead of Ruby for critical infrastructure services.
Regardless, most Java web applications' performance issues stem from framework-itis, not from the underlying runtime. By itself, Tomcat (or another modern Java servlet container) is capable of some pretty impressive throughput -- perhaps not on par with a lean, pure C server like nginx, but not nearly as limited in functionality and extensibility, either.
No matter what you think about Java the language, you at least have to admit that HotSpot blows MRI, YARV, the Python VM, and Parrot out of the water when it comes to raw performance on low-level code. That doesn't save you from bad implementation ideas, but it does at least give you the possibility of getting fast, efficient code, if you have a decent compiler and work fairly close to the metal.
Using Scala is one way to produce that sort of low-level implementation code without wanting to gouge your eyes out (which is how most Java source tends to make me feel, anyway).
Writing extensions for Git is rather different, since you effectively can't. To extend or build on Git, you end up doing a lot of shelling out to the 'git' binary with use of 'raw' output formats and regexp-based scraping. It's pipes and shell subcommands all the way down, instead of a library-style programming API.
Which you prefer depends a lot on the diversity and preferences of the community using your repositories. Mercurial pushes you towards usability and single-language (Python) solutions, while Git easily drops into a classic UNIX-like "lots of little scripts" solution.
I've got some notes on the subject on my blog:
Torrent files of MP3s and TV shows don't, as a general rule, mis-represent the original creators of a work. Because of that, they can still drive real revenue for those artists -- people may initially acquire an album or episodes of a TV show illegally, then go on in the future to pay for new content from the same people.
Doing a copy-and-paste job on someone else's blog content, however, breaks the link (however tenuous) between author and reader, which means that the author is unlikely to ever see anything of value back from the interaction. Not only are they deprived of direct financial (AdSense) and social (search rankings, public visibility) benefits, they are robbed of one of the most valuable commodities available to a blogger: direct feedback from interested readers.
We're still in beta, so you'll need an invite in order to actually create a project. Hit me up via email (my HN username at gmail.com) and I can pass along an invite if you're interested.
var forSale = {
"book": {"price": 19.95, "description": "a book", "checksum": "c6da835c1fd2ee98d68eee3912dd199e41c82a32"}
}
The value for 'checksum' is just a SHA1 hex digest of the ('book', '19.95', 'secret'), joined by tab characters. It can be included as a hidden form field or invisible element within your page; it doesn't matter so long as you can capture it and POST is along with the item + price.In your order-processing logic, just check that the hash verifies with your secret key ('secret' in the above), and you know with a reasonable degree of certainty that the original page was one generated by your server.
How many of the other folks here started out just as described in this article: namely, writing silly little BASIC programs for early Commodore, Apple, or DOS systems?
There are a handful of projects aimed at just this niche (Scratch and Greenfoot, for example) but none of them come standard on any new system. That lack of immediate availability means that kids have to actively seek out the tools + have the ability/privileges to install new software before they can even start experimenting with something like this:
10 PRINT "JENNY HAS COOTIES!"
20 GOTO 10As an alternative, you can use Point-In-Time-Recovery (PITR), also known as "log shipping", to transfer copies of your write-ahead log files from a master server to a warm standby. PITR allows you to have an exact replica of your master database, modulo whatever delay you incur in the log transfer itself.
For those who haven't aren't familiar with write-ahead logs, they function much like the logging in modern filesystems: changes are written there before being flushed to disk, so any incomplete transactions can be replayed from the logs if the server goes down unexpectedly.
Of course, the log-shipping method doesn't allow your secondary server to serve as a read-only replica as MySQL's built-in replication does. Largely for that reason, (depending on your workload and requirements, of course) MySQL may be a better choice. However, I've found Postgres PITR to be an excellent option for low to medium-traffic databases in those cases where I'm willing to trade the possibility of the loss of a few seconds' updates for guarantees that my DDL, object identities, and constraints will be maintained consistently between my replicas.
For those who are curious, the PostgreSQL docs online have a decent introduction into the use of write-ahead logs for replication and backups:
I'm not trying to defend the public-sector model -- there are obvious inefficiencies, and many of the best potential hires would never even consider a government job for many of the same reasons you suggested. I'm just not sure how better to balance the need to be accountable to the taxpayers with the desire of administrators to pay their staff according to ability, not just seniority.
...and we all know how well those sorts of tests measure real learning and intelligence, right?
Think of it this way: in private firms, employees who demonstrate mastery of both their own specialization and "people skills" are promoted to management, so that they can guide and support the next generation of workers. They are paid more for this than their employees, in part due to the fact that not everyone can do what they do. Similarly, teachers have to balance knowledge of the actual material being taught, and all the "soft" skills of classroom management: facilitating discussions, maintaining discipline, keeping emotions and energy on an even keel.
Any manager who could effectively herd 30+ techies would be lauded as worth their weight in gold; why then isn't a teacher who does the same thing with as many children (a harder task, to be sure) appreciated as the deft administrator they must be?
Music is more than a product -- live performance is a social experience, not just private consumption. People go to see bands live for many reasons other than the rendition of notes they could get from a recording: they flirt with other concert-goers, they experience mistakes and improvisations by the artists, and they drink and dance in public.
Similarly, good teaching is not a solitary or entirely reproducible event. The best teachers I've ever had were the ones who could get students talking to each other, generating and assessing ideas faster than any one pupil could alone. You can't get the same experience reading a textbook or watching time-delayed streaming video of a lecture. I'm not even entirely convinced that online interaction can pull it off, at least in areas like history and the arts, where subjective and emotional arguments are just as critical as hard logic.
The problems (and attempted solutions) the article's author described sound to me like they all stemmed from a lack of interest in paying any attention to the market. He admits that the most prominent and loyal types of coffee shop customers (commuters who just want to grab a cup for the road, and laptop warriors who want to sit tight and work for several hours) weren't interested in his business, and then seems surprised that he failed to make a profit? Color me unsurprised.
You can make money in the service industry, eventually -- but you have to provide something that people want. Simply being in love with your own clever ideas is seldom a good path to profitability.
I would call that person a co-founder, not a CIO, and a particularly over-burdened one, at that.
While any college likes to tell potential students and parents that they'll teach their students "how to learn," the truth is that most kids do still have a lot of cognitive development to do at 18 years old, and even more social and professional. Being able to spend several hours a day arguing about complex and nuanced subjects with other bright young people (all under the supervision of a facilitator with a very high level of expertise in the subject under discussion) is an almost priceless experience.
That being said, it shouldn't cost $50k/year just to be able to have those discussions. Moving some of the content online will help (though some amount of face-to-face interaction is still a must to develop good social graces IMHO). Cutting down on the level of pampering should be a first step, too -- at 19 years old, there's little excuse for someone to be unable to cook for themselves, or find a place to live.