Signal vs. Noise
Latest Comments
Reply | Original | Permalink | Share | TweetHi David,
I was thinking about that just yesterday at night and was planning to try differente approaches.
Thank you!!!
Reply | Original | Permalink | Share | TweetMarten, I wouldn’t use default_scope for this. Anchoring off the current account makes it explicit that there’s a security scope in place. I like better to follow the path of execution like this.
IMO , default scope should only be used for things like a natural order, like “updated_at DESC ”.
Also added a noscript block with just a link to the code example.
Reply | Original | Permalink | Share | TweetJust a wee blog usability heads-up. Browsing with JavaScript disabled (the way I roll) nothing at all shows up for this post – not even an indicator that something isn’t showing up.
You also might want to check your error message on a JavaScript disabled form submit.
I’ll be bookmarking the code though so thanks. This is definitely something I will need.
Reply | Original | Permalink | Share | Tweet@nathan – the cache [ array, here ] do syntax is Rails 2.2
Reply | Original | Permalink | Share | TweetJust a quick nit: 50ms to 100ms would count as 100% worse, but 100ms to 50ms is “only” a 50% improvement. You’d have to achieve 0ms to improve by 100%. :) (Your point is still absolutely valid of course. And to reiterate the comments of others, these kinds of posts are great, thanks!)
Reply | Original | Permalink | Share | TweetHi David,
It appears as though you’ve overloaded ActionView::Helpers::CacheHelper#cache with your own implementation. Are there any gotchas to using ActionController::Caching::Fragments & configuring ActionController::Base.cache_store to use :mem_cache_store? Or alternatively, using Chris Wanstrath’s cache_fu?
Reply | Original | Permalink | Share | Tweetfair point here: http://jeremy.zawodny.com/blog/archives/010841.html
Reply | Original | Permalink | Share | TweetSweet Thanks,
Can you make it a bit simpler next time? :o)
Reply | Original | Permalink | Share | TweetThe modern way for step 4 would probably be by using default_scope, right?
Reply | Original | Permalink | Share | TweetThank you.
Reply | Original | Permalink | Share | TweetHi, Justin here from Xero.We have launched our Global version (http://blog.xero.com/2008/12/were-global/) so please do check out our free online demo.‘AC’ – you can upload statements currently in OFX and QIF formats into Xero.Please contact me at justin.keen@xero.com if you have any further questions.
Reply | Original | Permalink | Share | TweetDoes Xero work with US banks?
Reply | Original | Permalink | Share | TweetThe problems with RDBMS and sharding is that relational databases were never designed for it. By using sharding, replication, read load balancing – naturally you need to sacrifice some of the benefits and complexity of RDBMS .
Transactions – no way you can consistently use them in a sharded environment. Foreign keys between shards? No-go. Thus you also sacrifice enforced (and immediate) consistency that comes with a well-designed relational database. In the end you need to add extra layers (in app or db proxy?) that handle sharding, system becomes quite complex… Not to mention the scenario when an application was not designed for sharding – scaling such systems can be really painful.
Sure there are several ways you can shard your data to keep some (most) of benefits of RDBMS but I would still call this design “hacking”.
On the other hand systems like CouchDB becomes an interesting option. It it much simpler in implementation, less complex but very powerful. Come on – on very large, high-traffic systems the role of DBs is very often reduced to “keep the data” (i.e. less logic, less enforced consistency…), while more specialized tasks are moved to external resources (maps, filters etc.).
I dare say that high-volume and high-traffic projects would benefit much more from scalable solutions than from hacked, partitioned and clustered RDBMS . Compare Amazon’s SimpleDB (configure in minutes, scales to zillions, but still a bit poor query options and limits) to custom MySQL or PostgreSQL replicated / sharded cluster that takes a handful of engeners to set-up and maintain?
Many projects need “database” storage that is easy to configure and easy to scale.
Recently we have been also looking at CouchDB. This is not relational, not transactional, but a document-oriented database. I think the project is worth watching in 2009 and IMHO could become a huge success.
Reply | Original | Permalink | Share | TweetHey David, Any thoughts or plans on implementing some sort of BigTable mini-system for your database capacity needs?
Reply | Original | Permalink | Share | TweetYou know you’ve made it when Seth Godin is handing out advice in your blog comments. Seth Godin! Awesome.
Reply | Original | Permalink | Share | TweetYou post great information and insight on development and user-centered-ness. I’m guessing your audience are people who recognize that they are developers. I propose you create a presentation for business users who don’t think of themselves as developers but who actually are. I work for a consultancy, and when we are preparing an ACL script-based tool to perform a specific analysis, it is sold as an ‘analysis’ but it is as involved as a small- to medium-sized software project, requires code writing and documentation, and even a manual (usually) of sorts, even if it just lumped in with ‘the deliverable’. Some of us try to apply lessons you and those like you teach – tell us how you would convince a non-technical senior management or c-level decision maker to invest in techniques and time spent doing the job right.
Reply | Original | Permalink | Share | TweetGreat points Karen. There is something special happening when the domain language also fits our natural language and expectations.
Reply | Original | Permalink | Share | TweetWe have a prototype of Parallel ALTER TABLE workingin our labs. We demonstrated it at the last developersmeeting in MySQL where for MyISAM, archive and HEAP we were able to use 16 cores fully utilized to ALTER a10 million row table in 2.5 seconds. In many cases thestorage engine limits the scalability.
However when we introduce such a feature it will befairly straightforward to pinpoint how to fix thisparticular scalability issue.
This feature mainly works when there are partitionedtables involved, for non-partitioned tables we cansplit into a read thread and a write thread. To domore than that would require changing the handler API to accomodate for multithreaded changes.
It’s very likely that we’ll look at how we can do a similarparallelisation of other variants of ALTER TABLE , LOAD DATA and various other load functionalities.
Reply | Original | Permalink | Share | TweetI second the Xero call… Although I need to wait a couple of months till their multi currency is released…
Reply | Original | Permalink | Share | Tweet@Steve
Try AccountEdge once and you’ll be begging for Quickbooks. It’s almost as if the app designers took every basic time-honored UI concept and threw them out the window. Cmd/Cntrl – A to select all in a field? Nope – not here bub. Click a dropdown to view a selection of reports, and a “helpful” tool tip completely obscures the contents of the dropdown. And it also throws ridiculous dialogs instead of just scrubbing data.
Reply | Original | Permalink | Share | TweetFred, maybe Jeremy was joking?
Reply | Original | Permalink | Share | TweetA lot of things scale non-linearly inside of MySQL. I don’t have any experience running MySQL on 512GB of memory.
Reply | Original | Permalink | Share | TweetThe quarterback stats are interesting, particularly if you read The Blind Side by Michael Lewis. Dan Marino is singled out very convincingly in Lewis’s discussion of how the left tackle transformed the game, even as most observers gave “star quarterbacks” like Marino all the credit.
Not sure how this is relevant to the “leap before you look” point, but I find it fascinating nonetheless, and The Blind Side is definitely worth a read!
Reply | Original | Permalink | Share | TweetRe: IQs of quarterbacks. This caught my eye because it reminded me of something I was talking about with a friend after watching a lot of sports recently (Olympics, then football, then basketball): despite the (perhaps true) notion that some athletes have low IQs, elite athletes of all kinds by necessity are students of their game/sport.
You simply can’t be at the top of your game (choose your hall of fame QB) and not have a vast knowledge of the game its tactical and strategic histories, your opponents, how they play, what they do in particular situations, etc. You may call it ‘gut,’ but it’s also a matter of internalizing hundreds of hours of game play, even more game tape study and practice.
I don’t know how relevant IQ is to football (or anything, for that matter), but I can’t recall ever seeing an elite athlete interviewed about his profession and thinking “this guy is dumb.”
Reply | Original | Permalink | Share | TweetFor spontaneity and creativity - e.g. brainstorming, creative writing, improv, quarterbacking? etc. - leap before you look is the way to go. Being cautious in these situations is too stifling.
However, for high-risk activities - e.g. flying planes, leaping out of them, peforming surgery, defending a client in court, etc. - I would recommend looking first.
Viva situational dependence!
