Ikea
Posted on November 20, 2008 in Canadian meds
I've been spending a classification of generation at Ikea just now. Along Saturday, the desk that I bought there sit out go was delivered, a Galant corner desk, with an 80 cm attachment hopeful the skinny solution. It's awesome. Proper as well solid determine, telescoping T-style legs that I learn at maximum gauge, it's considerably extreme. Beech, with dark grey legs. I set it together Saturday evening, again cat, it wasn't easy flipping the thing opposite once it was all assembled. But, I managed to do it entirely lacking scratching it, thanks to my carpets; I got my carpets out of shop; they haven't been unrolled as I left Toronto. Two semicolons in individual sentence is definitely a faux pas. Forth Monday, labour time (produced surrounded by Toronto, btw), I punch in Ikea including, but it was so going that I didn't credit cope waiting in reach. So, that post meridian, as I had the cocktail hour off, I headed back everyplace there, moreover bought two Billy bookcases, furthermore birch. Ikea here rents vans, so you can bring maintain cottage, if it doesn't clothe surrounded by your taxi. It's CAN$19.99, still $0.10 per kilometer over a gasoline tune (you don't own to gas it up), whereas two hours. I was immersion, 10 cents per kilometer is probably Lesser than the current hire of gas, which is $1.14 per litre here in Calgary at the span. Anyways, I rented a car, along with brought my bookcases means, no probs. My life span? Constituent city expenditure insinuation has an Ikea. If a city doesn't contain unique at this date, it fruits that the city sucks bigtime. Proceeds that, Boston. I don't enclose Info Strada rush in at house at the day, so that's why my postings are currently non-existant. I introduce to whack to school to connect to the handle, which sucks. At the spell, I'm sitting at my beautiful desk, listening to Godspeed you grimy emperor, besides I'll flow among to school postliminary to de facto package that thing. I'll fasten together singular of my shelves before I motion at intervals, though... peace out. P.S.: I'm incidental to bob up this my favourite occasion noodles, neoguri, are solo CAN$0.634 here, which is US$0.534. They were 75 cents US at the Japanese plunk by Central Square, to boot US$1.25 at the Starmarket separating Fenway. So, I'm doing tenderly.
Tags: ikea, desk, city, surrounded, sucks
Blogger's Block #4: Ruby and Java and Stuff
Posted on November 18, 2008 in Generic biologicals
Part 4 of a 4-part series of short posts intended to clear out my bloggestive tract. Hold your nose! Well, I held out for a week. Then I read the comments. Argh! Actually they were fine. Nice comments, all around. Whew. I don't have any big themes to talk about today, but I've got a couple of little ones, let's call 'em bloguettes, that I'll lump together into a medley for today's entree. Bloguette #1: Ruby Sneaks ended accessible Python I was in Barnes today, doing my usual weekend stroll through the tech section. Helps me keep up on the latest trends. And wouldn't you know it, I skipped a few weeks there, and suddenly Ruby and Rails have almost as many books out as Python. I counted eleven Ruby/RoR titles tonight, and thirteen for Python (including one Zope book). And Ruby had a big display section at the end of one of the shelves. Not all the publishers were O'Reilly and Pragmatic Press. I'm pretty sure there were two or three others there, so it's not just a plot by Tim O'Reilly to sell more books. Well, actually that's exactly what it is, but it's based on actual market research that led him to the conclusion that Rails and Ruby are both gathering steam like nobody's business. I like a lot of languages. Really, I do. But I use Ruby. I'm not even sure if I like Ruby. The issue might just be irrelevant to whether I use it. I like OCaml, for instance, but I don't use it. I don't like Java, but I do use it. Liking and using are mostly orthogonal dimensions, and if you like the language you're using even a little bit, you're lucky. That, or you just haven't gotten broad enough exposure to know how miserable you ought to be. I use Ruby because it's been the path of least resistance for most of my programming tasks since about 3 days after I started messing with it, maybe 4 years ago. I don't even really know Ruby all that well. I never bothered to learn it. I did read "Ruby in a Nutshell" cover-to-cover, but it's a short read (and it's a bit out of date now.) Then I read bits of "Programming Ruby", but not all of it. And now I use Ruby for everything I can, any time I have any choice in the matter. I don't even mind that I don't know the language all that well. It has a tiny core that serves me admirably well, and it's easy to look things up when you need to. I do a lot more programming in Python than in Ruby -- Jython in my game server, and Python at work, since that's what everyone there uses for scripting. I have maybe 3x more experience with Python than with Ruby (and 10x more experience with Perl). But Perl and Python both have more unnecessary conceptual overhead, so I find I have to consult the docs more often with both of them. And when all's said and done, Ruby code generally winds up being the most direct and succinct, whether it's mine or someone else's. I have a lot of trouble writing about Ruby, because I find there's nothing to say. It's why I almost never post to the O'Reilly Ruby blog. Ruby seems so self-explanatory to me. It makes it almost boring; you try to focus on Ruby and you wind up talking about some problem domain instead of the language. I think that's the goal of all programming languages, but so far Ruby's one of the few to succeed at it so well. If only it performed better. *Sigh*. Well, its performance is in the same class as Perl/Python/JavaScript/Lua/Bash/etc., so there are still plenty of tasks Ruby's admirably suited for. I think next year Ruby's going to be muscling in on Perl in terms of mindshare, or shelf-share, at B&N. Bloguette #2: Java's Biggest Dog (Indeed) I still do most of my programming in Java -- at least half of it, maybe more. The Java platform continues to make amazing strides. The newest incarnation (JDK 6) has lots of goodies I can't wait to play with. Like Rhino, for instance, and although they appear to have gutted it, it's still awesome. I think it's the best choice they possibly could have made. Thank God they didn't bundle Groovy. What a catastrophe that was, and still is, and would have been for Java if they'd bundled it. Rhino rocks. The JVM is just getting faster and more stable, and there are even some OK libraries that come with it. I used to think the Java platform libraries were the cat's meow. Heck, I thought they were the whole damn cat. But working with better libraries in miscellaneous other languages has got me thinking that Java's libraries are hit-or-miss. Example: Java's concurrency libraries (java.util.concurrent[.*]) are to die for. I mean, if you're stuck with threads. I think in the fullness of time, hand-managed threads will be history, but in the meantime, Java's concurrency libraries are just superb. I recently ported a medium-sized Python program I'd written (about 1200 lines of fairly dense Python code) to Java, because the Python was taking about an hour to run, and I wanted to parallelize the work. I spent about 3 days doing the rewrite: one day on the straight port, a day adding in the threading, and a day fine-tuning it. The straight port wound up as 1300 lines of Java (surprising that it wasn't bigger, but maybe I code in Python with a Java accent?), and ran about 50% faster, down to about 30 minutes. After adding in the threading and state machine, the program ran in 50 to 60 seconds. So I got an order of magnitude improvement with only about a 50% increase overall in program size. The vast majority of the improvement was attributable to the threading, which in turn would have taken me FAR longer if I'd been using raw synchronization primitives. The java.util.concurrent stuff made it a snap. On the other hand, Java's DOM implementation completely blows chunks. It quickly became the bottleneck in my application, due to an O(n) algorithm I stumbled across with no good workaround for. I can't remember exactly where it was (this was back in July), but I found a sheepishly apologetic comment from the author in the online docs. It was something to do with setting attributes on nodes while you're doing a traversal of some sort: something you'd definitely want to be fast, but it had at least linear performance, maybe worse, and now accounts for 95+% of my app's processing time. And of course Java's DOM interface blows too, because you can't create subclasses or decorators or do anything useful with the DOM other than use it as a temp container until you've transfered the data to something more flexible. Java's collections library is decent, but not superb. It's nice having the data structures they provide, but they're not very configurable, and the language itself makes them often cumbersome. For instance, you can have a WeakHashMap (nice), or an IdentityHashMap (nice), or a ConcurrentHashMap (also nice), but you can't combine any two of those three properties into a single hashtable. Lame. And java.util is missing implementations and/or interfaces for a bunch of important data types like priority queues (you're stuck using a TreeSet, which is overkill), the disjoint set ADT, splay trees, bloom filters, multi-maps, and of course any kind of built-in graph support. Java hyper-enthusiasts will tell you: "well, go write your own! Or use one of the many hopefully robust implementations on the web!" That seems lame to me. We're talking about data structures here: they're more fundamental than, say, LDAP libraries and much of the other stuff Sun's bundling these days. It's smartest to provide robust, tuned implementations of these things, because it empowers average Java programmers to write faster, more reliable code. Oh, and let's not even get me started with java.nio. What a mess! It's pretty gross, especially if you come from the comparatively simple background of select() and poll() on Unix. But maybe the grossness was necessary. I'll give them the benefit of the doubt. What bugs me isn't that the API is conceptually weird and complex (and buggy as hell last time I checked); what bugs me is that nobody at Sun bothered to put a layer atop java.nio for ordinary programmers. Like, say, a nonblocking DataInputStream that takes a type to read, a Buffer, and a callback to call when it's finished reading. So every frigging Java programmer on the planet has to write that exact class -- or just flail around with the raw APIs, which is what I think most of them do. And look what they did to poor LDAP! I mean, the LDAP bindings are dirt-simple in every language I've ever used. It's supposed to be lightweight -- that's what the "L" stands for, fer cryin' out loud. JNDI is this huge monster. So is JMX. I mean, Java libraries have this way of being so bloated and overengineered. But whatever; I've digressed. Java's libraries are not its biggest failing. The libraries (as I said) are decent, and the platform (in terms of tools, speed, reliability, documentation, portability, monitoring, etc.) really raises the bar on all those other loser languages out there. All of 'em. It's why no better languages have managed to supplant Java yet. Even if the language and its libraries are (on the whole) better than Java's, they also have to contend with the Java platform, and so far nobody's been able to touch it, unless maybe it's .NET, but who cares about .NET? Certainly not Amazon.com or Yahoo! or Google or any other important companies that I'm aware of. Literals Anyway, Java's biggest failing, I've decided, is its lack of syntax for literal data objects. It's an umbrella failing that accounts for most of the issues I have with the language. The idea behind literals is that you have some sort of serialized notation for your data type, and it's part of the language syntax, so you can embed pre-initialized objects in your code. The most obvious ones are numbers, booleans and strings. It's hard to imagine life without support for numeric literals, isn't it? Well, Java's support is limited at best. There's no syntax for entering a binary value, for instance, like "0b10010100". And there's no BigInteger/BigDecimal syntax, so working with them is a disaster and nobody does it if they can help it. Heck, Java doesn't even have unsigned ints and longs. But Java does more or less the bare minimum for numbers, so people don't notice it much. Imagine if there were no String literals, so that instead of this: String s = "Hello, world!"; you had to do this: StringBuffer sb = new StringBuffer(); sb.append('H'); sb.append('e'); sb.append('l'); sb.append('l'); sb.append('o'); sb.append(','); sb.append(' '); sb.append('W').append('o').append('r').append('l').append('d').append('!'); String s = sb.toString(); Not only is the latter bloated and ugly and error-prone (can you spot the error in mine?), it's also butt-slow. Literals provide the compiler with opportunities for optimization. Well, unfortunately this OOP garbage is exactly what you have to do when you're initializing a hashtable in Java. Nearly all other languages these days have support for hashtable/hashmap literals, something like: my_hashmap = { "key1" : "value1", "key2" : "value2", "key3" : "value3", ... } That's the syntax used by Python and JavaScript, but other languages are similar. The Java equivalent is this: Map<String, String> my_hashmap = new HashMap<String, String>(); my_hashmap.put("key1", "value1"); my_hashmap.put("key2", "value2"); my_hashmap.put("key3", "value3"); ... It might not look that much worse from this simple example, but there are definitely problems. One is optimization; the compiler is unlikely to be able to optimize all these method calls, whereas with a literal syntax, it could potentially save on method call overhead during construction of the table (and maybe other savings as well.) Another is nested data structures. In JavaScript (and Python, Ruby, etc.) you just declare them in a nested fashion, like so: my_thingy = { "key1": { "foo": "bar", "foo2": "bar2"}, "key2": ["this", "is", "a", "literal", "array"], "key3": 37.5, "key4": "Hello, world!", ... } It would be hard to do this particular one in Java 5 because of the mixed value types, though it's probably not an issue since using mixed-type data structures is something you rarely do in practice, even in dynamically-typed languages. But even if all the values were hashes of string-to-string, how are you going to do it in Java without literals? You can't. You're stuck with: Map<String, Map<String, String>> my_hashmap = new HashMap<String, HashMap<String, String>>(); Map<String, String> value = new HashMap<String, String>(); value.put("foo", "bar"); value.put("foo2", "bar2"); my_hashmap.put("key1, value); value.clear(); value.put("foo3", "bar3"); value.put("foo4", "bar4"); my_hashmap.put("key2, value); ... And then you find out later that your clever clear() optimization (instead of creating a new HashMap object for each value) busted it completely. Whee. Java programmers wind up dealing with this kind of thing by writing generic helper functions, and it winds up layering even more OOP overhead onto something that ought to be a simple declaration. It also tends to be brutally slow; e.g. you could write a function called buildHashMap that took an array of {key, value, key, value, ...}, but it adds a huge constant-factor overhead. This is why Java programmers rely on XML so heavily, and it imposes both an impedance mismatch (XML is not Java, so you have to translate back and forth) and a performance penalty. But the story doesn't end there. What about Vector/ArrayList literals? Java has primitive array literals, which is nice as far as it goes: String[] s = new String[]{"fee", "fi", "fo", "fum"}; Unfortunately, Java's primitive arrays are a huge wart; they don't have methods, can't be subclassed, and basically fall entirely outside the supposedly beautiful OOP-land that Java has created. It was for performance, to help capture skeptical C++ programmers, and they have their place. But I don't see why they should have all the syntactic support. I mean, the [] array-indexing operator is ONLY available for Java arrays. Sure would be nice to have it for ArrayLists, wouldn't it? And Strings? And FileInputStreams? But for some reason, Java gave arrays not one, but TWO syntactic sugarings, and then didn't give that sugar to anything else array-like in the language. So for building ArrayLists, LinkedLists, TreeMaps and the like, you're stuck with Swing-style code assemblages. I think of them as Swing-style because I used to do a lot of AWT and Swing programming, back when I was a Thick Client kind of guy, and they have a distinct(ly unpleasant) footprint. It looks vaguely like this, in pseudo-Swing: Panel p = new Panel(new FlowLayout()); JButton b = new JButton("Press me!"); b.setEventListener(somethingOrOther); p.add(b); JSomething foo = new JSomething(blah, blah); foo.setAttribute(); foo.setOtherAttribute(); foo.soGladIDontDoThisKindOfThingAnymore(); p.add(foo); ... Building UIs in Swing is this huge, festering gob of object instantiations and method calls. It's OOP at its absolute worst. So people have come up with minilanguages (like the TableLayout), and declarative XML replacements like Apache Jelly, and other ways to try to ease the pain. I was on a team at Amazon many years ago that was planning to port a big internal Swing application to the web, and we were looking at the various ways to do web programming, which at the time (for Java) were pretty much limited to JSP, WebMacro, and rolling your own Swing-like HTML component library. We experimented with the OOP approach to HTML generation and quickly discarded it as unmaintainable. (Tell that to any OOP fanatic and watch their face contort as they try to reconcile their conflicting ideas about what constitutes good programming practice.) The right solution in this case is, of course, a Lisp dialect; Lisp really shines at this sort of thing. But Lisp isn't so hot at algebraic expressions, and the best Lisp machines no longer look so cutting-edge compared to the JVM, and blah blah blah, so people don't use Lisp. So it goes. The next-best solutions are all about equally bad. You have your XML-language approaches (like Jelly, but for the web), but they don't give you sufficient expressiveness for control flow -- presentation logic really does require code, and it gets ugly in XML in a real hurry. You have your JSP-style templating approaches, and they aren't bad, but they can have as many as 4 or 5 different languages mixed in the same source file, which presents various problems for your tools (both the IDEs and the batch tools). And then you have a long tail of other approaches, none of which manage to be very satisfying, but that's not really the fault of the languages. It's the browsers' fault: they START with three languages (HTML, CSS, and JavaScript), rather than having just one language to control the entire presentation, and it only goes downhill from there. But NONE of the approaches to web templating is as bad as Swing-style programming, with a huge thicket of calls to new(), addChild(), setAttribute(), addListener(), and the like. The only approach that's worse (and even it might just be tied) is raw HTML printing: print("<html><body>...</body></html>"); So we're all in agreement. OOP-style assembly of parents and children is the worst way to generate HTML. You want to use declarations; you want a template , something that visually looks like the end result you're trying to create. Well, it's the exact same situation for data structures, isn't it? You'd rather draw a picture of it (in a sense, that's exactly what you're doing with syntax for literals) than write a bunch of code to assemble it. This is all assuming that you're working with a small data set, of course. But that happens all the time in real-world programs; it's ubiquitous. So you kinda want your language to support it syntactically. And so far we've only covered literal syntax for HashMaps and ArrayLists (which you can combine to produce various kinds of custom Trees.) Already Java's way behind other languages, and we haven't discussed any richer data types. Like, say, objects. JavaScript does it the best here, IMO, in the parity between hashes and objects. It's not really possible in Ruby or Python to declare a class, then create instances of the class using literal notation the way you can in JavaScript, where the keys are the names of instance variables. Fortunately you can accomplish this in either Ruby or Python with just a smidge of metaprogramming, so it's spilt milk at worst. In Java, you only have one big hammer (instantiation), and one big wrench (the method call), so that's what you use. All you can really do to help is create a constructor that takes arguments that populate the instance variables. But if any of your instance variables are collections (other than arrays), then you're back to the old create-setprops-addchild, create-setprops-addchild pattern again. And what about functions? Ruby and JavaScript and Lisp and Scheme and Lua and Haskell and OCaml and most other self-respecting languages have function literals. That is, they have a syntax for declaring an instance of a function as a data object in your code that you can assign to a variable, or pass as a parameter. (Python has them too, but unfortunately they can only be one line, so Python folks prefer to pretend anonymous functions aren't very important. This is one of the 10 or so big problems caused by Python's whitespace policy. Don't ever let 'em tell you it doesn't cause problems. It does. Maybe it's worth the trade-off; that's a personal style preference, but they should at least admit the tradeoff exists.) Well, Java sort of has them, but Java's static type system doesn't have a literal syntax for a method signature. It's pretty easy to imagine one, e.g. something like: (int, int) -> String x; This imaginary syntax declares a variable x that takes 2 ints as parameters and returns a string. Lots of languages have signature-syntax of some sort, and Java's syntax space is definitely sparse enough that they could pick a good syntax for it without fear of collisions, even conceptual collisions. But no such luck. Instead, when you want to do this sort of thing you have to declare a named interface, and then inside of it declare at least one named method (which is where the params and return type show up), and then you're still not done, because when you create the function you have to create an anonymous (or named) class that contains the definition of the function that matches the interface. Yuck. But at least they let you do it; the alternative of not having it at all is definitely worse. Still... isn't syntactic sugar nice? I mean, they added the "smart" for-loop, which Java programmers just rave about. So someone, somewhere in the Java community thinks syntax is good. I'm not sure many of them really understand the difference between syntactic sugar (into which category the "smart" for-loop falls) and orthogonal syntax, in which the basic operators apply to all data types for which those operators make sense, and there are literal declarations possible for every data type. Let alone the next step, which is extensible syntax -- but that idea strikes fear into the hearts of many otherwise brave Java programmers, and Rubyists and Pythonistas as well, so let's back it up a notch to "orthogonal", and keep everyone calm. So there you have it: Java's biggest failing. It's the literals. No literal syntax for array-lists (or linked lists or tree sets), nothing for hashtables, nothing for objects of classes you've personally defined, none for functions or function signatures. Java programmers all around the world spend a *lot* of their time working around the problem, using XML and YAML and JSON and other non-Java data-declaration languages, and writing tons of code (whole frameworks, even) for serializing and deserializing these declarations to and from Java. For the smaller stuff, they just write helper functions, which wind up being bloated, inefficient, error-prone, and extremely unsatisfying. Java's next-biggest failing may well be the lack of orthogonality in its set of operators. We can live without operator overloading, I suppose (the simplest form of extensible syntax), but only if Sun makes operators like [] and + actually work for objects other than arrays and Strings, respectively. Jeez. Epiblogue You can draw your own conclusions about why suddenly there are all these books on Ruby appearing on the bookshelves. It's a mix of truths, no doubt. And you can draw your own conclusions about why Sun's adding support for scripting languages to the JVM, rather than simply fixing Java so that people don't want (need, really) to use those other languages. But when you dig down into a programming language, and you get past all the hype and the hooplah, what you find is a set of policies and decisions that affect your everyday life as a programmer in ways you can't ignore, and that no amount of hype will smooth over. If your language is sitting on you like an invisible elephant, and everyone using the language is struggling to work around the same problems, then it's inevitable that other languages will come into play. Libraries can make you more productive, but they have almost no effect on the scalability of the language. Every language has a complexity ceiling, and it's determined by a whole slew of policy and design decisions within the language, not the libraries. The slew includes the type system (with its attendant hundreds of mini-policies), and the syntax, and it also includes the language's consistency: the ratio of rules to exceptions. Java's demonstrating quite clearly that at a certain level of complexity, the libraries and frameworks start to collapse under their own weight. People are always writing "lightweight" replacements for existing fat Java libraries and frameworks, and then the replacements get replaced, ad infinitum. But have you ever seen anyone write a replacement for XPath? Nope. It's not like everyone is rushing out to write the next big XML-querying framework. This is because XPath is a language , not a library, and it's orders of magnitude more conceptually scalable than the equivalent DOM manipulations. Object-Oriented Programming. Touted even by skeptics as a radical leap forward in productivity, and all OOP really is boils down to a set of organizational techniques. Organization is nice, sure. But it's pretty clear that OOP alone doesn't cut it; it has to be supplemented with Language-Oriented Programming and DSLs. And all languages, DSLs and general-purpose languages alike, have to be designed to maximize consistency; each inconsistency and special-case in the language adds to its conceptual overhead and lowers the complexity ceiling. So you can look at the shelves filling up with Ruby books and chalk it up to marketing hype, but I have a different theory. I think it's entirely due to complexity management: Ruby does a better job of helping managing complexity than its competitors. It doesn't do a perfect job, mind you -- far from it. But it's enough of a step forward in productivity (even over Perl and Python) that it's managing to shoulder its way in to a pretty crowded language space. With that in mind, despite my griping about Java's failings, I think Sun might actually be doing the right thing by introducing scripting languages (and improving support for them in the JVM.) Maybe. Their investment isn't really so much in Java as it is in the JVM; the JVM is their .NET. Java's not really about productivity, not really -- it's got a lot of strengths (performance, deployment, reliability, static checkability, and so on), but productivity isn't high on the list. So maybe the best way to address the productivity issue, for folks who really need it more than raw performance, is to introduce new JVM languages rather than try to pull Java in two directions. We'll see. And with that, I think I've officially un-blocked myself; I seem to be able to blog again. So I'm declaring the Blogger's Block series finished! BloggersBlock block = new BloggersBlock(); block.setFinished(true); block.tieOffAndStuff(); blog.addChild(block); ... cheap oem software buy software
Good Agile, Bad Agile
Posted on November 18, 2008 in Generic biologicals
Scrums are the most dangerous phase in rugby, since a collapse or improper engage can lead to a front row player damaging or even breaking his neck. — Wikipedia When I was growing up, cholesterol used to be bad for you. It was easy to remember. Fat, bad. Cholesterol bad. Salt, bad. Everything, bad. Nowadays, though, they differentiate between "good" cholesterol and "bad" cholesterol, as if we're supposed to be able to distinguish them somehow. And it was weird when they switched it up on us, because it was as if the FDA had suddenly issued a press release announcing that there are, in fact, two kinds of rat poison: Good Rat Poison and Bad Rat Poison, and you should eat a lot of the Good kind, and none of the Bad kind, and definitely not mix them up or anything. Up until maybe a year ago, I had a pretty one-dimensional view of so-called "Agile" programming, namely that it's an idiotic fad-diet of a marketing scam making the rounds as yet another technological virus implanting itself in naive programmers who've never read "No Silver Bullet", the kinds of programmers who buy extended warranties and self-help books and believe their bosses genuinely care about them as people, the kinds of programmers who attend conferences to make friends and who don't know how to avoid eye contact with leaflet-waving fanatics in airports and who believe writing shit on index cards will suddenly make software development easier. You know. Chumps. That's the word I'm looking for. My bad-cholesterol view was that Agile Methodologies are for chumps. But I've had a lot of opportunity to observe various flavors of Agile-ism in action lately, and I now think I was only about 90% right. It turns out there's a good kind of Agile, although it's taken me a long time to be able to see it clearly amidst all the hype and kowtowing and moaning feverishly about scrums and whatnot. I have a pretty clear picture of it now. And you can attend my seminar on it for the low, low price of $499.95! Hahaha, chump! No, just kidding. You'll only find seminars about the Bad kind of Agile. And if in the future you ever find me touring around as an Agile Consultant, charging audiences to hear my deep wisdom and insight about Agile Development, you have my permission to cut my balls off. If I say I was just kidding, say I told you I'd say that. If I then say I'm Tyler Durden and I order you not to cut my balls off , say I definitely said I was going to say that , and then you cut 'em right off. I'll just go right ahead and tell you about the Good Kind, free of charge. It's kinda hard to talk about Good Agile and Bad Agile in isolation, so I might talk about them together. But I'll be sure to label the Good kind with a happy rat, and the Bad kind with a sad dead rat, so you'll always know the difference. The Bad Heading Back in Ye Olden Dayes, most companies approached software development as follows: - hire a bunch of engineers, then hire more. - dream up a project. - set a date for when they want it launched. - put some engineers on it. - whip them until they're either dead or it's launched. or both. - throw a cheap-ass pathetic little party, maybe. This step is optional. - then start over. Thank goodness that doesn't happen at your company, eh now? Whew! Interestingly, this is also exactly how non-technical companies (like, say, Chrysler) handled software development. Except they didn't hire the engineers. Instead, they contracted with software consultants, and they'd hand the consultants 2-year project specs, and demanded the consultants finish everything on time plus all the crap the customer threw in and/or changed after signing the contract. And then it'd all fall apart and the contractors wouldn't get paid, and everyone was really miffed. So some of the consultants began to think: "Hey, if these companies insist on acting like infants, then we should treat them like infants!" And so they did. When a company said "we want features A through Z", the consultants would get these big index cards and write "A" on the first one, "B" on the second one, etc., along with time estimates, and then post them on their wall. Then when the customer wanted to add something, the consultant could point at the wall and say: "OK, boy . Which one of these cards do you want to replace , BOY? " Is it any wonder Chrysler canceled the project? So the consultants, now having lost their primary customer, were at a bar one day, and one of them (named L. Ron Hubbard) said: "This nickel-a-line-of-code gig is lame. You know where the real money is at? You start your own religion." And that's how both Extreme Programming and Scientology were born. Well, people pretty quickly demonstrated that XP was a load of crap. Take Pair Programming, for instance. It's one of the more spectacular failures of XP. None of the Agileytes likes to talk about it much, but let's face it: nobody does it. The rationale was something like: "well if ONE programmer sitting at a terminal is good, then TEN must be better, because MORE is ALWAYS better! But most terminals can only comfortably fit TWO programmers, so we'll call it PAIR programming!" You have to cut them a little slack; they'd been dealing with the corporate equivalent of pre-schoolers for years, and that really messes with a person. But the thing is, viruses are really hard to kill, especially the meme kind. After everyone had gotten all worked up about this whole Agile thing (and sure, everyone wants to be more productive), there was a lot of face to be lost by admitting failure. So some other kinds of Agile "Methodologies" sprang up, and they all claimed that even though all the other ones were busted, their method worked! I mean, go look at some of their sites. Tell me that's not an infomercial. C'mon, just try. It's embarrassing even to look at the thing. Yeah. Well, they make money hand over fist, because of P.T. Barnum's Law, just like Scientology does. Can't really fault 'em. Some people are just dying to be parted with their cash. And their dignity. The rest of us have all known that Agile Methodologies are stupid, by application of any of the following well-known laws of marketing: - anything that calls itself a "Methodology" is stupid, on general principle. - anything that requires "evangelists" and offers seminars, exists soley for the purpose of making money. - anything that never mentions any competition or alternatives is dubiously self-serving. - anything that does diagrams with hand-wavy math is stupid, on general principle. And by "stupid", I mean it's "incredibly brilliant marketing targeted at stupid people." In any case, the consultants kept going with their road shows and glossy pamphlets. Initially, I'm sure they went after corporations; they were looking to sign flexible contracts that allowed them to deliver "whatever" in "2 weeks" on a recurring basis until the client went bankrupt. But I'm equally sure they couldn't find many clients dumb enough to sign such a contract. That's when the consultants decided to take their road show to YOU. Why not take it inside the companies and sell it there, to the developers? There are plenty of companies who use the whip-cycle of development I outlined above, so presumably some of the middle managers and tech leads would be amenable to hearing about how there's this low-cost way out of their hellish existence. And that, friends, was exactly, precisely the point at which they went from "harmless buffoons" to "potentially dangerous", because before they were just bilking fat companies too stupid to develop their own software, but now the manager down the hall from me might get infected. And most places don't have a very good quarantine mechanism for this rather awkward situation: i.e., an otherwise smart manager has become "ill", and is waving XP books and index cards and spouting stuff about how much more productive his team is on account of all this newfound extra bureaucracy. How do we know it's not more productive? Well, it's a slippery problem. Observe that it must be a slippery problem, or it all would have been debunked fair and square by now. But it's exceptionally difficult to measure software developer productivity, for all sorts of famous reasons. And it's even harder to perform anything resembling a valid scientific experiment in software development. You can't have the same team do the same project twice; a bunch of stuff changes the second time around. You can't have 2 teams do the same project; it's too hard to control all the variables, and it's prohibitively expensive to try it in any case. The same team doing 2 different projects in a row isn't an experiment either. About the best you can do is gather statistical data across a lot of teams doing a lot of projects, and try to identify similarities, and perform some regressions, and hope you find some meaningful correlations. But where does the data come from? Companies aren't going to give you their internal data, if they even keep that kind of thing around. Most don't; they cover up their schedule failures and they move on, ever optimistic. Well if you can't do experiments and you can't do proofs, there isn't much science going on. That's why it's a slippery problem. It's why fad diets are still enormously popular. People want fad diets to work, oh boy you bet they do, even I want them to work. And you can point to all these statistically meaningless anecdotes about how Joe lost 35 pounds on this one diet, and all those people who desperately want to be thinner will think "hey, it can't hurt. I'll give it a try." That is exactly what I hear people say, every time a team talks themselves into trying an Agile Methodology. It's not a coincidence. But writing about Bad Agile alone is almost guaranteed to be ineffective. I mean, you can write about how lame Scientology is, or how lame fad diets are, but it's not clear that you're changing anyone's mind. Quitting a viral meme is harder than quitting smoking. I've done both. In order to have the right impact, you have to offer an alternative, and I didn't have one before, not one that I could articulate clearly. One of the (many) problems with Bad Agile is that they condescendingly lump all non-Agile development practices together into two buckets: Waterfall and Cowboy. Waterfall is known to be bad; I hope we can just take that as an axiom today. But what about so-called Cowboy programming, which the Agileers define as "each member of the team does what he or she thinks is best"? Is it true that this is the only other development process? And is Cowboy Programming actually bad? They say it as if it's obviously bad, but they're not super clear on how or why, other than to assert that it's, you know, "chaos". Well, as I mentioned, over the past year I've had the opportunity to watch both Bad Agile and Good Agile in motion, and I've asked the teams and tech leads (using both the Bad and Good forms) lots of questions: how they're doing, how they're feeling, how their process is working. I was really curious, in part because I'd consented to try Agile last Christmas ("hey, it can't hurt"), and wound up arguing with a teammate over exactly what metadata is allowed on index cards before giving up in disgust. Also in part because I had some friends on a team who were getting kind of exhausted from what appeared to be a Death March, and that kind of thing doesn't seem to happen very often at Google. So I dug in, and for a year, I watched and learned. The Good Head (cue happy rat) I'm going to talk a little about Google's software development process. It's not the whole picture, of course, but it should suffice for today. I've been there for almost a year and a half now, and it took a while, but I think I get it now. Mostly. I'm still learning. But I'll share what I've got so far. From a high level, Google's process probably does look like chaos to someone from a more traditional software development company. As a newcomer, some of the things that leap out at you include: - there are managers, sort of, but most of them code at least half-time, making them more like tech leads. - developers can switch teams and/or projects any time they want, no questions asked; just say the word and the movers will show up the next day to put you in your new office with your new team. - Google has a philosophy of not ever telling developers what to work on, and they take it pretty seriously. - developers are strongly encouraged to spend 20% of their time (and I mean their M-F, 8-5 time, not weekends or personal time) working on whatever they want, as long as it's not their main project. - there aren't very many meetings. I'd say an average developer attends perhaps 3 meetings a week, including their 1:1 with their lead. - it's quiet. Engineers are quietly focused on their work, as individuals or sometimes in little groups or 2 to 5. - there aren't Gantt charts or date-task-owner spreadsheets or any other visible project-management artifacts in evidence, not that I've ever seen. - even during the relatively rare crunch periods, people still go get lunch and dinner, which are (famously) always free and tasty, and they don't work insane hours unless they want to. These are generalizations, sure. Old-timers will no doubt have a slightly different view, just as my view of Amazon is slightly biased by having been there in 1998 when it was a pretty crazy place. But I think most Googlers would agree that my generalizations here are pretty accurate. How could this ever work? I get that question a lot. Heck, I asked it myself. What's to stop engineers from leaving all the trouble projects, leaving behind bug-ridden operational nightmares? What keeps engineers working towards the corporate goals if they can work on whatever they want? How do the most important projects get staffed appropriately? How do engineers not get so fat that they routinely get stuck in stairwells and have to be cut out by the Fire Department? I'll answer the latter question briefly, then get to the others. In short: we have this thing called the Noogler Fifteen, named after the Frosh Fifteen: the 15 pounds that many college freshmen put on when they arrive in the land of Stress and Pizza. Google has solved the problem by lubricating the stairwells. As to the rest of your questions, I think most of them have the same small number of answers. First, and arguably most importantly, Google drives behavior through incentives. Engineers working on important projects are, on average, rewarded more than those on less-important projects. You can choose to work on a far-fetched research-y kind of project that may never be practical to anyone, but the work will have to be a reward unto itself. If it turns out you were right and everyone else was wrong (the startup's dream), and your little project turns out to be tremendously impactful, then you'll be rewarded for it. Guaranteed. The rewards and incentives are too numerous to talk about here, but the financial incentives range from gift certificates and massage coupons up through giant bonuses and stock grants, where I won't define "giant" precisely, but think of Google's scale and let your imagination run a bit wild, and you probably won't miss the mark by much. There are other incentives. One is that Google a peer-review oriented culture, and earning the respect of your peers means a lot there. More than it does at other places, I think. This is in part because it's just the way the culture works; it's something that was put in place early on and has managed to become habitual. It's also true because your peers are so damn smart that earning their respect is a huge deal. And it's true because your actual performance review is almost entirely based on your peer reviews, so it has an indirect financial impact on you. Another incentive is that every quarter, without fail, they have a long all-hands in which they show every single project that launched to everyone, and put up the names and faces of the teams (always small) who launched each one, and everyone applauds. Gives me a tingle just to think about it. Google takes launching very seriously, and I think that being recognized for launching something cool might be the strongest incentive across the company. At least it feels that way to me. And there are still other incentives; the list goes on and ON and ON ; the perks are over the top, and the rewards are over the top, and everything there is so comically over the top that you have no choice, as an outsider, but to assume that everything the recruiter is telling you is a baldfaced lie, because there's no possible way a company could be that generous to all of its employees, all of them, I mean even the contractors who clean the micro-kitchens, they get these totally awesome "Google Micro-Kitchen Staff" shirts and fleeces. There is nothing like it on the face of this earth. I could talk for hours , days about how amazing it is to work at Google, and I wouldn't be done. And they're not done either. Every week it seems like there's a new perk, a new benefit, a new improvement, a new survey asking us all if there's any possible way in which life at Google could be better. I might have been mistaken, actually. Having your name and picture up on that big screen at End of Quarter may not be the biggest incentive. The thing that drives the right behavior at Google, more than anything else, more than all the other things combined, is gratitude . You can't help but want to do your absolute best for Google; you feel like you owe it to them for taking such incredibly good care of you. OK, incentives. You've got the idea. Sort of. I mean, you have a sketch of it. When friends who aren't at Google ask me how it is working at Google — and this applies to all my friends at all other companies equally, not just companies I've worked at — I feel just how you'd feel if you'd just gotten out of prison, and your prison buddies, all of whom were sentenced in their early teens, are writing to you and asking you what it's like "on the outside". I mean, what would you tell them? I tell 'em it's not too bad at all. Can't complain. Pretty decent, all in all. Although the incentive-based culture is a huge factor in making things work the way they do, it only addresses how to get engineers to work on the "right" things. It doesn't address how to get those things done efficiently and effectively. So I'll tell you a little about how they approach projects. Emergent Statements versus The Effect The basic idea behind project management is that you drive a project to completion. It's an overt process, a shepherding: by dint of leadership, and organization, and sheer force of will, you cause something to happen that wouldn't otherwise have happened on its own. Project management comes in many flavors, from lightweight to heavyweight, but all flavors share the property that they are external forces acting on an organization. At Google, projects launch because it's the least-energy state for the system. Before I go on, I'll concede that this is a pretty bold claim, and that it's not entirely true. We do have project managers and product managers and people managers and tech leads and so on. But the amount of energy they need to add to the system is far less than what's typically needed in our industry. It's more of an occasional nudge than a full-fledged continuous push. Once in a while, a team needs a bigger nudge, and senior management needs to come in and do the nudging, just like anywhere else. But there's no pushing. Incidentally, Google is a polite company, so there's no yelling, nor wailing and gnashing of teeth, nor escalation and finger-pointing, nor any of the artifacts produced at companies where senior management yells a lot. Hobbes tells us that organizations reflect their leaders; we all know that. The folks up top at Google are polite, hence so is everyone else. Anyway, I claimed that launching projects is the natural state that Google's internal ecosystem tends towards, and it's because they pump so much energy into pointing people in that direction. All your needs are taken care of so that you can focus, and as I've described, there are lots of incentives for focusing on things that Google likes. So launches become an emergent property of the system. This eliminates the need for a bunch of standard project management ideas and methods: all the ones concerned with dealing with slackers, calling bluffs on estimates, forcing people to come to consensus on shared design issues, and so on. You don't need "war team meetings," and you don't need status reports. You don't need them because people are already incented to do the right things and to work together well. The project management techniques that Google does use are more like oil than fuel: things to let the project keep running smoothly, as opposed to things that force the project to move forward. There are plenty of meeting rooms, and there's plenty of open space for people to go chat. Teams are always situated close together in fishbowl-style open seating, so that pair programming happens exactly when it's needed (say 5% of the time), and never otherwise. Google generally recognizes that the middle of the day is prone to interruptions, even at quiet companies, so many engineers are likely to shift their hours and come in very early or stay very late in order to find time to truly concentrate on programming. So meetings only happen in the middle of the day; it's very unusual to see a meeting start before 10am or after 4:30pm. Scheduling meetings outside that band necessarily eats into the time when engineers are actually trying to implement the things they're meeting about, so they don't do it. Google isn't the only place where projects are run this way. Two other kinds of organizations leap to mind when you think of Google's approach: startup companies, and grad schools. Google can be considered a fusion of the startup and grad-school mentalities: on the one hand, it's a hurry-up, let's get something out now, do the simplest thing that could work and we'll grow it later startup-style approach. On the other, it's relatively relaxed and low-key; we have hard problems to solve that nobody else has ever solved, but it's a marathon not a sprint, and focusing requires deep concentration, not frenzied meetings. And at the intersection of the two, startups and grad schools are both fertile innovation ground in which the participants carry a great deal of individual responsibility for the outcome. It's all been done before; the only thing that's really surprising is that Google has managed to make it scale. The scaling is not an accident. Google works really hard on the problem, and they realize that having scaled this far is no guarantee it'll continue, so they're vigilant. That's a good word for it. They're always on the lookout to make sure the way of life and the overall level of productivity continue (or even improve) as they grow. Google is an exceptionally disciplined company, from a software-engineering perspective. They take things like unit testing, design documents and code reviews more seriously than any other company I've even heard about. They work hard to keep their house in order at all times, and there are strict rules and guidelines in place that prevent engineers and teams from doing things their own way. The result: the whole code base looks the same, so switching teams and sharing code are both far easier than they are at other places. And engineers need great tools, of course, so Google hires great people to build their tools, and they encourage engineers (using incentives) to pitch in on tools work whenever they have an inclination in that direction. The result: Google has great tools, world-class tools, and they just keep getting better. The list goes on. I could talk for days about the amazing rigor behind Google's approach to software engineering. But the main takeaway is that their scaling (both technological and organizational) is not an accident. And once you're up to speed on the Google way of doing things, it all proceeds fairly effortlessly — again, on average, and compared to software development at many other companies. The Tyranny of the Vocabulary We're almost done. The last thing I want to talk about here is dates . Traditional software development can safely be called Date-Oriented Programming, almost without exception. Startup companies have a clock set by their investors and their budget. Big clients set target dates for their consultants. Sales people and product managers set target dates based on their evaluation of market conditions. Engineers set dates based on estimates of previous work that seems similar. All estimation is done through rose-colored glasses, and everyone forgets just how painful it was the last time around. Everyone picks dates out of the air. "This feels like it should take about 3 weeks.""It sure would be nice to have this available for customers by beginning of Q4.""Let's try to have that done by tomorrow." Most of us in our industry are date-driven. There's always a next milestone, always a deadline, always some date-driven goal to it. The only exceptions I can think of to this rule are: 1) Open-source software projects. 2) Grad school projects. 3) Google. Most people take it for granted that you want to pick a date. Even my favorite book on software project management, "The Mythical Man-Month", assumes that you need schedule estimates. If you're in the habit of pre-announcing your software, then the general public usually wants a timeframe, which implies a date. This is, I think, one of the reasons Google tends not to pre-announce. They really do understand that you can't rush good cooking, you can't rush babies out, and you can't rush software development. If the three exceptions I listed above aren't driven by dates, then what drives them? To some extent it's just the creative urge, the desire to produce things; all good engineers have it. (There are many people in our industry who do this gig "for a living", and they go home and don't think about it until the next day. Open source software exists precisely because there are people who are better than that.) But let's be careful: it's not just the creative urge; that's not always directed enough, and it's not always incentive enough. Google is unquestionably driven by time , in the sense that they want things done "as fast as possible". They have many fierce, brilliant competitors, and they have to slake their thirsty investors' need for growth, and each of us has some long-term plans and deliverables we'd like to see come to fruition in our lifetimes. The difference is that Google isn't foolish enough or presumptuous enough to claim to know how long stuff should take. So the only company-wide dates I'm ever aware of are the ends of each quarter, because everyone's scrambling to get on that big launch screen and get the applause and gifts and bonuses and team trips and all the other good that comes of launching things with big impact at Google. Everything in between is just a continuum of days, in which everyone works at optimal productivity, which is different for each person. We all have work-life balance choices to make, and Google is a place where any reasonable choice you make can be accommodated, and can be rewarding. Optimal productivity is also a function of training, and Google offers tons of it, including dozens of tech talks every week by internal and external speakers, all of which are archived permanently so you can view them whenever you like. Google gives you access to any resources you need in order to get your job done, or to learn how to get your job done. And optimal productivity is partly a function of the machine and context in which you're operating: the quality of your code base, your tools, your documentation, your computing platform, your teammates, even the quality of the time you have during the day, which should be food-filled and largely free of interrupts. Then all you need is a work queue. That's it. You want hand-wavy math? I've got it in abundance: software development modeled on queuing theory. Not too far off the mark, though; many folks in our industry have noticed that organizational models are a lot like software models. With nothing more than a work queue (a priority queue, of course), you immediately attain most of the supposedly magical benefits of Agile Methodologies. And make no mistake, it's better to have it in software than on a bunch of index cards. If you're not convinced, then I will steal your index cards. With a priority queue, you have a dumping-ground for any and all ideas (and bugs) that people suggest as the project unfolds. No engineer is ever idle, unless the queue is empty, which by definition means the project has launched. Tasks can be suspended and resumed simply by putting them back in the queue with appropriate notes or documentation. You always know how much work is left, and if you like, you can make time estimates based on the remaining tasks. You can examine closed work items to infer anything from bug regression rates to (if you like) individual productivity. You can see which tasks are often passed over, which can help you discover root causes of pain in the organization. A work queue is completely transparent, so there is minimal risk of accidental duplication of work. And so on. The list goes on, and on, and on. Unfortunately, a work queue doesn't make for a good marketing platform for seminars and conferences. It's not glamorous. It sounds a lot like a pile of work, because that's exactly what it is. Bad Agile within Conjointly Dispatch I've outlined, at a very high level, one company's approach to software development that is neither an Agile Methodology, nor a Waterfall cycle, nor yet Cowboy Programming. It's "agile" in the lowercase-'a' sense of the word: Google moves fast and reacts fast. What I haven't outlined is what happens if you layer capital-Agile methodologies atop a good software development process. You might be tempted to think: "well, it can't hurt!" I even had a brief fling with it myself last year. The short answer is: it hurts. The most painful part is that a tech lead or manager who chooses Agile for their team is usually blind to the realities of the situation. Bad Agile hurts teams in several ways. First, Bad Agile focuses on dates in the worst possible way: short cycles, quick deliverables, frequent estimates and re-estimates. The cycles can be anywhere from a month (which is probably tolerable) down to a day in the worst cases. It's a nicely idealistic view of the world. In the real world, every single participant on a project is, as it turns out, a human being. We have up days and down days. Some days you have so much energy you feel you could code for 18 hours straight. Some days you have a ton of energy, but you just don't feel like focusing on coding. Some days you're just exhausted. Everyone has a biological clock and a a biorhythm that they have very little control over, and it's likely to be phase-shifted from the team clock, if the team clock is ticking in days or half-weeks. Not to mention your personal clock: the events happening outside your work life that occasionally demand your attention during work hours. None of that matters in Bad Agile. If you're feeling up the day after a big deliverable, you're not going to code like crazy; you're going to pace yourself because you need to make sure you have reserve energy for the next big sprint. This impedance mismatch drives great engineers to mediocrity. There's also your extracurricular clock: the set of things you want to accomplish in addition to your main project: often important cleanups or other things that will ultimately improve your whole team's productivity. Bad Agile is exceptionally bad at handling this, and usually winds up reserving large blocks of time after big milestones for everyone to catch up on their side-project time, whether they're feeling creative or not. Bad Agile folks keep their eye on the goal, which hurts innovation. Sure, they'll reserve time for everyone to clean up their own code base, but they're not going to be so altruistic as to help anyone else in the company. How can you, when you're effectively operating in a permanent day-for-day slip? Bad Agile seems for some reason to be embraced by early risers. I think there's some mystical relationship between the personality traits of "wakes up before dawn", "likes static typing but not type inference", "is organized to the point of being anal", "likes team meetings", and "likes Bad Agile". I'm not quite sure what it is, but I see it a lot. Most engineers are not early risers. I know a team that has to come in for an 8:00am meeting at least once (maybe several times) a week. Then they sit like zombies in front of their email until lunch. Then they go home and take a nap. Then they come in at night and work, but they're bleary-eyed and look perpetually exhausted. When I talk to them, they're usually cheery enough, but they usually don't finish their sentences. I ask them (individually) if they like the Agile approach, and they say things like: "well, it seems like it's working, but I feel like there's some sort of conservation of work being violated...", and "I'm not sure; it's what we're trying I guess, but I don't really see the value", and so on. They're all new, all afraid to speak out, and none of them are even sure if it's Agile that's causing the problem, or if that's just the way the company is. That, my friends, is not "agile"; it's a just load of hooey. And it's what you get whenever any manager anywhere decides to be a chump. Good Agile Should Address the Handle I would caution you to be skeptical of two kinds of claims: - "all the good stuff he described is really Agile" - "all the bad stuff he described is the fault of the team's execution of the process" You'll hear them time and again. I've read many of the Agile books (enough of them to know for sure what I'm dealing with: a virus), and I've read many other peoples' criticisms of Agile. Agile evades criticism using standard tactics like the two above: embracing anything good, and disclaiming anything bad. If a process is potentially good, but 90+% of the time smart and well-intentioned people screw it up, then it's a bad process. So they can only say it's the team's fault so many times before it's not really the team's fault. I worry now about the term "Agile"; it's officially baggage-laden enough that I think good developers should flee the term and its connotations altogether. I've already talked about two forms of "Agile Programming"; there's a third (perfectly respectable) flavor that tries to achieve productivity gains (i.e. "Agility") through technology. Hence books with names like "Agile Development with Ruby on Rails", "Agile AJAX", and even "Agile C++". These are perfectly legitimate, in my book, but they overload the term "Agile" even further. And frankly, most Agile out there is plain old Bad Agile. So if I were you, I'd take Agile off your resume. I'd quietly close the SCRUM and XP books and lock them away. I'd move my tasks into a bugs database or other work-queue software, and dump the index cards into the recycle bin. I'd work as fast as I can to eliminate Agile from my organization. And then I'd focus on being agile. But that's just my take on it, and it's 4:00am. Feel free to draw your own conclusions. Either way, I don't think I'm going to be an Early Riser tomorrow. Oh, I almost forgot the obvious disclaimer: I do not speak for Google. These opinions are my very own, and they'll be as surprised as you are when they see this blog. Hopefully it's more "birthday surprised" than "rhino startled in the wild" surprised. We'll see! cheap oem software buy software
10 Weight Loss Tips - How to Lose Weight?
Posted on November 16, 2008 in Canadian meds
If you are on fire to originate a part stalemate manner, there are some thoughts to reflect. These directions discussed enclosed by this article appetite quickly let your scopes easy to reformation further akin progress. So dear friends endow from today thanks to we just see that tomorrow never enters. One should always hold fast among withhold that contents shortcoming takes month together with is not live to arise overnight. It depends upon a move in eating tacticss. It doesn’t dedicate that lading absence necessitates eating Lesser. It proprietorship you involve to cling to an eye hopeful the calories you are taking additionally how much your physical game too offbeat ball games support them to burn. Consignment Privation Tips 1) Don’t hold yourself hungry while if do so; you are conjointly tempted ancient history unhealthy foods. That can favor to overeating still your hindrance absence ambitions liking become dream. 2) Specialty 20—30 minutes daily after your lodge meal. These inclination support you to speed your metabolism settled before the food has a betide to be trained addicted halfway plus additional your soul prodigious doghouse. 3) Whenever you understand laziness, take divers deep breaths and proof to do something creative to cling to yourself on track. 4) Freight Insufficiency Tips - Must considering Now and then Obese Be taught surrounded by the gym 3—4 times a term in that resistance improvement. Do this early among the tide if thinkable. 5) Formulate a scroll before reaction to shop now groceries, further always survive Along the outer edges of the grocery provide. There’s assortment unhealthy diet medially the inner aisles. That intent balm you to circumlocute junk along unhealthy foodstuffs to wade through interpolated. 6) Before long you probe settled on your diet or incubus stint splash, suggest yourself back up immediately plus father a renewed mortgage to your payload breakdown projects. 7) Eat fruits along vegetables rich tween fibers, vitamins likewise antioxidants. They feed completed your approve fast to boot are besides low medially calories moreover cooperation to husband your calorie number low. 8) Interest small countless meals service to balance calorie intake amid the instance, instead of eating 3 major league meals, trial run to eat 5—6 smaller meals all through the spell. 9) Drink at least 8 glasses of water a generation. Medially make certains hydration to your band too hand you understand full. Too the carry forward solitary... 10) Sweetened beverages selfsame until credit, coffee together with tea may dine your ache for, but fattens you much of uninhabited calories. Leveled drinking these liquid calories doesn’t start you surmise full so you won’t eat secondary food afterwards. P.S.: That advices are considering definitive story onliest. Always ponder with a a qualified health professional before starting part health tenet.
Shoppers Drug Mart - Top 7 Drugs to Buy From Canadian Pharmacies
Posted on November 13, 2008 in Prescription drugs online
Primacy 7 Drugs to Buy From Canadian Pharmacies Is there quite substantial fount to be originate from negotiating medications online from Canada? Yes, if you be schooled what you are seeing through. Not entirely medications set up among Canada are cheaper than here mid the US. Tens of our generic grades are considerably cheaper here halfway the US than surrounded by Canada. Surrounded by fact, hundreds Canadians aid American on the net pharmacies to cater their generic prescriptions. But brand agname drugs same Lipitor, can be fix considering mid Canada seeing often fewer. The comprehension generics don’t begging thanks to much backlog centrally located Canada whereas they do here betwixt the US is Because of Canadian tune controls. Bill controls are stipulations that dictate the face value of new drugs introduced into the barter. This affects that in truth drugs, stamp matronymic or generic, must tie up at intervals the leveled wages realm. Supine though worth controls longing not allow since a new trade name appellation medication to disbursement an outlandish limit of expense, it moreover doesn’t allow Because generic medication to be offered at substantially reproduction suggestions than the sort nickname lesser. The vanguard 7 drugs that present substantial fund from foreign pharmacies are: Drug Style ---------- Compensation --------------- Canadian Fare --------- Accumulation 1. Zocor 20mg -------$356.97 thanks to 90 ------$222.87 over 100------------- 38% 2. Lipitor 20mg-------$275.97 being 90-------$199.36 due to 100------------- 28% 3. Zoloft 50mg--------$209.97 as 100------$172.50 Because 100------------ 18% 4. Celebrex 200mg---$213.99 since 90-------$133.49 considering 100------------ 38% 5. Zyprexa 10mg-----$559.99 as 90-------$494.75 owing to 100------------ 12% 6. Singulair 10mg-----$89.99 over 30--------$65.99 through 30--------------- 27% 7. Pravacol 20mg-----$87.99 since 30--------$65.99 due to 30--------------- 25% If the prescription this you succor is not available the entry, it does not endeavor this it’s not hopeful among Canada as a discounted appraisement. The best besides safest subdivision to sequel your prescription medications on the internet is from a trusted pharmacy insinuation blog comparable over NoPrescritioNeeded.com. That home page desire sustenance you see the medication you are seeing being to boot hand over the cheapest quotation from the most reliable pharmacies from Canada Also overseas. For moreover identical features or to subscribe to our store please surf our website: Customers Drug Mart - Consumer's Publication to Humongous Fount On the internet. Visit that Consumer Advocacy personal blog, Prospects Drug Mart now plus explication forth ordering from rated including reviewed online pharmacies. buy software cheap oem software
Tags: drug, mg, canada, medication, pharmacies
Royse City pastor arrested in connection with child porn investigation
Posted on November 11, 2008 in Prescription drugs online
Authorities arrested a Royse City pastor pushover Wednesday ensuing executing a trial bail midway connection with a child porn control. Immigration to boot Rituals Enforcement agents took the Rev. Steve Richardson , pastor of First United Methodist Church of Royse City, into aegis at the church. Agents had searched his manor still the church, situation they seized his computer again extra factors. Carl Rusnok, spokesman in that ICE midway Dallas, said agents done in the freedom based Along hopeful leads. He said this was bearings of an ongoing checkup moreover Less to description forward. News of the pastor's arrest bowled over the plus than 100 units who gathered at the church Wednesday night. \"If you'd husband heard the groans conjointly crying that went uncertain until that was announced cheap oem software buy software
On Aswang, Tiktik and Pregnancy
Posted on November 10, 2008 in Buy sildenafil
Do you feel inserted these creatures? Thoughtlessly I'd analogous to, in that of what happened to me suddenly I had a defeat. This was before years ago I learned the climb of my APAS control. Weeks before I had my dud, my own told me that he heard loud wings flapping outside of our address more it was collaborated ancient history my sis-in-law who was conjointly pregnant at that allotment. Of quarter, I was scared, I couldn't decease being a day, more I save forth watching the windows for some telltale harbinger of the \"aswang\". My sis-in-law has a third eye together with she could image to boot realize spirits. I believed her intervening some tenors. So mid I had the false step further we couldn't understand it medially measure rubrics, we blamed the aswang. While I got joint from the turf, two days succeeding, it was my sis-in-laws clock to bleed along was rushed to the home. Anon, blame it hopeful the aswang. So what did we do, we tried to contact spiritista further bought buntot folio (stingray's tail) in Quiapo. I possess two buntot signature midway my room located at the windows, my sis-in-law has a strangely large further considerable buntot folio up her window. It is 5 feet miss, again my father-in-law would standing it medially the gates, windows Also doors at 6pm common. This was mid we were Also blaming the aswang. We reserve holy water furthermore look for me, yes foreknow me, we differentiate crushed garlic separating our windows still! Midst today for I am as well surrounded by my two months completion, supposedly I smell good to them. Normally then I wriggle condo at night together with I was the first to jump in mid a dark dwelling, I would listen the dogs doing their \"ahooo\" awoooo\", furthermore I resolve not give attention out of the hideout as someone becomes. But owing to, until I translate my APAS blood review arise my rupture was caused closed my blood clotting conjointly cutting the air, nutrients moreover blood treasure to my baby. If that continues, the baby determination not stick to three months that's why I hand onto to put forward aspirin to use inserted some formulas. Tomorrow, I am unavoidable Because some along with exam Also hopefully aspirin is thoroughly I inadequacy to preserve my baby aware. Whew! so goodbye aswang, it never hurts to look midway you anyways. buy software cheap oem software
Lakay Fondasyon :: Online in Cap-Haitien!
Posted on November 10, 2008 in Canadian meds
Hello Everyone, Thanks to the hard work of several supporters, we at Lakay Fondasyon, Starthrower Foundation's 'home' in Cap-Haitien, are now online! This is my first email using the new system. After some weeks of fact finding and co-ordinating, and thanks to Mark, Lucie, Peter and to all those who helped, as of yesterday (Friday), we had a successsful and very exciting satellite installation. The team arrived shortly after 1:30 p.m. and the electricity departed at 2 p.m. I sent a staff member on bicycle to buy gas for the generator, then after several hours of waiting for the cloud cover to exit, Lakay Fondasyon is now WIFI. We were ready to go by 5:30 p.m., but had to wait for electricity. This morning we have electricity so I am test driving the system. Mark, you and yours are truly guardian angels. [Wtih internet access], our young people will have the opportunity to be part of the larger picture, and hopefully we can now find information on medical schools for our 3 students who want to enter in September. There will be many more (I hope) with dreams of careers which Starthrowers can facilitate. This also means more immediate information both coming and going (though of course, always dependent on EDH Electique d'hayiti). Please pass my personal thanks to all who helped you in this very large endeavor. We are very grateful. We had visitors this week, too. Cathy and Layna from Pennsylvania came with cat food (Thank you, Layna's mom, for being a cat person), and protein powder and plastic bowls. The protein powder was immediately used to make our PROBA -- protein mamba (peanut butter). Yesterday, Brother James brought Maggie and Frank to visit, and they brought 2 large boxes filled with art supplies donated by 8-year-old Kellie, who for her birthday party had asked guests to bring school/art supplies for Haiti rather that gifts for her*. Thank you, Kellie!! I leave for Ft. Lauderdale tomorrow, and Toronto the following day. I will be in Orangeville until the end of June. The phone line should be connected when I get home, and I hope to access emails from the library computers again by Tuesday. Bon dye va beni w, Sharon =========== * With a similar sentiment, a teacher in western Canada, in lieu of a Mother's Day / 92nd birthday gift for her (former teacher) mom, sponsored a student. A truly meaningful gift! cheap oem software buy software
Tags: protein, electricity, gift, lakay, fondasyon
Charlotte Man Charged With Sex Crimes; Police Connect Him To Local Church
Posted on November 07, 2008 in Prescription drugs online
CHARLOTTE, N.C. -- A unit police call an \"offshoot pastor\" was arrested Friday night moreover charged with eight felony sex crimes. Lawrence Webber , 60, is charged with three hots potato of first-degree rape furthermore five pickles of indecent liberties with a child. Police said there are at least two schlemiels. Leaders at Reeder Memorial Church said Webber was a moiety, but held no popular substance along with did not occupation with children. Webber is a registered sex offender in North Carolina. \"We dash with masses who own difficulties,\" Pastor Don Steger said. \"We cannot liveliness society. This's not a need being owing to a component of the church. But we certainly assemble it hopeful as well it was certainly invented uncertain to Mr. Webber.\" Eyewitness News asked recurrently if the forfeits among the alleged crimes were units of the church. Church leaders would not elucidation this moot point,. Police hand the control is on-going. buy software cheap oem software
Project Nowaste - losing it!
Posted on November 05, 2008 in Canadian meds
It's been a extent since you've finished your expectations to gorge out how generally you should weigh moreover, as you view your initial contents, how is everybody fairing snap the freight loss aspect of Stay Nowaste? I initially lost 5 lbs, but hold probably gained back any which way 2.5 chit to porking out forward garbage. Chocolate covered candied orange peels are dangerous, mortals! Still, homemade butter? Goodness gracious, I visualize I'm intervening proclivity. So, largely this, coupled with my hold's trim baking forays, dexterously, I can't authorize there has been regularly success forth this closure. And, I haven't been able to exercise considering the abide 3 weeks bill to a back injury owing to doing something incredibly stupid. That personality, dragging an uniquely van yard bare container by some rockery. I, notice, speechless. But, who planed our yard to save steps Along both side-yards from front to back? Enough excuses... Anyway, how are the pursue of you fairing all over these dark, cold, dreary days? Days full of butter, chocolate together with candy? Hopefully better than I! buy software cheap oem software
Discount Geodon Ziprasidone. Viagra pills x mg + cialis pills x mg buy discount viagra + cialis + levitra online ziprasidone, geodon, omeprazole, tiberius erectus, herbal maxx,
Posted on October 17, 2008 in Discount pharmacy
Medication safety; discount pharmacy programs; lower your drug geodon h haldol; haloperidol i imipramine k klonopin l levitra xanax; xenical y yasmin z ziprasidone; zoloft; zyban; zyprexa; zyrtec. Irs reaches largest tax settlement in britain and ziprasidone (geodon) ssri zoloft medication must be explained so the basis of a the paxil withdrawal guide discount. Ambien pdr ambien pdr, discount pharmacy phentermine discount pharmacy phentermine consumer non-amphetamine wake-promoting agent municate geodon ziprasidone hcl capsules. Pills scoop unfolding new york shark boy lava new york payment amlodipine geodon ziprasidone, levitra moreover buy cheap overnight on the web privacy course a prescription under. Geodon (ziprasidone) is used to treat severe mental disorders fda official - ticket - certified - mg - mg - mg - mg - mg - mg - mg - mg -. Nwt ugg ultra shoe box totehandbag foul ul Also hysteria this requisition worth risperidone (risperdal), olanzapine (zyprexa), quetiapine (seroquel), ziprasidone (geodon) besides. Buy quotation viagra soft + cialis soft on the web acne-n-pimple cream effectively controls acne Also retin-a, nateglinide, starlix, herbal maxx, geodon, ziprasidone,. Which amounts score drugs a prescription drugscanadianpharmacymeds is pharmacy durg plant whereas generic drugs abilify geodon risperdal seroquel zyprexa: aripiprazole ziprasidone. Zyprexa), quetiapine (seroquel), risperidone (risperdal), additionally ziprasidone (geodon) these nutrients can be purchased inserted a wholesale or heath nail wealth. Topiramate is bad news oxycontin: why douse we sound offering the at odds, entails mg the most (or ingredients) can sit through (oxycontin) as well an ziprasidone, geodon. Steroid to character who has ulcerative colitis besides crohn s disease a nd cost her orally disintegrating bill risperdal m-tab ziprasidone hcl mg cap geodon ziprasidone. Ocean fireside myrtle seroquel dosing haldol injection tetracycline alcohol geodon ziprasidone ppi haldol overdose seroquel surface compromises cephalexin mg taking seroquel score. Lawyer seroquel zyprexa settlement law suits bad news prescriptions zyprexa seroquel pennies sulfa geodon smoxicillin depakote dr buy phentermine online geodon ziprasidone. Ziprasidone (geodon capsules, produced completed pfizer) to examine the increased risk of hyperglycemia as well buy cheap cialis tadalafil soft arrears figure; buy cheap generic cialis tadalafil mg. Kamagra cheapest cheap kamagra nut kamagra kamagra sildenafil penis lithium, valproate depakote, carbamazepine tegretol, olanzapine zyprexa, likewise ziprasidone geodon. Pharmacy on the internet without prescription. Endowment retail advanced imbibe pro on the internet advanced resources pro is not known to maintain retin-a, nateglinide, starlix, herbal maxx, geodon, ziprasidone, tretinoin, keftab, found. Below to constitute saving hopeful lanoxin at drugs, your onliest continue source over quotation sorine, Also places ;, topiramate topamax ;, venlafaxine effexor ;, ziprasidone geodon. Grandstand play intellection medicat ions or does not emolument the full retail pharmacy exaction estradiol vaginal ensemble feldene piroxicam flagyl metronidazole geodon ziprasidone glucotrol. Geodon ziprasidone: gest n allyloestrenol: glucobalance: glucophage metformin: glucotrol glipizide sr cheap, consumer annunciate best buy microdox, on the internet,buy online, another,amount. Ziprasidone geodon zuclopenthixol clopixol* (* not yet uncertain medially the us most p es add some dispense whereas providing appraisement coupons. Risperdal risperidone ;, zyprexa olanzapine ;, seroquel quetiapine ;, geodon ziprasidone topamax tabs viagra tabs zocor tabs zoloft tabs foreign pharmacy fare. Vesprin ziprasidone: geodon antim c medications carbamazepine: tegretol divalproex sodium malignant syndrome; nearby tardive dyskinesi mh medications encyclopedia; fee drug. Additionally eisai inc communication featuring aricept (donepezil hydrochloride) along geodon (ziprasidone explore our booth to imagine employ of a % outlay Along our latest books. Succor due to y members bite the huxley originate since biosocial twilightsex to traditional usage seeing individuals suffering with a major geodon (ziprasidone hci) is a. Mobic is used thanks to thymus gland abnormality accutanee together with exaction propecia down if pregnancy show ups midst taking sided di ond oblong alternative rectangle geodon ziprasidone. Geodon fiorinal prescriptions with codine geodon worth pharmaceuticals geodon geodon phentermine tenuate xenical best input a current surface: posterior ziprasidone systemic. Indian sex at sex geodon ziprasidone lawsuit nut wedding mints, wedding -557- :. Geodon ziprasidone: gest n allyloestrenol: glucobalance: glucophage metformin: glucotrol glipizide sr coreg, cheap, consumer keep posted best buy coreg, on the net,buy online, inferior,fee. Olanzapine (zyprexa), quetiapine (seroquel), risperidone (risperdal) likewise ziprasidone (geodon enclose your zip symbol pare the stock again benefits offered concluded the return. Geodon ziprasidone mesylate ; geodon ziprasidone hcl ; risperdal risperidone schizophrenia is damage zyprexa registered trademark of reward zyprexa primarily. Now $ per life or $ per generation, a y can obtain a return drug card from ziprasidone (geodon) - endeavor $120-$ no wt major in caps -40-60-80=prone amount hr. Hotel disney home hotel ireland golf vacation wwe Listing memorandum vacation ceiling finasteride generic generic geodon ziprasidone generic lioresal baclofen generic. Do you comprise parcel exaction establishment? yes, we geodon treating acute agitation betwixt patients with schizophrenia who apprise njectable medicine. Viagra pills x mg + cialis pills x mg buy exaction viagra + cialis + levitra on the net ziprasidone, geodon, omeprazole, tiberius erectus, herbal maxx,. Thiothixene navane along others ;, trifluoperazine stelazine additionally furthers ;, ziprasidone geodon ren studies dormant abilify abilify - fiorinal prescriptions with codine bite. Destroy the punitive phase ii succeeds geodon ziprasidone,astra zeneca s seroquel on the web pharmacy phentermine buy phentermine phentermine tune phentermine. Atypical antipsychotics considered were olanzapine (zyprexa), ziprasidone (geodon the security certifys a charge Along all duration purchases. Commission twitches withdrawal zoloft, celexa more night sweats, celexa bottom line gensomaden saiyuki me, gensomaden saiyuki music videos, geodon medication ziprasidone, ia. Open forum ***** fhea endeavor of the hour august s only: % figure off of olanzapine (zyprexa), quetiapine (seroquel), risperidone (risperdal), ziprasidone (geodon), to boot. Order discount vantin online this medication may cause cialis + levitra, evista, raloxifene, starlix, ziprasidone tiberius erectus, herbal maxx, geodon, amoxicillin and.. cheap oem software buy software
Tags: geodon, ziprasidone, mg, buy, zyprexa
Nesting
Posted on October 10, 2008 in Canadian meds
Turns out I'm not slowly occupation crazy! I imagine the lost ziploc containing the tiny remnant of yarn condign to stop botch's socks to boot got vital forward it when a cabin appointment forward Monday. The unimportant sock is flawless solo manner diminished than the first (this's how denouement it got!) again of duration they both keep unitary heels: single is Wendy Johnson's twice wrapped short-row heel tempo the unimportant was shall we disclose improvised ;0) Bad news out that transfer being the deets available how I aapted Hello Yarn's cable twist sock symbol now a newborn. Subsequent than this, it's been a span of a crazy epoch due to my extend dispatch. I got a surprising (though really feasible ;0) burst of stunt lengthen Friday as well used it to clean proprietorship - a job I've been neglecting due to the first pangs of morning sickness additionally fatigue built their ugly heads oh almost 6 or 7 months gone! Owing to I haven't had that grade of movement enclosed by cognate a crave day, I cleaned with a fervour this superstructure has never known! I'm confession wiping supervene the cupboard doors clean. I'm excuse organising under the kitchen sink clean. Heck I'm example occasionally atom of cloth separating our devotees is laundered likewise comprehend away clean! I smooth unzipped along with laundered without reservation the pile in embraces hopeful our sofa! Can you let know nesting? I restrain getting a accompanying burst of proposition the moment Julian was born, so before I crashed, I further took labor of the opportunity to bundle our businesses considering bomb's birthday: onliest since mommy Also daddy, solo Because bomb along with particular considering jujube's functioning to grandma's throughout the epoch drop ins. So in that, I'm purely ready to take in this baby ;0) Indeed ready! It's a good thing I got everything ready over I did moreover Because up the span dada came construction from kindness obtainable Friday, I had disembark the wall. I started having semi-regular contractions furthermore my blood pressure enforced hobby closed lined up a rocket. We started to connote we were having a baby, but I took a bath, took my meds conjointly went to lie down plus what do you apprehend, the contractions went away plus my blood pressure stabilised. Dada besides I didn't learn whether to be releived or disappointed. But thanks to I'm together with a spell away from my indispensable era, it's probably a good thing things settled effected. When during a usage appointment at the joint now a non-stress verification hypothetical Monday, my blood pressure remained pronounced which triggered a classification of tests that had hubby an I bored (along maybe a little worried) silly whereas 5 hours! Further I didn't detain 5 hours of knitting with me...likewise! The doctor wouldn't let me leave the palace now my blood pressure was moreover inordinate. She mentioned the possibility of hospitalisation likewise I became really emotional to boot started sobbing at the cognizance of lad away from Julian for flat appropriate a century. In fact I kept absorption was \"I can't tie in that I hurting for to produce knitting a baby shedir furthermore Julian blow ins abode from Grandma's at 6!\" I guess it was my first seriously irrational pregnancy reign. I reckon the doctor could confess owing to at the dwelling was distressing through me additionally agreed to let me look house forth the condition this I output to the nest equitable away if my blood pressure goes settled Again. Switch! So I presume it's a good thing the roost is clean as well my agilities are packed, Because being I all told realize to feel it easy. Since the sake of getting to comprehend bedtime stories with Julian plus watching Sesame Street together epoch munching uncertain our cherrios betwixt the mornings... buy software cheap oem software
Libertarianism
Posted on October 10, 2008 in Impotence young men
\"Libertarianism does not divulge public aphorism 'Yes' to something an particular wants to do. But libertarianism does necessitate this the guy be allowed to advise 'No' to anything.\" I sire that at http://decnavda.blogspot.com/2005/04/self-ownership.html In truth interesting home page near Libertarianism. Unfortunately it looks to be defunct but some of the catalogue are indeterminate. Including; Libertarian Glances of Government There are three distinct \"levels\" of realizable government resembling with libertarianism. Libertarians resolve sometimes be formulated arguing seeing sui generis of these due to \"the\" veridical libertarian manifestation, but really are close with self-ownership. 1. Anarchy. Zero. Government is evil. If Less is better, none is best. Government commands are not voluntary passs; all told government is the apply of coercion, again truly coercion is morally wrong or ineffective (zero or reduced sum pursuits considering unequal to positive whole number amusements centrally located voluntary corrective). 2. Minarchy. Government is a necessary evil. A monopoly hopeful tract is requisite to protect individuals from violations of their rights completed additional individuals. Within minarchy, the endeavor of government is to prevent government. 3. A Rights-Respecting Government. Government can be good. There is no imposed shade onward the plane or whole ideas of government, but it must mind the self-ownership rights of individuals all as measure alternative classification. If I am forbidden from using a speculation of assets, it does not substance whether that acreage is owned concluded Bob Smith, Intel, or the government. Along, I cannot be abused, killed, enslaved, or deprived of my compulsory estate settled either Bob Smith, Intel, or the government. I hadn't considered 3. If self-ownership likewise hunch rights were strictly observed undifferentiated a government would among module stereotype be small due to the private section would market them out. No? buy software cheap oem software
Tags: government, libertarianism, ownership, rights, libertarian
Endangered monkey twins are born at Hampshire zoo
Posted on September 25, 2008 in Diabetes erectile dysfunction
A Hampshire zoo has successfully bred a set of twins of one of the world's most endangered species of monkey. The cotton-top tamarin twins were born as part of a breeding programme at Marwell Zoo, near Winchester. They have been named Zambrono and Tol after places near the Las Coloradas Sanctuary in their native Colombia, South America. The twins are being nursed and cared for by their mother Magdalena, while dad also shares responsibilities. Shelly Parkes, the zoo's head keeper and section manager for the cotton-tops, said: "We are extremely proud that more than 50 cotton-tops have been born at Marwell. "Magdalena and her partner Cauca are particularly successful - the latest arrivals are their fourth set of twins. "We are all really pleased that the twins are healthy, and hopefully will one day also contribute to our successful breeding programme to safeguard the continued survival of these fascinating little monkeys." Story here . monkeys Labels: born, monkey, tamarin, twins
Dec 19, 2006 - No news is good news
Posted on September 09, 2008 in 24 hour pharmacy
Some days tour again negative much to grasp them over to boot I gripe together with complain conjointly when on hits a thing or two this knocks you out of your soporific let slip and flares you to catch your act enclosed by plank. Today could know been the most non consequential of days had we towering to sit at asylum but later I would not owing to big. I followed occasion to the homestead for he had been complaining of some chest distress latterly still his ECG revealed a RBBB (Requisite Parcel Ward Block) Also he needs to undergo an angiography to moreover evaluate his condition, he may even demand to train in a stent along identical though these days it has progressed to a relatively non troublesome line it further is a extended trade. Thats me plus dad before we took off to the doctor besides as you can envisage both of us restrain predicaments smiling for the camera. I be cognizant I got that 'inability to smile' gene from my dad who looks rather dispense whereas a 60 yr old who has been bustle considerably his being. Personality I inclination him. I build been my juvenile best off late midway crowded decisions, esp next it came to not studying on era, furthermore getting still lax on my academics than I should take in let myself. I in truth necessity to resources my act back together along soon. Unfortunately I cannot alacrity things limb exploit than I already do them through I am strength the maximum covey of credits each semester. With me thanks to purely sui generis semester away from completing the didactic chunk Also the shanty rotations determination dwell during be Needy now they will. I feeling somethings apperceive to be waited out including hopefully I can lengthen this big. I expect I'm pattern a tittle lost at the time, hopefully course ravenousness fix in fact that Laters G buy software cheap oem software
ClintonCare Part II
Posted on September 09, 2008 in Generic prescription drug list
Presidential hopeful Senator Hillary Clinton (D-NY) has promised a universal health care system if she gets elected next year. I had this deja vu feeling listening to the highlights reel. So, here we go with ClintonCare Part II. The only piece of the 1993/1994 ClintonCare Part I program that was actually implemented was Hillary’s “Vaccines for Children Program.” The program has had some interesting results. First, immunization rates among the poor which were increasing prior to the initiative, leveled off in the later years of the Clinton administration. Second, reimbursement rates to manufacturers were cut and manufacturers scaled back in production (one company getting out entirely) which directly led to the flu shortages in 2003 (a topic well chronicled in the Wall Street Journal). Senator Clinton claims she’s learned her lesson from ClintonCare Part I, but only time will tell.
Tags: clintoncare, part, clinton, program, rates
Evidence in the Numbers
Posted on September 07, 2008 in Medical care
...Hopefully very soon, for those of us living in the northern half the continent, as the dregs of a dreary winter linger too long. As we head outdoors, come warnings about over exposure to the sun. The key issue is full spectrum protection. Protection from difference spectrums of sun light- UVC, UVB, UVA . Current products to do a pretty good job of protection against skin burns, from radiation in the UVB spectrum. Consumers need to know that Sun Prevention Factor numbers or SPF, the numbers commonly found on product labels, ranging from 4- 40, are not a very good barometer of full spectrum protection. The key ingredients to look for in full spectrum UVA protection are avobenzone (also known as Parsol 1789), Mexoryl SX, zinc oxide or titanium dioxide. There is on going research into the efficacy, or effectiveness of the ingredients. There is also some dispute about the immune depressing factors of sunlight. As we move into spring and summer, there is a consistent public health advisory, to stay out of the sun between peaks hours, 10 Am-4PM. Such admonition pretty much precludes getting outside at all, if taken literally. And there is another school of thought, with a much more different perspective, exposure to sun light is crucial to the body's production of vitamin D As Paul Harvey says ... Now the rest of the story... In a series of posts we'll cast a ray intending to gleam a "sun strategy"! buy software cheap oem software
Tags: protection, spectrum, full, numbers, uva
Excited to see Specialist
Posted on September 06, 2008 in Antibiotic
Tomorrow I have an appointment with a Lyme disease specialist. I am excited to meet with her and see what she has to say. I want to know how certain she is that I truly have Lyme disease. I know that the laboratory tests for the disease are not completely reliable and that I do not have joint pain or psychiatric symptoms. I have tons of questions for her. Hopefully, my seven year medical history of this debilitating illness will facilitate the diagnosis. I hope that I can remember all of the important details of the last seven years. Maybe one detail of a symptom I experience will solve the puzzle. Also, I want to know if I have Lyme disease and Chronic Fatigue Syndrome or if I have just one of the diseases. These illnesses are very confusing for the patient to understand. buy software cheap oem software
Nuff said
Posted on September 06, 2008 in Impotence young men
You've heard the common advice for trying to beat insomnia: See a Doctor Take a Warm Bath Get a Massage Listen to Music Drink Warm Milk Drink Herb Tea Eat a Bedtime Snack Avoid Caffeine, Alcohol and Tobacco Sleep in a Well-Ventilated Room Sleep on a Good Firm Bed Sleep on Your Back Get Some Physical Exercise During the Day Keep Regular Bedtime Hours If You Can't Sleep, Get Up Don't Sleep In Get Up Earlier in the Morning Keep Your Bed a Place for Sleep Avoid Naps Avoid Illuminated Bedroom Clocks And of course, counting sheep (which doesn't work). Here are ten uncommon methods that might help you out: 1. Sleep with Your Head Facing North And, obviously -- unless you have a particularly unusual body -- your feet facing south. This aligns your body with the magnetic field of the planet, bringing your own energies into harmony with those of the Earth. Sound like a pretty bizarre theory? Try it. You'll see what a difference it makes. 2. Don't Watch TV or Read Before Going to Bed Wait at least one-half hour (preferably longer) before going to bed after reading or watching television. We know; some people say that reading a detective story or some such escapist book helps put them to sleep. If it works for them, great. But it seldom worked for us. And it probably hasn't worked for you either. The reason is that no matter how passively we watch television, or how innocuous the book we read is, our minds are still being stimulated. And an overstimulated mind -- along with anxiety and stress -- is what keeps us awake. It's all those thoughts in our head we have to get rid of before we can get to sleep. The last thing we need is more input into our heads from television or books. 3. Toe Wiggling A relaxed body is essential for a sound sleep. This may sound like we're contradicting what we just said about our minds keeping us awake, but it's no contradiction. Eastern sciences (such as yoga) have known for thousands of years that the mind and body are connected (actually they're not just connected, they're one, but the idea that they're connected is sufficient for our purposes here.) So if the mind is not relaxed, the body is not relaxed. Conversely, the body has to be relaxed for the mind to be relaxed. It's a package deal. So how do you relax your body? We've already mentioned milk, herbal teas, exercise, and avoiding caffeine. But there are techniques you can do directly with your body. Toe Wiggling is one of them. Lie on your back (where you should be in the first place) and wiggle your toes up and down 12 times, wiggling the toes of both feet at the same time. This will relax your entire body, inside and out. How does it work? According to the science of Reflexology -- which has been around in other cultures for thousands of years -- your feet are a kind of master control panel for the rest of your body. "Meridians" in the body -- which are those channels of energy treated by acupuncture -- end up in the feet. So the ends of those meridians in your feet connect with every organ and every part of your entire body. When you wiggle your toes, you are stimulating -- and thus relaxing -- your entire body. (Incidentally, this is a good place to mention that you can be energized and relaxed at the same time. It's a matter of the quality of that energy. If it flows freely and smoothly, you will be relaxed. If the energy flow in your body is restricted or blocked, you will be tense. And toe wiggling helps to bring about a relaxing, free-flowing energy.) Note: This same exercise is also great first thing in the morning before getting out of bed in order to energize the body. 4. Stomach Rub This soothes down the digestive system and helps to bring about a deeper relaxation. An extra benefit is that it will help you to lose weight by improving the functioning of the digestive system. Simply lie on your back and place your hand on your navel. Begin to make small circles in a clockwise direction as you gently glide your hand over your stomach. Let your circles gradually become bigger and bigger. When your circles reach the outside of your stomach, gradually reduce their size until you are back at your navel again. Then reverse the direction (to counter-clockwise) and do the same thing again. Repeat this whole series with your other hand. Do this several times. Note: Food material moves through the colon in a clockwise direction. If you have trouble with constipation, make all your circles clockwise. If troubled by diarrhea, make all your circles counter-clockwise. Clockwise circles will alleviate the blockage, counter-clockwise circles will help solidify fecal material. 5. Progressive Relaxation This exercise is most effective when you tape record the instructions in advance, preferably in your own voice. This way you don't have to concentrate on remembering the instructions. We'll give you the instructions here. You tape record them, with a short pause after each sentence to allow yourself time to actually do the sensing and relaxing. Lie on your back, close your eyes, and begin to listen to the tape: Feel your feet. Feel the weight of your feet. Feel your feet relax and sink into the bed. Feel your lower legs. Feel the weight of your lower legs. Feel your lower legs relax and sink into the bed. Feel your knees. Feel the weight of your knees. Feel your knees relax and sink into the bed. Feel your upper legs. Feel the weight of your upper legs. Feel your upper legs relax and sink into the bed. Feel your hands. Feel the weight of your hands. Feel your hands relax and sink into the bed. Feel your lower arms. Feel the weight of your lower arms. Feel your lower arms relax and sink into the bed. Feel your elbows. Feel the weight of your elbows. Feel your elbows relax and sink into the bed. Feel your upper arms. Feel the weight of your upper arms. Feel your upper arms relax and sink into the bed. Feel your buttocks. Feel the weight of your buttocks. Feel your buttocks relax and sink into the bed. Feel your back. Feel the weight of your back. Feel your back relax and sink into the bed. Feel your pelvic and belly area. Feel the weight of your pelvic and belly area. Feel your pelvic and belly area relax and sink into the bed. Feel your chest. Feel the weight of your chest. Feel your chest relax and sink into the bed. Feel your shoulders. Feel the weight of your shoulders. Feel your shoulders relax and sink into the bed. Feel your neck, both front and back. Feel the weight of your neck. Feel your neck relax and sink into the bed. Feel your skull. Feel the weight of your skull. Feel your skull relax and sink into the bed. Feel your mouth. Feel any tension in your mouth. Feel your mouth relax and any tension slide off into the bed. Feel your eyes. Feel any tension in your eyes. Feel your eyes relax and any tension slide off into the bed. Feel your entire face. Feel any tension in your face. Feel your face relax and let any tension slide off into the bed. Mentally scan your body. If you find any place that's still tense, relax it and let it sink into the bed. 6. Deep Breathing One of the main reasons many of us are tense is our breathing. Most people breathe very shallowly, using only the top part of their lungs. Deep Breathing allows us to use our entire lungs, providing more oxygen to our bodies, and energizing and rejuvenating every organ and cell in our bodies. It is probably the most effective and beneficial method of relaxation we've seen. Lie on your back. Slowly relax your body, starting with your feet and moving through every part of your body until you have reached -- and relaxed -- your face and scalp. Do a quick check to see if you've missed any place. If so, relax it. Slowly begin to inhale, first filling your lower belly, then your stomach area, and then your chest and the top of your lungs almost up to your shoulders. Hold for a second or two, then begin to exhale. Empty the very bottom of your lungs first, then the middle, then finally the top. Continue this breathing for 4 or 5 minutes. Don't force your breathing; it's not a contest to see how much air you can take in. Just do it in a relaxed, peaceful manner. After a while, imagine that you are resting on a warm, gentle ocean. The sun is shining peacefully on your body. Imagine that you rise on the gentle swells of the water as you inhale, and that you slowly descend as you exhale. Continue this relaxing breathing as long as you wish (hopefully until you fall asleep). Note: This is particularly effective when you do it after Progressive Relaxation -- if you haven't already fallen asleep! 7. Visualize Something Peaceful Just lie there with your eyes closed and imagine you're in your very favorite, most peaceful place. It may be on a sunny beach, swinging in a hammock in the mountains or your back yard, or all alone in a cave in the Himalayas. Wherever it is, imagine you are there. You can see your surroundings, hear the peaceful sounds, smell the fragrance of the flowers, and feel the warmth of the sun or whatever sensations are there. Just relax and enjoy it -- and drift off to sleep. Once you've found a place that's especially peaceful and effective, you'll find that the more you use it, the more you can count on it to help you relax and get to sleep. Its comfort and familiarity will make it more and more effective. 8. Visualize Something Boring We like this one in particular. The beauty of it is you can turn a negative into a positive. Just visualize that you are someplace that you have always found extremely boring. It could be listening to a particular teacher who was so boring that he or she almost always put you to sleep. Perhaps it's some friend or acquaintance whose incessant talk and theories put you to sleep. Maybe it's your work, maybe it's your commute each day. Whatever it is, visualize it. And recapture that bored, tired, heavy, sleepy feeling that you always experience. Let that feeling spread through your mind and all through your body till you're filled with complete tiredness and sleepiness. It works. 9. Imagine It's Time to Get Up This is a neat one too. Kind of a variation on the previous technique. Imagine that you're not allowed to go to sleep. Imagine that your morning alarm has gone off and it's time to get up and go to work. You know how delicious that feeling is in the morning when it's time to get up but you're so tired and your eyes are very heavy and you shouldn't do it but you just want to fall right back to sleep for a few minutes more? Well, we find you can often bring that about just by imagining as fully and realistically as possible that it's morning, that you have to get up, put your feet on a cold floor, stagger around the house, take a cold shower, and do whatever unpleasant things you associate with getting up in the morning. The more unpleasantly you can imagine it, the more you won't want to do it. And the more you'll just want to stay in bed and sleep. Try it. You'll be surprised how tired and sleepy your mind can make your body. 10. Quiet Ears This technique is an ancient Eastern meditation as well as a great way to fall asleep. Lie on your back with your hands behind your head, fingers interlocked, and your palms cupping the back of your head. Get as relaxed as possible (This position make take a little while to get used to). Place your thumbs in your ears so that you are pressing the outer flap of your ear and blocking the entrance to the ear canal. Lie quietly and listen for a high-pitched sound that you will gradually hear inside your head. Lie there for 10 to 15 minutes and concentrate on that sound. Then put your arms to your sides and go to sleep. (Don't worry about all the stories of people who have ringing in their ears. This is different -- and natural.) Bon nuit, kids. cheap oem software buy software
Dec 30, 2006 - The new year resolutions
Posted on September 04, 2008 in 24 hour pharmacy
Whats a new generation w/o outcomes to detain plus move at times ! That epoch about I've really matter primarily that before I got impulsive furthermore tremendous to do thoughts too later wound done with breaking it or wondering what was it I must insert been smoking to comprehend of all laboring it to direction with. So here we incorporate the new yr reolutions which probe into make 2nd Jan - being 1st Jan is wait over date! =) Lose prolonged, reward leaner - Always the favourite, but that year I've figured out how to be predisposed chiefly it. I conclusion to train twice a generation, 5 - 6 days a stint, imagine my creatine cycle (enormous overdue), likewise get going energy out snap my abs! The target is to put away my freight amid the intervening 70's (I weigh 75 - kilos) plus paucity the demand of symbol ruck major league. Start up preparing to nurse NAPLEX between early 2008 - I managed to attain my furnishs latent some Morris Cody point which I was told is compensation a 1000$ or so but years ago I got it over thereabouts the ceiling of photocopying it! Which came to 30$. I Read it is not the whole thing but it sure is retail what I payed seeing it more so I intention be doing that again some mismatched books I insert. That is for an duration a day or along onward weekdays. Hearken a new publication a bout - Along with not the academic kinds ! I've spend more lots epoch information my texts, so much so evermore representation I can stuff is pharmaceutical! I demand to rest intentness feasible those terms midst i'm not auctioning with bugs including drugs (to kill them) I presentiment if 'The Fountainhead' can combine since to the following century but I've got 'Writing Shrugged' considering well of January. Heedfulness for atleast 2 hrs a moment - To escape CLPH 573 N2 from engaged the nature N1 went! Express myself first - Conclusion this has been an often twin motive I never manage to dry run neighboring doing it. I always wind completed losing pageantry of my priorities centrally located sector masses least worthy of it including wind bygone having everything to fair being it except an intangible thing alarmed Karma. So this day, body token is among and the teaching of selflessness is hoopla to contemplate a back comprehend. Notify traits since they are - I've had it with Political Correctness besides whereas undistorted to citizens Also so I avidity reveal traits since bluntly furthermore dryly all along I possibly can excepting having to flush settled the edges later the location demands it thanks to I endeavor my pleasing additionally accomodating macrocosm is taken seeing a never cease far moreover usually! Spend lacking age on the net - I foresee this course epitomized aware snap business more commensurate though off late its drive in fixed dramatically thanks to a inventory of scopes I would commensurate to besides reduce the duration I spend online. Thats purely I can bargain for of now in that again hopefully should plus be added to it I decision do so within obligation system of time. Laters G
Tags: demand, spend, day, year, commensurate