text:
Future Directions for Optimizing Compilers
Posted byregehr	 September 9, 2018 34 Comments on Future Directions for Optimizing Compilers
I wanted to write a manifesto-ish sort of piece about what compilers are supposed to look like in the future. Nuno was the obvious coauthor since I've talked to him about this topic so much that I'm overall not really sure which parts started out as his ideas and which were mine. The article didn't end up feeling like a good fit for a series of blog posts, so we've placed it on arXiv: Future Directions for Optimizing Compilers. The first paragraph of the paper gives the main idea:
As software becomes larger, programming languages become higher-level, and processors continue to fail to be clocked faster, we'll increasingly require compilers to reduce code bloat, eliminate abstraction penalties, and exploit interesting instruction sets. At the same time, compiler execution time must not increase too much and also compilers should never produce the wrong output. This paper examines the problem of making optimizing compilers faster, less buggy, and more capable of generating high-quality output.
We plan to keep revising the paper and would be happy to receive feedback on it.
Posted byregehr September 9, 2018 Posted inCompilers, Computer Science, Futurist, Software Correctness
How LLVM Optimizes a Function
What's the difference between an integer and a pointer?
34 replies on "Future Directions for Optimizing Compilers"
Suyog Sarda says:
This is a good read. One thing i hated about LLVM was the pattern matching in InstCombine Pass. There was a code for every possible permutation of the patterns and it kind of killed the essence by having a brute-force-ish approach.
Benjamin Shropshire says:
Two things I've wondered about optimizing compilers:
1) If they were allowed to take significantly more time and resources (e.g. >=10x) how much better a job could they do with little or no fundamentally new R&D, just what is already know today? Clearly that's not viable for most builds, but for actual release candidates or weekly builds of some projects, spending an extra day making it 1% faster might actually be worth the time.
2) What changes to the languages could be made to expand optimization opportunities even more? C++ move semantics are an example of this, but can we go further? E.g. what advantage would it provide if a type were able to allow relaxed copy semantics? I.e. allow the same kind of fast and lose with copies and lifetimes that integers can use? Would that permit more aggressive copy-elision and (N)RVO in enough places to warrant its use for types like std::string and std::shared_ptr?
John Payson says:
Many optimizations resolve around the idea that in cases where there are a variety of ways a compiler could perform an action, *all of which would meet application requirements*, it is helpful to allow compilers to freely select among them. A key point which I think often gets missed is that giving a compiler the freedom to choose in various circumstances from among actions which don't meet application requirements will impede optimizations by forcing programmers to write code whose behavior is always rigidly defined.
Because C is used on so many different platforms and for so many purposes, any fixed set of behavior which is defined uniformly, without extensions, on every implementation will be defined sub-optimally on most. According to the published Rationale, the authors of the Standard intended UB to encourage useful variety among quality implementations which could extend the range of semantics available to the programmer in various ways. I agree that good optimization would require a language specification that is "widely agreed upon" as fully specifying the semantics that should be available to programmers in a range of programming fields. The only way a single C Standard can hope to accomplish that, however, is by recognizing dialects (perhaps selectable via directives, or–at minimum–testable via predefined macros) which are targeted toward various purposes, and which offer behavioral guarantees appropriate to those purposes. As it is, the behavioral guarantees offered by the Standard are severely sub-optimal for anything other than a few specialized applications which will never be called upon to process data from possibly-malicious sources.
Most applications outside such specialized niches need will need to offer one of two general behavioral guarantees in cases where they are fed data they cannot process (perhaps because it is invalid, or it places higher demands on parts of the program than were expected).
1. Programs for some purposes my need to guarantee that if they report successful completion all output will have been computed as specified; when given data they cannot process, they may process an arbitrary amount of it (producing output in specified fashion) before giving up and reporting an error.
Note that optimizers may benefit significantly from being allowed to correctly process input in cases beyond those required by the Standard (as would happen if e.g. (x*15/3) was refactored into (x*5) without bothering to check whether computation of x*15 would overflow), and also from being allowed to exit early in cases where the program is going to fail without having to process all data up to the point of failure (thus allowing operations that might fail to be performed eagerly in cases where that would benefit efficiency).
2. Programs for other purposes may meet requirements if they produce essentially arbitrary output when given invalid data, provided they they uphold some loose behavioral constraints. Although different applications may need different constraints, that would often be best handled by having an implementation offer loose constraints but provide ways of tightening them.
For example, guaranteeing that arithmetic overflow will at worst yield a "wobbly" value with no other side effects, and that some operations, given a "wobbly" value, will select a non-wobbly result from among the wobbly value's possibilities, would allow programmers to give compilers much more freedom than would be possible without such guarantees.
If implementations that extend the Standard with guarantees designed to facilitate the above requirements are fed programs that exploit such guarantees, they will be able to generate more efficient code than any implementation would be able to produce given code that avoids at all cost any situations that presently invoke UB. If compiler writers want to generate optimal code for a wide range of applications, they should work on trying to define and support optional semantic extensions that would fit well with various applications' needs.
Hi Benjamin, nobody really knows the answer to #1, though there have been compilers like Stalin that try really, really hard to make code fast. It's a pretty interesting question for sure.
The thing that most comes to mind for #2 is Rust, where the front-end has super duper aliasing information that the middle-end is basically oblivious to. One can imagine future versions of the Rust compiler using this to good effect. Also languages like ISPC avoid some of the pitfalls of C and C++ and can therefore be compiled to vector code far more effectively. CUDA and OpenCL also seem like they've hit similar design points. It has been argued that functional languages also cater to optimizing compilers but so far that vision has been quite hard to realize.
Paul Crowley says:
Found an error:
"Second, −a+−b can be rewritten as −(a − b), saving one operation."
ITYM −(a + b)
Hi John, yeah, these are all interesting areas to explore, and I've seen research doing some of the kinds of things you outline (don't have links handy, sorry).
Regarding UB and dialects, I take what seems to be more or less the opposite view than John Payson does above. And the people on the C++ committee that I've seen discuss the topic seem to hold the same view: that any program that invokes UB is ill defined and no compiler should ever promise to enforce any semantic on it.
A big chunk the reasoning for holding that stance is that if you expect you code to remain correct, then you need to know that the compiler that you developed it under and the compiler you eventually build it under do the same thing. Without a well defined semantic, the only way to ensure that is to never change even the minor version number of the compiler you use, let alone what vendor or (heaven forbid) what architecture you target. If on the other hand you have a well defined semantic (e.g. via pre-defined-macros or some other approach), that would be come ipso facto part of the standard and no longer UB. At that point you might as well just make it part of the de jure standard.
As to how to allow programs to be better avoid over constraining the compiler: allow more precise specification of what code should do so that the author can constrain it in exactly and *only* the ways that actually matter. This could either be by allowing code to add selected constraints to particular usages (like Payson proposed, but in a more controlled way so that different choices can be made in different places) or by allowing particular usages to relax constrains (e.g. relaxed rules around observable lifetimes and copies of objects).
Perhaps I failed to adequately express myself, since I'm essentially in agreement with what Benjamin Shropshire is saying. Programmers shouldn't generally *need* to use UB, because the Standard should define all the behaviors needed to accomplish tasks as cleanly as efficiently as would be possible on implementations that extend the language in common ways, and programmers seeking to write quality code should use behaviors defined by the Standard when practical. A fundamental difficulty, however, is that the design of C89, and every C or C++ Standard since, fundamentally relies upon the assumption that implementations will use UB as a means to fill in any necessary behaviors not provided by the Standard, and thus makes no effort to define all the behaviors necessary to make an implementation particularly suitable for anything other than a few specialized purposes.
If the Standard were to define a concept of a "Selectively Conforming" program which will not invoke UB when given any possible input, but would not be required to run usefully on any particular kind of implementation, then it could meaningfully seek to define enough behaviors to allow a substantial fraction of the existing corpus of C programs could be made Selectively Conforming (but usable for their intended purpose on their intended platforms) merely by adding various #if/#error and #pragma directives. In many cases, a number of actions would have their behavior essentially defined as "Do XXX in a defined fashion characteristic of the environment", leaving the programmer responsible for knowing what environment the code would run in, and how it would define the behavior in question, thus avoiding the need to have the Standard itself worry about the particulars. Indeed, if there were no need to allow for any optimization, a complete specification for a category of compilers that could handle the majority of tasks that cannot be accommodated in Standard C could be quite short, since it wouldn't have to do a whole lot besides say that if an implementation defines __SIMPLE_LOW_LEVEL_C, it must use a target platform's native data types when they exist, or build longer data types by concatenating shorter ones without padding bits, and that in cases where some parts of the Standard defines the behavior of some action and some other part says an overlapping category of actions invoke UB, the defined behavior takes precedence.
If, however, the Standard continues to ignore the fact that many tasks can be accomplished easily by implementations that offer guarantees beyond those mandated by the Standard, but can't be accomplished practically–or even at all–without such guarantees, then a demand that programmers refrain from using behaviors beyond those defined by the Standard would be a demand that the language not be regarded as suitable for purposes that it should be able to handle quite well.
John Carter says:
I believe the largest opportunity for optimising compilers is to engage in a two sided conversation with programmers using assert-like functions.
Certainly as you, enable high optimization levels, compilers get smarter about spotting and warning about defects in your code.
A while back, I discovered that, counter intuitively, adding asserts in some cases, disabled the optimizers ability to spot defects.
The link at the bottom is to an extended thread on the subject.
But the point is this provides an excellent mechanism for a two way flow of information between the compiler and the programmer.
If compilers understood assert-like functions , through data flow analysis that it does anyway, they could warn the programmer if any assert expression could possibly be false on any data path.
Conversely, if asserts could inform the optimiser that it's expression will always be true, and that the optimiser could use and rely on that information.
I do warn that this usage of asserts does _not_ conform to the usage of asserts made in many existing programs, or conform to the intent of many existing programmers.
Thus I strongly recommend that such a facility be given a different name, thus neatly side stepping any controversy.
https://gcc.gnu.org/ml/gcc-help/2018-05/msg00015.html
@John Payson: are you conflating "implementation defined behavior" with "undefined behavior"? (FWIW those terms of art are defined by the standard as very different things.)
If you make that substitution, then I more or less agree with you. With regards to UB, I strongly stand by my claims:
– Programmers shouldn't *ever* use or need to use UB.
– implementations *shouldn't* extend the language where the standard speaks of UB.
– programmers seeking to write quality code should *only* use behaviors defined by the Standard (including where the standard defines something as up to the implementation).
Also; from what I can tell, at least the people currently writing the C++ standard are *NOT* assuming that implementations will use UB as a means to fill in any necessary behaviors not provided by the standard, rather that is what *implementation defined* behavior is for. UB is intended to be used as a way to allow the compiler to make assumption about the code that are prohibitive or impossible to check.
As for the concept of "Selectively Conforming", I'm not sure if that would provide anything on top of writing the majority of the code in a fully standard and portable way with the platforms specific code segregated behind a common API where multiple implementations can be selected form (at link time) that each use implementation defined behavior to get the job done. And all that is available today.
The difference between Undefined Behavior and Implementation-Defined Behavior is that the latter–at minimum–implies that quality implementations should behave in some consistent fashion, even in cases where the cost of guaranteeing any sort of consistency would exceed the value thereof. A decision to classify an action as invoking UB implies nothing more than a judgment that some implementations might plausibly benefit from not having to define the behavior.
Consider, for example, that a ones'-complement or sign-magnitude implementation which has a rotate-physical-bits-left-by-N instruction, but rotating a number and masking will take longer than than adding a number to itself. Under C89, such an implementation would have had to shift the physical bits in all cases, even when shifting by one bit. Changing the behavior to Implementation Defined would have allowed a compiler to always use repeated addition or always shift the physical bits, but either choice would have significantly degraded performance in some cases.
On the vast majority of C implementations, including so far as I can tell every non-contrived non-sanitizing C99 implementation, left-shifts of all values–positive or negative–work the same as multiplication by a power of two in every case where the product would fit in the result type. Platforms where this imposes any performance penalty whatsoever are relatively rare, and even on the platforms where it would occasionally require one more instruction, every compiler I've seen adds that instruction. Nonetheless, even though behavior is defined *identically* on nearly every C implementation, the Standard treats left shifts of negative values as Undefined Behavior to allow for hypothetical implementations like the ones'-complement or sign-magnitude ones mentioned above.
Incidentally, according to the C89 Rationale, one of the reasons the Committee decided to have short unsigned types promote consistently to signed int is that the majority of current implementations would treat "uint1 = ushort1 * ushort2;" as though the operands were unsigned, even when the result is between INT_MAX+1u and UINT_MAX. Any idea why the authors would have given that as a reason that if they didn't expect that the fraction of implementations behaving that way would, if anything, increase?
Thanks Paul! This is fixed in our repo now, will propagate to arXiv next time we refresh.
I don't think Proebsting's Law is meant to be anything more than a suggestion to consider whether various kinds of optimization improvements are worth the effort. If it were trying to measure anything, it should compare the time required to perform a task using the fastest possible machine code that would meet requirements to the time required to process it with code an optimizer actually produces, to establish an upper bound on the fraction of a program's execution time that could be eliminated while still meeting requirements.
I think Proebsting's Law both overestimates and underestimates compiler improvements, based upon whether one is measuring the best machine code an implementation can produce when given source code that exploits any useful features and guarantees it offers, or the machine code an implementation can produce when given source code that is not tailored toward it in any way. A modern compiler given something like "(x >> y) | (x << ((32-y) & 31)" may generate code that is six times as fast as what would have been produced by a 1990s compiler that guaranteed that "x << 32" will yield either x or 0, chosen in Unspecified fashion, but it would be no better than what the 1990s compiler would have produced if fed code that exploits the behavioral guarantee that nearly all platforms will facilitate at zero cost.
While there might be some applications fields where highly aggressive optimizations are useful, there are many situations where adding more "hinting" directives could have a more useful effect. In many cases, for example, a programmer will know that a "search" loop will be likely to receive data that will allow it to exit very early, or will be likely to receive data that lets it run to completion without finding anything, but a compiler will have no way of knowing. Letting a programmer specify an expected average number of iterations would let an implementation generate code that's optimized for that. If a programmer predicts a loop will usually run 2-4 iterations, but on one particular occasion it happens to run 4,000,000, performance might be an order of magnitude slower than if the prediction had been correct. On the other hand, if every time the loop runs 4,000,000 iterations is balanced by a billion where it runs only twice, the time saved by foregoing vectorization setup on loops that exit almost immediately may outweigh the time lost by foregoing it on longer loops that run to completion.
If one judges compilers by how efficiently they can perform tasks when the programmer "helps them out", optimizations based on hinting directives would be tasty low-hanging fruit,. Trying to perform more complicated analysis while not bothering to look for low-hanging fruit seems premature (i.e. the root of all evil)
Hyman Rosen says:
In my opinion, the notion that compilers may act as if undefined behavior can never happen is horribly damaging to safe programming. I believe that "optimizationism" (the principle that compiling code sequences into short and pretty assembly language trumps all other considerations) has distorted the proper specification of programming language behavior, leading to useless "object models," uselessly under-specified behavior (such as order of evaluation), and useless "functions" like std::launder in C++. (Some experts in C++ will tell you, for example, that they believe that it is impossible to write std::vector in standard C++.)
In C and C++ programmers have always behaved with a notional "object model" that objects are bags of bits, and you get out whatever you put in. There are millions of lines written to that expectation, and all of these brilliant new optimizers that adhere to the de jure instead of de facto standard break old, working code.
Well-written C programs–even those performing low-level tasks–should not be reliant upon compilers executing code exactly as specified and keeping the abstract machine synchronized perfectly with the physical one at all times. Instead, they should ensure that compilers that make a bona fide effort to identify places where such synchronization is required will be able to recognize them.
Further, when processing those rare applications where it is possible to absolutely 100.000% guarantee that all inputs will be valid, precondition-based optimizations may be genuinely useful even though violation of those preconditions could reformat hard drives, launch nasal demons, etc. Because I don't write such applications, a compiler that would be unsuitable for anything else would be useless to me, but that doesn't mean research in them won't be useful to other people, *especially if preconditions could be specified explicitly by programmers rather than implicitly generated based upon UB* [IMHO, the latter point is where research should be directed, since such explicit preconditions are in just about every way imaginable better than implicit ones].
What's unfortunate is that neither compiler writers nor programmers seem able to grasp the fact that different implementations are, and should be, suitable for different purposes. The fact that a compiler may be useless for some purposes unless it behaves predictably in some case doesn't mean the Standard should mandate that all implementations support such a behavior. On the other hand, the fact that the Standard fails to mandate a behavior does not imply any judgment as to whether an implementation could be suitable for any particular purpose without supporting it.
@Payson IIRC the standards go into great detail about what behaviors of the abstract machine are and are not observable and the compiler is only required to ensure that the actual machine exhibits the same observable behaviors *as if* the code were executed on the the abstract machine.
https://en.cppreference.com/w/cpp/language/as_if
https://en.wikipedia.org/wiki/As-if_rule
FWIW: I have no issue with compilers that in fact exhibit stable predictable behavior under UB. I just consider any code that exploits that (particularly if it does so *intentionally*) to be bad enough that nothing else matters. As such, I view any effort to build such a compiler to be a pointless exercise and have no interest in it.
OTOH, work to extend what can be done without provoking UB (as defined by the standard, not the tool-chain), via things like intrinsics, seems like a very valid and valuable area for R&D.
Ralf says:
Thanks for this article. 🙂
Considering that you mention superoptimizers, here is one concern I have with them: Reproducible builds. I think there is a lot of value in being able to produce an *identical* binary from the same source code on two different machines — it provides a way to make sure that a given binary is actually produced from the sources it claims to originate from (which is why e.g. Tor uses it). The Debian Reproducible Builds effort is a great example of how far one can get on that avenue with today's technology.
With superoptimizers, if search is controlled e.g. by a timeout, we lose any hope of compiling in a deterministic fashion. Are you aware of any work on superoptimizers that attempts to preserve the ability to have a reproducible build? I could imagine either some deterministic criterion to abort the search (number of queries, or so), or something where the result of the search is committed to the source code repository.
Chris Sears says:
Compilers subset ISAs. This was noticed at least as far back as Patterson Ditzel ("compilers are often unable to utilize complex instructions"). It's probably a good idea to raise this subsetting from implicit and ad hoc to part of the ISA formal model.
Indeed, do you really want a formal model of all of x86? The AAD instruction, ASCII Adjust AX Before Division, is still valid in 32b mode. But that's just cruft to a compiler. Do you really want x87 floating point? It's really hard to formalize x87 and the guy at Transmeta who tried almost had a nervous breakdown.
After aggressively subsetting x86, it looks more like a variable length RISC ISA. Use the ARM v8 Machine Readable Specification as a starting point and try to map x86_64 onto that. The alternative is waiting for a formal specification of all of x86 which will never happen.
BTW, if it's hard to formalize an instruction then it's a really good candidate for omission. And cheating by looking at the ARM v8 MRS is allowed. Other ISAs can follow suit.
Ralf, I agree about deterministic compiles — and these aren't the only argument about using solvers at compile time. Solvers are also very memory-hungry and are not fast. I believe that most of the time, solver results will be cached or otherwise used indirectly, this indirection has the side effect of fixing the determinism problem.
Alexander Zaitsev says:
In the paper you said about Hamming weights computations. It's very interesting. Is it possible nowadays to detect another algorithms in sources and optimize them? E.g. since C++17 we have std::gcd. But in old codebases we have a lot of different implementations of this algorithm. And compiler cannot replace them by std::gcd (if we compiler with -std=c++17) beacause cannot recognize what is function do. How can we help here with recognition? Can we (ab)use C++ contracts as hint for the compiler?
Nuno says:
Ralf: there are many SAT/SMT solvers (& model checkers) that support "deterministic timeouts". They can count units of work instead of seconds.
Notably hardware model checkers introduced such capabilities in the 90s precisely because customers of EDA tools wanted reproducible results.
I have this uncomfortable feeling you are diving deeper and deeper into the wrong rabbit hole.
ie. You believe the only path forward is to implement better and better optimisers that output faster and faster code for existing language standards.
Yet the most obvious (to the working programmer) benefit of the improving optimisers over the years, is _not_ faster code, but better warnings.
ie. The deeper dataflow analysis of better optimisers enable the compiler to better detect defective source code.
Up to now, this has mostly been a pleasant, but unintended side effect.
This really really should be making everybody in the field sit up and think, how can we do this do a lot better on this front?
How can we create a two way flow of information between the programmer and the optimiser to communicate what each side knows and believes about the code.
**Even if it means add small tweaks to the language standard to do so!**
gcc has been adding function and variable attributes that permit the programmer to communicate to the compiler optimizing code referencing those symbols. eg. "pure", "const", ….
Alas, last I looked (gcc 7.3) the current implementation had the near fatal flaw, that even if the optimiser can conclude from compiling the implementation, that the attribute wasn't justified, it doesn't warn the programmer that he got it wrong.
ie. It makes the function attributes a hazardous tool to use.
Reachability and uninitialized variables are a curious one.
gcc will warn you if it knows a statement is unreachable. That "knowledge" clearly depends on optimization level. ie. You will often only get a warning it you're at -O2 or above.
Another "tool" is __builtin_unreachable(), it will alter what the optimizer outputs, but again, it's a one way conversation, you cannot get gcc to warn you if that point _is_ indeed provably reachable .
I would love to see the concept of a precondition baked into an optimizers understanding of the code.
ie. Everything _after_ the precondition should be optimized under the assumption that the precondition expression _will_ hold.
Everything _before_ the precondition should warn if on some code path the precondition could fail.
When a function is being compile as a standalone object file, the compiler can't tell.
But as the compiler (and the linker now with LTO) inlines more and more code…. it often _can_ and _does_ know that preconditions have been violated!
Ralf: People don't actually want reproducible builds, rather they want a verification that a given binary is a valid translation of a given source. It just turns out the most direct solution to doing that with normal tools is to fully reproduce the exact same build process and compare the results.
Another solution to that problem it to publish your binary along with enough artifacts from your building it that someone else can re-generate it: That way you don't need to bother with a fully deterministic build solution at all, but rather you enable proving that it is valid to convert the published source into the eventual binary by handing them a trace of all the useful inspection and transformation steps you did ("note that A is true because of X, Y and Z", "Apply transformation #1 at point 'label_42', justified by 'A'", etc.) If your compiler is valid, then (with or without such a script) it should only ever produce valid translations, which (if it matches the published binary) proves that the published binary it self is a valid translation.
If the tools supported that, then this would have other advantages as well: Because the non-determinism is entirely in the "deciding what to do", and that stage has a lot of useless effort that can be avoided in a verification process (it's way simpler to walk someone thought a proof than to find it in the first place). Also, aside from verification, using the last builds results as a crib sheet for where to look first may be useful for speeding up builds of even new sources if they aren't too different from the last build.
Hi Alexander, I'm not sure about contracts, but my belief is that solvers will be instrumental in updating older codes to take advantage of modern idioms such as std::gcd. This could be part of a source-level refactoring tool instead of an optimizing compiler.
John, the state of the art in compiler warnings and similar static analyses has made a giant amount of progress in the last 15-20 years, and it is great stuff. It also happens to be orthogonal to optimization, which is what I'm writing about here. I certainly do not believe that optimizations are the only path forward and have never said this.
Benjamin, people sometimes do want reproducible builds, as a separate thing from correct compiles.
Matthew Fernandez says:
Very interesting read. A couple of minor nits… "As of fall 2018…" To an international audience, it is not obvious when this refers to. "…such as fun addressing modes…" I'm not sure which ones are considered "fun."
@John Carter, as you may have discovered in your GCC discussions, "if (!expr) __builtin_unreachable();" is one way to teach GCC assumptions. However, as you've said, it won't warn you if it knows you made a mistake.
Lionel says:
Ralf,
There is a similar problem à reproducibility (??) in static analysis tooling (e.g. Codepeer, Spark2014, cbmc) where you set timeouts and 'give up' a path in the analysis or give up on a solver. It can give different results from machine to machine, loaded or not, etc.
One solution is to define 'steps' instead of 'timeouts'. You break everything in 'steps' and stop after a defined number. You might need to calibrate once what 'timeout' is acceptable for you and infer the 'steps' value :-).
Nuno, Lionel: Thanks, I was not aware that SAT/SMT solvers already do this. That's great. 🙂
Benjamin: Reproducibility has other advantages (e.g. for compiler developers, it is easier to debug compiler performance if the compiler is deterministic), but I agree reproducibility is not necessary for verifying compilation. What you describe sounds like an extreme form of "let's store solver output during compilation and make that an input to the second translation to get the same result". That works, but of course it is nicer if we don't have to also manage that extra piece of state and communicate it between all involved parties.
Flash Sheridan says:
> Benjamin, people sometimes do want reproducible
> builds, as a separate thing from correct compiles.
Yes, an extreme example: After PalmSource sold the name "Palm" to Palm, we had to release a new version of the development kit which changed only some user-visible strings. If our build engineers could have released a new build that passed binary comparison except for those strings, I could have done a lot less testing, but ended up missing an unexpected social engagement. (They couldn't, for procedural documentation reasons.)
A less extreme example: The compiler lead had discovered a forward-compatibility bug through pure reason after code freeze. We were fairly confident in the determinism of our compiler build system and in our automated tests, so we didn't feel obliged to redo _all_ of the manual testing, and I didn't need to cancel my trip to meet my new mother-in-law in the Ukraine.
I liked some of the comments above about an ultra-slow massively-optimising final build; normally I care about how fast the compiler itself compiles only for the benefit of our engineers' code-build-oops-debug cycle, and would be happy to set up another Jenkins server devoted to a slower but better build. But if it differed enough I would need to think hard about the testing implications.
Christoph Conrads says:
At the beginning of Section 3 in arXiv:1809.02161, `((x <> 31) + 1` is proposed as an inefficient idiom to flip and return the lowest bit of `x`. If `x = 1`, then the result should be zero according to the text description and the expression `~x & 1` . Yet `((1 <> 31) + 1) == 2`. I think `((x + 1) <> 31` is the correct expression (and there is no overflow if `x` is signed or `x` and if `x` has exactly 32 bits and so on and so forth).
In Section of arXiv:1809.02161, it says that
> After compiling LLVM itself (3.5 MSLOC of C++) Souper's cache occupies
> 362 MB of RAM; when dumped to disk, the file is 149 MB. This is
> acceptable for a research prototype but it isn't the solution that we
> want to deploy.
Please provide reference points for what is small and what is large. Compiling small projects with C++ header-only libraries can easily consume several hundred megabytes and as far as I remember, when I was still building TensorFlow (written in C++) on a regular basis, the C++ compiler would often consume more than 500 MB. One reason is certainly that the TensorFlow developers follow the Google C++ Style Guide requiring self-contained headers and forbidding forward declarations [1].
I would like to see three more aspects discussed:
* Similar to John Carter's point of view, I find that assert-like functions and enforcements in C++ are essential development tools but are treated like any other statement in the code.
* C and C++ are full of undefined and unspecified behavior and it would be interesting to have diagnostics when these two behaviors are exploited by the optimizer.
* Execution time requirements of the compiler. Short of unicorn compilers that finished by the time my finger left the "enter" key, I am perfectly ok with my compiler running up to a week on a
state-of-the-art computer for /release/ builds but during development, instant code generation for `-O1` optimization level is absolutely desirable so that the developer does not idle.
[1] https://google.github.io/styleguide/cppguide.html
Hi Christoph,
The code at the start of section 3 is correct as described. The value 1, shifted left by 31, gives INT_MIN. Shifting right by 31 gives -1, and adding 1 gives 0. We could quibble about the definedness of left shifting a 1 into or past the sign bit, but that doesn't seem to be what you are describing.
Regarding "small" and "large" we were deliberately vague about the context, but it seems clear that a superoptimizer database that is multiple GB will be inconvenient, and since there's no technical reason for this to exist (outside of our research prototype) we should avoid it.
Regarding the other points you bring up, these would all be interesting, but our document ended up being pretty long already and we had to cut off the discussions somewhere.
> The code at the start of section 3 is correct as described.
You are right. I assumed unsigned arithmetic although x is described as signed 32-bit integer in the second line of Section 3.
> Regarding "small" and "large" we were deliberately vague about the context, but it seems clear that a superoptimizer database that is multiple GB will be inconvenient
My understanding of Souper is that it operates in a fully automated fashion, that it generates only provably correct peephole optimizations for any front-end and any target architecture, and it increases run-time only by 10% compared to `-O3`. This comes at the cost of 360 MB of memory per 3.5 MSLOC. Compare these items to machine learning (ML): Training models is time and resource demanding but if done properly, many insights can be acquired much cheaper and much faster than by employing human analysts. I claim that the economics are already in favor of Souper deployment.
Hi Christoph, unfortunately the 10% slowdown is only for the case where we get 100% cache hits. If we are forced to run synthesis during compilation (to fill misses in Souper's cache) the compiler slowdown can be enormous (depending on how hard we want synthesis to try).
Anyhow, I totally agree with you in principle, but also fast compile times seem to have not gone away as something that software developers really, really like, so when I write this kind of document I'm trying to be sensitive to that.


text:
Update: Corsair Gaming Presents Today at 2022 Barclays Global Technology, Media and Telecommunications Conference
December 07, 2022 08:00 AM Eastern Standard Time
MILPITAS, Calif.--(BUSINESS WIRE)--Corsair Gaming, Inc. (Nasdaq: CRSR) ("Corsair"), a leading global provider and innovator of high-performance gear for gamers and content creators, will present today to institutional investors at the 2022 Barclays Global Technology, Media and Telecommunications Conference, at The Palace Hotel in San Francisco.
Andy Paul, Chief Executive Officer of Corsair will now join Michael G. Potter, Corsair's Chief Financial Officer. A live webcast and replay of the group presentation today at 4:20 p.m. Eastern Time will be available through Corsair's Investor Relations website. Management will also be available for one-on-one and small group meetings with investors at the conference.
About Corsair Gaming, Inc.
CORSAIR (Nasdaq: CRSR) is a leading global developer and manufacturer of high-performance gear and technology for gamers, content creators, and PC enthusiasts. From award-winning PC components and peripherals, to premium streaming equipment, smart ambient lighting, and esports coaching services, CORSAIR delivers a full ecosystem of products that work together to enable everyone, from casual gamers to committed professionals, to perform at their very best.
Corsair also sells gear under its Elgato brand, the leading provider of hardware and software for content creators., SCUF Gaming brand, which builds custom-designed controllers for competitive gamers, and ORIGIN PC brand, a builder of custom gaming and workstation desktop PCs and laptops.
Ronald van Veen
ir@corsair.com
david.ross@corsair.com
$Cashtags
$CRSR

redpajama_set_name: RedPajamaCommonCrawl


In a "first" for GlenDronach, the award-winning Aberdeenshire distillery has produced a new cask strength expression which has been bottled in November.
Worldwide aficionados of our unique, richly sherried malt can now enjoy a classic GlenDronach exactly as we made it – at cask strength, non-chill filtered and at natural colour.
Personally selected by Billy Walker and designed to supplement the core range of 12, 15, 18 and 21 YO vintages, the spectacular GlenDronach Cask Strength has been matured in a combination of the finest Spanish Pedro Ximenez and Oloroso Sherry casks.
The first batch comprises some 12,000 bottles.
Billy Walker's tasting notes illustrate that this expression is destined to become just as iconic as the other wonderful vintages in the core range.
GlenDronach, one of the first licensed distilleries, was founded in 1826 by James Allardice, a colourful and inventive Scot who pioneered wood finishing.
Almost two hundred years on, in keeping with this great tradition, we've invested heavily in our wood management programme. We mature our single malt whisky in premium quality sherry casks, hand-crafted from European oak by the most reputable and renowned bodegas from Jerez in the south of Spain.
Over time, silently resting in our warehouses by the Dronac Burn in Forgue, the interaction of the high-quality wood and the maturing whisky produces sensational results and flavours. Oloroso casks confer a heavier scented body on our single malt whisky, often adding subtle notes of fruit and toffee, while Pedro Ximenez casks give GlenDronach a rich, dark, zesty flavour. The combination of the two results in an avalanche of sublime tastes that leave an indelible impression on the taste buds...and the new GlenDronach Cask Strength is a perfect example of Billy Walker's astounding ability to perfectly match wood to whisky.


text:
Women Talk Online
A forum for women to talk to women
Womentalk
Search Results for Tag: Rights
Catch them young: Indian writers tell tales of land rights for kids
A picture book for children which highlights the issue of land rights of farmers and indigenous people in India.
Deadly disputes over land and indigenous rights are not obvious themes for children's books, but Indian writers are using real-life conflicts to help the next generation understand their impact on communities across the country.
children's books, children's rights, disputes over land, Education, I will save my land, India, law, Rights, Rinchin, women's rights
The expat wife: 'What every women needs to know before she marries a foreigner.'
I just knew I had to follow the smile in his golden eyes into the sunset. It involved jumping on a plane, while barely knowing the inner workings of his soul or where on Google's map he lived. It involved a great deal of bravery, a trusting heart, money I wasn't sure I had, faith the size of a mustard seed and a spirit of adventure.
expat, Germany, marriage, marriage system, Rights, Sarona Wolter, South Africa, Women talk online, women's rights
Malaysia criminalizes child grooming, not child marriage
Last week, Malaysia considered outlawing child marriage, a contentious issue in the Muslim-majority nation, without success. Instead, an MP said nine-year-old girls are "physically and spiritually ready for marriage."
Abuse, Brenda Haas, Child marriage, girls, Malaysia, rape, rapist, Rights, womentalkonline
Fight for Women's Rights Everywhere
Women take part in a protest along a main street in the Kenyan capital of Nairobi November 17, 2014. The demonstrators were demanding justice for a woman who was attacked and stripped recently in Nairobi by men who claimed that she was dressed indecently (Copyright: Reuters/N. Khamis)
I was involved in a discussion started by a friend of mine a couple of days ago. In his opinion, "women's rights are hardly an issue in most developed western countries in comparison to 100 years ago." So he thinks that "what liberated woman and supportive men of these western countries need to do is go to a country that really does have woman impediments, and make a difference for them."
child bride, Child marriage, Education, gender, Rights, Stolen Sisters report, woman's rights
The revenge trap
"Soon after drinking my tea, I felt dizzy and dozed off. The next thing I remember is that I was sitting in a police station. They told me, I was drunk and had desecrated the Holy Book, Quran. I was surrounded by a violent mob and people belonging to religious parties were condemning me. No one was listening to my cries. All they wanted was punishment for a crime that I had never committed."
blasphemy, Pakistan, politics, Rights, Unbreen Fatima, violence, women
Pakistan seeks justice
It's been two years since the reported murders of five tribal women in a remote region of Pakistan made headlines, but powerful local elders have blocked all efforts to carry out independent investigations and punish the culprits.
Kohistan, Pakistan, Rights, women
Attacks on Afghan women surge
Women's rights in Afghanistan are being dealt a serious blow considering that foreign troops are moving out of the country this year. Watch this report to know more about what the government is doing and how women are coping with the situation.
2014, Afghanistan, ISAF, NATO, Rights, women
Tweets by dw_WomenTalk
DW - Women Talk Online
Would you like to send us your experiences? Write to us at womentalk@dw.com with a few sentences about yourself and what you'd like to write about!
- - - - - - - - - - - - - - - -
Auf dem Tretroller durch Deutschland
Zapadni balkon
Educationblog


text:
Philornis downsi е насекомо от разред Двукрили, паразит с произход от остров Тринидад. За паразите все още се знае малко и наличната информация за него се дължи на инвазията му на Галапагоските острови възникнала благодарение на човешката дейност. За пръв път на архипелага той е регистриран през 1964 г. Това е паразит, чиято възрастна форма представлява свободно живееща муха. Ларвната и форма обаче е облигатен паразит нападащ птиците. Нейното развитие преминава през три фази докато какавидира. През този етап от развитието си тя живее в гнезда на птици и ги напада през нощта като се храни с кръв от тях. В първата и началото на втората фаза ларвата смуче кръв от места с нежна тъкан каквито са лигавиците. На по-късен етап тя пробива кожата откъдето се храни. Ларвите нападат младите неоперени птици като инвазията може да допринесе до значителна загуба на кръв (около 18 – 55%) и висок процент на смъртност при голишарчетата – до 76%.

Външни препратки
 Класификация на Philornis downsi
 Жизнен цикъл на Philornis downsi
 Инвазията на Галапагоските острови
 Класификация и произход

Philornis
Чуждоезични заглавия за проверка

redpajama_set_name: RedPajamaWikipedia


text:
Ruth Bader Ginsburg Action Figures Are Almost Here
BY Zoë Naseef
The moment we've all been waiting for—an RBG we can carry around with us!
FCTRY is a product incubator that has created action figures of several notable figures including Elizabeth Warren, Bernie Sanders, Hilary Clinton, and Barack Obama. Their newest figure, after many requests, will be Ruth Bader Ginsburg.
The company's CEO, Jason Feinberg, told USA Today, "The people have spoken and in these turbulent times of political uncertainty, a most unlikely hero has emerged—and that means it's time for us to make a new action figure!" The Kickstarter went up last Tuesday, June 5th, with an original goal of $15,000. By that evening, they had raised over four times their goal at a total of $67,000. Nearly a week, later the Kickstarter is up to $191,232.
Feinberg also told USA Today, "We knew RBG was going to be popular because we had gotten so many requests to make her over the last year or two," but "What happened today is way beyond our expectations."
The Kickstarter encourages people to donate by offering package deals of their action figures with clever names. For example, the "Nevertheless She Dissented" pack includes RGB and Elizabeth Warren, and the "To The Left" pack includes RBG, Warren and Sanders. There is also a "Fab Five" pack which adds in Obama and Hillary Clinton.
The proto-type for the action figures is hand sculpted out of clay by Seattle-based pro sculptor Mike Levitt. Then, $1 from each action figure goes towards a related cause to the figure.
So far, they have raised over $10,000 for the DNC with Obama action figure, and over $8,000 for the ACLU with the "Evil Trump" action figure. A portion of the proceeds from RGB will go to the National Women's Law Center.
The Kickstarter will be open until July 10th, and their page notes, "stay tuned for updates. We've still got 33 days to go and we have a few fun things up our sleeve. Keep your eyes peeled for stretch goals, special offers, and a some sneaky surprises!"
All images via FCTRY
"RBG's" Film Editor On How The All-Women Crew Told Ruth Bader Ginsburg's Story
Get Ripped With Ruth Bader Ginsburg's Workout Plan
8 Women Who Were Warned, Given An Explanation, And Nevertheless, Persisted
Zoë Naseef is a fiercely sassy photojournalist, feminist, comedian, and co-host on the leftist feminist podcast Season of the Bitch. She is from Philadelphia but currently living in Brooklyn. To see her photography go to zotography.com, and for unwaveringly brash content follow her @zonaseef on Twitter and Instagram.
Tags: RBG , Ruth Bader Ginsburg , Elizabeth Warren , Bernie Sanders , Barack Obama , hillary, , clinton, , badass, , feminist , Donald Trump


text:
The Meadowlands
I've just finished reading The Meadowlands: Wilderness Adventures on the Edge of a City by Robert Sullivan, a book perfectly discussed in the visual context of Meadowlands, a collection of photographs by Joshua Lutz (for which Sullivan actually wrote an introduction).
[Image: From Meadowlands by Joshua Lutz].
"Just five miles west of New York City," the back cover of Sullivan's book reads, are the Meadowlands: "this vilified, half-developed, half-untamed, much dumped-on, and sometimes odiferous tract of swampland is home to rare birds and missing bodies, tranquil marshes and a major sports arena, burning garbage dumps and corporate headquarters, the remains of the original Penn Station, and maybe, just maybe, of the late Jimmy Hoffa." It is "mysterious ground that is not yet guidebooked," Sullivan writes inside, "where European landscape painters once set up their easels to paint the quiet tidal estuaries and old cedar swamps," but where, now, "there are real hills in the Meadowlands and there are garbage hills. The real hills are outnumbered by the garbage hills."
Lutz's book describes the region as a "32-square-mile stretch of sweeping wilderness that evokes morbid fantasies of Mafia hits and buried remains." As Lutz explained in a 2008 interview with Photoshelter, "When I first saw the Meadowlands I was completely blown away at this vast open space with the Manhattan skyline in the distance. It was this space that existed between spaces, somewhere between urban and suburban all the while made up of swamps, towns and intersecting highways. None of it made any sense to me, still doesn't."
All told, the area has become, Sullivan writes, "through negligence, through exploitation, and through its own chaotic persistence, explorable again."
[Images: The Meadowlands: Wilderness Adventures on the Edge of a City by Robert Sullivan and Meadowlands by Joshua Lutz].
To write his book, Sullivan went on a series of explorations through the Meadowlands, including by canoe and in the company of a former police detective.
While there are definitely some moments of rhetorical over-kill, the book is so filled with interesting details that it proved very hard to stop reading; in between learning about the "discharged liquefied animal remains" that were dumped into the region's streams and rivers, or the "major pet company and Meadowlands development firm" that "drove so many steel girders into the ground that people joked Secaucus would become a new magnetic pole," or even the old—and, unfortunately, forgotten—mine shafts that began swallowing a development called the Schuyler Condominiums, Sullivan's book, like any good and truly local history, builds to a level of narrative portraiture that is as braided and fractally involuted as the wetlands it documents.
For instance, Sullivan discovers a flooded radio transmission room, "its giant antenna felled in the water like a child's broken toy," as well as "little islands, composed wholly of reeds," one of which, in the middle of soggy nowhere and accessible only by boat, was "surrounded by bright yellow police emergency tape: CAUTION, the tape said."
Relating the litany of pollutions that exist in the swamps, he guides the reader's eye toward ponds of cyanide, truckloads of "unregulated medical waste," and soil so thoroughly contaminated with mercury that, "as recently as 1980, it was possible to dig a hole in the ground and watch it fill with balls of shiny silvery stuff."
This might even have affected the New York Giants football team after they moved into Meadowlands Stadium: "In the mid-1980s, playing football in the Meadowlands meant possibly risking your life, because shortly after the stadium opened players for the Giants began developing cancer… 'Players complained of occasionally foul-smelling water, and the high incidence of leukemia in adjacent Rutherford…'" No official medical link was either admitted or found. Indeed, certain streams are really a kind of "garbage juice"—an "espresso of refuse," as Sullivan nauseatingly describes it.
In many places, the so-called ground is, in fact, trash—so much so that "underground fires are still common today… you can see little black holes where the hills have recently burped hot gases or fire… huge underground plumes of carbon dioxide and of warm moist methane, giant stillborn tropical winds that seep through the ground to feed the Meadowlands' fires, or creep up into the atmosphere," forming a particularly Dantean local climatology of reeking crosswinds. One of these fires "burned for fifteen years."
[Image: Bow-hunting amidst the reeds, from Meadowlands by Joshua Lutz].
The Meadowlands are, after all, a massive dump, more landfill than landscape. The effect, though, is a kind of new picturesque, an engineered sublime of artificial hills, deltaic chemical accumulants, cheap hotels overlooking it all on the periphery, and even entire lost buildings buried beneath three centuries of dumping. "If you put a shovel anywhere into the ground and dig just about anywhere in the Meadowlands," Sullivan writes, "it won't be long until you hit rubble from a building that was once somewhere else."
In Kearny, one old dump contains pieces of what was once Europe. In 1941, under the auspices of the Lend-Lease Act, shipments of defense equipment went from the United States to Great Britain by boat. On their return trip, the boats used rubble from London bombings as ballast. William Keegan, a Kearny dump owner, contracted to accept the ballast. As a result, some of the hills of the Kearny Meadows are London Hills.
This is actually also true for New York's FDR Drive, which is partially constructed on British war ruins used as fill.
[Image: An awesomely sinister photo from Meadowlands by Joshua Lutz].
There is an amazing chapter about mosquito control in the region, something I want to return to in a future post someday; another about treasure hunters on a quest for Revolutionary War-era gold and silver; and another about the construction of the hulking and monumental Pulaski Skyway. Before that oddly tunnel-like, 3.5-mile, elevated roadway was built, "ferries and sailboats took passengers from New York to Newark via Jersey City," but, like something out of a Terry Gilliam film, "it was not unusual for papers to report that a ship making the trip had been blown out to sea and never been seen again."
I could go on and on. There is even an entire subplot in which Sullivan hunts down the buried remains of New York's Penn Station.
I want to end, though, with something said by the retired police detective who takes Sullivan under his wing on a series of driving tours toward the end of the book. When Sullivan asks the former investigator if he misses his job, the response is intelligent, thoughtful, and extraordinary. I'll quote it in full:
"I miss it to this day, to this minute," he said. "And do you know why? Because it takes you a long time to accumulate the knowledge."
He pointed out the car. "Like for instance," he continued, "look over there at that building, that warehouse. See how one door is open and one door looks like it's closed up. Now, what I'll do is store that. Keep it in my head. And see that sign over there in front of that building? You remember that. You remember that because you may need it someday. It may be useful. You accumulate the knowledge. Do you see what I mean? And then all of a sudden you're supposed to just stop."
He shook his head and started the car moving again, driving slowly up out of the swamp, up the hill. "The thing is, you just can't," he said.
This hermeneutic attention to everyday details—through which open warehouse doors or unusually parked cars all become raw data accumulated over decades for use in some later, possibly never-to-occur narrative dissection—is exactly the task not only of the detective but of the writer, and of anyone who would attempt to study an existing landscape in order to uncover its most unexpected and far-reaching implications.
In any case, together with Lutz's photos of the region and its very particular anthropology—which Lutz discusses in an interview with Conscientious, remarking that the Meadowlands are "an astonishing mixture of towns, swamps, trains, motels and an amazing array of bisecting highways all trying to keep you out"—both books have been invigorating encounters over the past week or two, and each is worth checking out if you get the chance.
Author Geoff ManaughPosted on June 22, 2010 December 29, 2015 Categories BLDGBLOGTags Ecology, Infrastructure, Landscape, Meadowlands, New Jersey, New York City, Robert Sullivan, Waste
7 thoughts on "The Meadowlands"
Georgia says:
I really like the Meadowlands and glad someone has given it some proper dues, or at least described it in all its complexity, instead of the typical dismissal.
shichimi says:
Fascinating! I plan to get this book. Thanks for the review.
David Lee says:
Everyone should listen to the album "The Meadowlands" by the Wrens while wandering through this place.
micah says:
I remember the first time I drove past Manhattan, and being just as mesmerized and blown away by this unexpected place. This, the recent deepwater horizon oil spill, and other toxic places (the e-waste towns of china for instance…) intrigue me as landscapes of consequence for careless actions. The reverse of the city…unreal and hauntingly beautiful (in an end-of-the-world, holy f*** sort of way).
Gareth says:
This looks fascinating. Reading about it made me (and no doubt others) think of Iain Sinclair's supreme meditation on the edge of a city, London Orbital.
ZoneStyxTravelcard says:
Extraordinary – Iain Sinclair must be booking his flights.
Amazed that the word hinterland features nowhere in the post – seems to be the definitive example, in the way that the area hides in plain sight…
The quote from the detective was wonderful & strangely reminiscent of this piece on a historian's note-taking habits here
http://www.lrb.co.uk/v32/n11/keith-thomas/diary
It's a long read, but the point about how/when you stop simply accumulating the knowledge you've been trained to gather is very similar…
viridian1 says:
Great post. The Meadowlands is a place that I've been curious about since I was a kid. I'm currently in the middle of a project that is my own personal odyssey through the marshes and Sullivan's book was part of my research.
http://fivemilesfromtimessquare.blogspot.com/
If I could quit my day job and devote all of my time to this thing I could finish it in a year. As it is, I'll be lucky to finish before I'm 50.
Previous Previous post: Family Mines and the Basement Zoning Codes of Minnesota
Next Next post: A Design History of Military Airspace
Keys to the City
A Burglar's Guide to the City
Grimm City
Offshore Oil Strike for All the Family
Trafalgar Flu
Geomedia, or What Lies Below
Home Plate
Transecting Amsterdam
The Invent-a-Micronation Contest Continues
Cities of Amorphous Carbonia


Montana kids don't have to travel far to get world-class specialty care.
Community Children's works with a large number of pediatric subspecialists – many available nowhere else in Montana – to ensure expert, coordinated care for the widest variety of conditions.
When a child needs specialty care, our Pediatric Specialty Clinic can save a patient and family the time and high cost involved in traveling out of state. The clinic offers pediatric specialty services in collaboration with in-state specialists, and Seattle Children's Hospital, Children's Hospital Colorado and University of Utah Health. All patients who see providers at the Pediatric Specialty Clinic have access to a registered nurse and a licensed clinical social worker who support their medical and emotional needs.
Regardless of the condition, we see to it that children get the care and treatment they need.


The Regional native plant garden at the U.S. Botanic Garden is several years old now and getting an established look throughout the year that is garnering attention and praise.
This video is taken through the seasons and shows the beauty and diversity a garden of native plants correctly placed can achieve.
There is a nice interview with plant curator Bill McLaughlin at Garden Rant.
Plant curator Bill McLaughlin can't stress enough that the soils are very different.
Great video, Gloria! Thank you for sharing.
It is so nice to finally see native plant gardens showcasing each season--all too often, I've only seen videos of native plantings when they have barely a flower left--although I can appreciate the seedheads, I suspect most of the general public sees only an untidy mess. This is a great way to show what things can really look like.


Beyblade Burst Booster Dark Deathscyther - Sickle motif of the death god. Attack type dual layer in which the upper stage blade and the lower stage edge divided into right and left by the half are split. Compatible with Beyblade Burst product only. Set contents : Layer - Dark Deathscyther Disc - Force Driver - Jaggy. Suitable for age 6 and above.


Kitchen and dining room: best solution for achieving space efficient homesfeed. 48 luxury dream kitchen designs worth every penny (photos).
Rustic kitchen cabinets kitchen farmhouse with board floor board flooring beeyoutifullifecom. Brick backsplash tiles bathroom rustic with bathroom blue painted cabinets beeyoutifullifecom.
Black painted kitchen cabinets ideas tags : best of rustic black kitchen cabinets lovely dark. Rustic wood countertops kitchen rustic with beige wall black counter beeyoutifullifecom. Rustic wood countertops kitchen rustic with beige wall black counter beeyoutifullifecom. Beige kitchen rustic forkstroop3org. Kitchen paint ideas and modern kitchen cabinets colors. Enorm rustic kitchen floor tiles best beige tile flooring. Rustic modern kitchen beige and wood form function. Sienna beige kitchen granite neutral rustic home remodel kitchen countertops rock. Kitchen resurfacing your kitchen cabinet cost to reface cabinets, resurface cabinets, kitchen. Rustic whitewash table with beige rug and light grey wall color for classic kitchen plan and. Kitchen island with sink and dishwasher kitchen rustic with arched fireplace beige ceiling. Best 25 warm kitchen ideas on pinterest cottage modern kitchens, wood kitchen countertops and. Kitchen cabinets, beige, rustic, distressed k!tch3n pinterest beige, kitchens and house. Rustic eat in kitchen with beige cabinets design ideas remodel pictures houzz. Sienna beige granite kitchen countertops rock backsplash rustic home remodel dark. New york rustic kitchen backsplash craftsman with stone tile appliance manufacturers and. Light pink kitchen cabinets kitchen design. Some words about kitchens with beige granite counters, travertine tile floors and rich wood. Rustic wood countertops kitchen rustic with beige wall black counter beeyoutifullifecom. Best 25 ivory cabinets ideas on pinterest ivory kitchen cabinets, subway backsplash and. Traditional rustic kitchen design ideas with beige stone k c r. Rustic pantry kitchen rustic with beige walls wooden. Rustic kitchen design ideas, renovations photos with beige splashback. Beige tile floor kitchen colors morespoons #9cb703a18d65. Sienna beige kitchen granite neutral rustic home. Rustic tile for kitchen floor morespoons #3467aaa18d65. Rustic wood countertops kitchen rustic with beige wall black counter beeyoutifullifecom. Kitchen : traditional rustic kitchen design ideas with beige stone k c r. Rustic kitchen ideas photos with beige splashback. Rustic kitchen ideas photos with beige splashback. Rustic wood countertops kitchen rustic with beige wall black counter beeyoutifullifecom.


If you go into the Clever Clogs in Beauclair, there is a man sitting upstairs who has a job for you. In a cemetery nearby, there is constant howling and yelling that keeps our poor Charles up at night. Let's investigate!
Once in the cemetery, use your witcher sense to investigate. You'll find a dug up grave, and some left over bottles. Geralt will conclude that we need to wait til nightfall.
After dark, go to the catacombs and enter the door to the left. Use your witcher sense to examine the broken pots, name plates and gold. Have Geralt wait behind the statue until a scene plays.
When you have the ability to choose an option, you can really go with whatever you like. I picked ' why are you here?' and 'Whose tomb is this?'. You will have to pick who you help. Your reward changes depending on your choice.
In order to help Margot, you need to move Louis. He requests to be put with the Gwent Friendship Society's tomb, so let's do it. Grab his urn and follow the marker on the map. Once you arrive at the tomb, you will have to fight off some grave robbers.
Once they're dead, place the urn and go back to Margot. She will tell you the location of Louis's hidden cards. Under a bush in the backyard of their home.
The cards stink. They aren't overly great, and you probably already have them in your deck.
Margot asks to be placed near her mother's grave which is in a different cemetery. Follow the map marker and examine the grave stones until you find the right name. Leave the urn there and return to Louis. He is no longer there, but will pop back up if you interact with his ashes.
Turns out he can't give you what he agreed, but instead you have access to a sword. Leave the catacombs and travel to the Black Smith's shop nearby. Talk to him to acquire the 'Forged in Fire' steel sword. He offers to play you in gwent for it. You can if you want and if you win you get to keep he sword.
Return to Charles at the Clever Clogs for your reward.


91 Elm Drive – Goodfellow & Goodfellow & Lind Real Estate Ltd.
Welcome Home! This Custom built foster home as so much to offer. Walk in and you are greeted with a large foyer and office with double french door entrance and hardwood flooring. The open concept living and dining area has a stone feature wall with gas fireplace. Bright open kitchen with loads of counter space and storage, large island overlooking the living room perfect for entertaining! The large master bedroom has a generous sized walk in closest and four piece ensuite, another bedroom is located on the main floor. Head down stairs and you will be pleasantly suprised with a massive rec room and media room. Two additional large bedrooms are located on the lower level – one with a custom stone wall and gas fireplace. Dont miss the tandom 4 car garage with 11 ft ceilings -fully insulated and heated with radiant heat, Perfect for someone who loves to work on cars or projects. The private backyard is perfect for hosting parties or just to relax. This is a must see home!


New home, extensions, and renovation builders in the Port Macquarie region.
We are the leading new home builders, home extensions, and renovation builders in the Port Macquarie region. With a vast wealth of experience in providing expert craftsmanship and service, PK4 Projects are your go-to provider for an unrivalled service in home building and carpentry.
We are perfectly situated to provide our building service not only in Port Macquarie, but also in Kempsey, Taree, and other parts of the Mid North Coast region of NSW.
We ensure we maintain our strong background of ethics and have the ability to work right alongside our clients.
Our projects are stress free building at its best. Your projects become ours.
PK4 Projects is a building company that has a long history of producing quality workmanship at a very affordable price. Our upfront approach keeps you informed right from the first steps of your project to the completion. Here at PK4 we have a fresh and enthusiastic approach to every project no matter how large or small.
When you enlist the service of our team of expert builders, you can rest assured that you will be dealing a team of creative and reliable professionals who pull out all the stops to ensure that your new home, commercial property, or renovation is everything you ever dreamed of. With a vast wealth of experience in building homes that are stylish, charming, and comfortable, we are the premium choice for the perfect product.
Not only is the building itself masterful with PK4 projects, but we also strive to maintain an exceptional level of client service and communication. We will never leave you in the dark about what is happening with the building of your new home, and will always be there to discuss any changes or new additions you would like for the property. This is part of what makes us the leading building team in Port Macquarie.
Want to start the process of building your dream property with a team of highly experienced professionals? Feel free to get in touch with the team at PK4 Projects. We're always happy to hear any new ideas from potential clients, and will be happy to hear yours, too. Give us a call on 0428 757 886 or fill out an enquiry form on our contact page and we will get back to you with all the information you require.


What would you give to have this day fifty years hence?
White lilies, ferns and willow trees!
The road ahead, windy and unsure calls you to an uncertain destination.
Walking with faltering step, avoiding the well worn path you find your own way.
Rejoice fair one! Destiny and fate—yours to create!
Follow your dreams and on the way have your moments of bliss, exhilaration, love, sorrow and joy.
And when finally the journey ends, you'll perhaps say what the Buddhists say…' I lived when it was time for me to live and died when it was time to die'.
How can we sit and not put up a fight?
Do you hear me, don't you understand?
Guantanamo Bay, Alcatraz, San Quentin…we'll find a good place for em!
AIDS began under Reagan's watch—how many poor died around the world since then? The CIA admitted in congressional hearings that it experimented with a virus that could destroy the immune system--I suppose their little green monkey got out of its cage unnoticed and a little too soon?
How many of our poor and working class will we lose--and of course Iraqis, now they don't really matter anyway do they?
Heartland inflection, pure and sweet like corn in the fields rolling in the breeze.
The voice gives it away—sweetness and directness, rolled up together in a cool concoction that melts in the summer night.
Dramatic flowers and a cool summer dress, tall drinks and laughter—how to make it last into the darkness of winter?
Jim Dragoni is a composer and guitarist. His performance areas include blues, traditional jazz, and original music. His music has received airplay in Europe as well as in the United States. He has been recognized for years on the East Coast as an artist, teacher, performer, producer and musical technologist.
Having trouble viewing Multimedia files?
Powered by Alpha Communications International Inc. Copyright ©2001, Alpha Communications International, Inc.


text:
Karen Gauthier
by Marquis Who's Who ModeratorPosted on September 1, 2020 September 18, 2020
Title: Associate Professor of History
Company: Bluegrass Community and Technical College
Location: Lexington, Kentucky, United States
Karen Gauthier, Associate Professor of History at Bluegrass Community and Technical College, has been recognized by Marquis Who's Who Top Educators for dedication, achievements, and leadership in history education.
Since her years in elementary and high school, Dr. Gauthier always had a deep love for history. In order to continue learning throughout her life, she pursued a career in education and taught at the elementary school level, as well as kindergarten level. For 20 years, she excelled as a classroom teacher in New Orleans, Louisiana, touching the lives of so many young students. Upon reading the biography of Katharine Graham, a renowned newspaper publisher, she was brought back to her love for history and wished to fully pursue the field.
Notably, since 2012, Dr. Gauthier has served as an associate professor of history at Bluegrass Community and Technical College in Lexington, Kentucky. With a specialty in colonial America, she teaches three classes per semester and coordinates all of the history and political science classes at the institution. In addition, she is in charge of scheduling, student needs, attending meetings, hiring adjunct professors, and more.
Dr. Gauthier first earned a Bachelor of Science in education from the University of New Orleans in 1974. One year later, in 1975, she received a Master of Arts in special education from Florida State University before returning to the University of New Orleans to obtain a Master of Arts in history in 2000. Additionally, in 2012, she achieved a Doctor of Philosophy in history from the University of Kentucky, where she had earned an academic scholarship for research.
Looking back on her illustrious career, Dr. Gauthier recalls her most notable achievement has been joining Bluegrass Community and Technical College due to her exceptional rapport with students. She attributes her success simply to hard work, as well as a passion for her area of teaching. With this sentiment, she also credits her mentors, Dr. Warren Billings, Dr. Dave Bowman, and Dr. Joan Melish, for their constant motivation and inspiration throughout her career. Today, Dr. Gauthier maintains member affiliation with the Native American Indigenous Studies Association and serves as a board member to the Carnegie Center for Literacy and Learning. In five years' time, she hopes to retire and take on more administrative work.
Contact Dr. Gauthier:
Posted in Higher Education, History Education, Secondary EducationTagged Bluegrass Community and Technical College, Carnegie Center for Literacy and Learning, Florida State University, Native American Indigenous Studies Association, University of Kentucky, University of New Orleans
Prev George Franklin Woodliff III
Next Ruth San Pietro
Emma Luster Shepard
Myrna Goldenberg, PhD
Walter Anthony Kukull, PhD
Dr. Mohamed E. El Deeb
Samuel M. Savin
Joanne Balducci DeFeo
Eric Hooglund


text:
Q: How to load site on custom path with Redirect I want to load my website on url https://mysite.my/main instead of default https://mysite.my/. But the following code gives me a mistake Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.
<BrowserRouter>
      <Switch>
        <Redirect from="/" to="/main" />
        <Route path="/main" component={App} />
      </Switch>
</BrowserRouter>

Inside <App/> component I have <Route path="/main" component={Section} />, but it doesn't seem that problem in that.

A: Try swapping like this:
<BrowserRouter>
      <Switch>
        <Route path="/main" component={App} />
        <Redirect from="/" to="/main" />
      </Switch>
</BrowserRouter>

redpajama_set_name: RedPajamaStackExchange


Inspiralis, a drug development business that grew out of research laboratories at Norwich's John Innes Centre, has expanded into new premises at the Innovation Centre at Norwich Research Park. Founded in 2008, the business has become a global force in the battle against infectious diseases and cancer, working at the forefront of drug discovery and antibiotic development and is seen as the number one topoisomerase company in the world.
Inspiralis developed from the John Innes Centre laboratory of Professor Tony Maxwell – a world leader in the field of topoisomerase research. It still maintains strong links with Professor Maxwell's lab, including sponsoring a student there. It also sponsors students within the school of biological sciences at the University of East Anglia.
"We have made good use of the greater space and enhanced office facilities created by the move into our own premises, expanding our supply of high-quality research products and screening services worldwide," he said.
The founding directors are Tony Maxwell, Nicolas Burton and Alison Howells. They were joined by Tony Blake in 2010. Investors include Iceni Seedcorn Fund and Plant Bioscience Ltd represented on the board by Dr Martin Stocks.
Photo (l to r) : Dr Sally Ann Forsyth, Chief Executive Officer Norwich Research Park with Inspiralis directors Alison Howells and Dr Nicolas Burton.


A nurturing, passionate music educator, Susan successfully teaches all students, age 3 to 93, to play beautifully from the first lesson using the Suzuki piano method. She studied with Japanese founder Haruko Kataoka and Shinichi Suzuki. Experience expressing your music on highest quality Steinway pianos. You will learn reading, ear training, theory, composition, performance and ensemble skills that will provide a lifetime of enjoyment with music! Susan Crosser created, directed and taught the Blue Lake Fine Arts Camp Suzuki Piano Program 30 years, created and taught St. Cecilia Piano Camp music history program 8 years, raised 4 musician children (3 of whom are professional music teachers) is a life member of Suzuki Association of America and St. Cecilia Music Center. She is an active member of National Federation of Music Clubs, Music Teachers National Association, Michigan Music Teachers Association, Piano Teachers Forum of Grand Rapids.


I bet the people who camped nearby were very sociable. Nothing antisocial about camping. I am glad the archaeology volunteer pointed out that the tree roots (the trees are massive in the pictures, some appear dead) were damaging the ramparts, the idea that ignoring things like tree and shrub maintenance is the same as "preservation" needs to be addressed. Everywhere. I have seen immense amounts of damage done to ancient monuments by hedges, trees, shrubbery, bracken and heather encroachment, badgers, rabbits, foxes, cattle and sheep. Recently on a fine trip up to Tre'r Ceiri in North Wales I actually saw some people moving some of the (millions of) stones to sit on to munch their sangwidges. They weren't being anti-social.
How do they know that the anti-social ones camped? Did they leave a tent behind? I presume that the parts of the hiillfort which were "moved" would have been some stones from the tumbled rubble ramparts to make a hearth. I dont think any campers could have moved ditches or ramparts. How did Historic England know that the hearth stones were part of the fort - were they marked and catalogued? Were they out of place? Sounds like supposition to me.
Unless rubble is consolidated, shrubbery and trees cut back and sites are maintained with proper paths, signage and suchlike, the matter of who moved which half dozen rocks to build a hearth seems a bit like handbags at twenty paces long after the unicorn has flown from the stable and the snowflakes have melted. It seems much more likely that this story is about trying to close off sites to the public and restrict access to ancient monuments for ordinary people.
Some clearance work and maybe more is being planned for Worlebury by the council's archaeologist.


Never experience any more downtime for your domain names with our advanced network infrastructure.
Get the cheapest prices for standalone domain name registrations with us.
Get support from our local team of professionals about your domain names any time of the day.
Your domain names and any web hosting will be activated immediately. No waiting time.
We send you helpful reminders so that you won't accidentally lose your domain name.
Register domain names with us! We are a Singapore domain name registration company, providing domain name registration services for all popular domain names, and serve over 150,000 customers.
Keep your domain name short. Longer domain names are difficult for customers to remember.
Keep it local. Use your city name in your domain name if your business specifically serves that area.
Relate it to your industry. You will rank better in search engines if your domain name pertains to what you actually do as a business. In addition, this makes your domain name more memorable to customers.
Say your domain name out loud before purchasing it. If your domain name is difficult to pronounce, it's probably not the best idea for a web address.
Purchase alternative spellings. You don't want your traffic to be hijacked by others using domain names similar to your own.
Purchase alternative extensions. Just like purchasing alternative spellings, this helps to protect your brand if you register .com, .net, and .org extensions for your domain name.
Attempt to purchase the domain you want from the current owner. If you find your domain that you absolutely must have is taken, do a WHOIS Lookup search to determine the current owner and offer to purchase the domain from them.
The Internet is the first place people look when they want to find a business no matter if it's a global retailer or a local restaurant. Your domain name not only ensures that customers will easily find your business online, it also gives you the ability to create a unique online presence. This presence could range from a simple online business card to a complete Web store.
Where you are currently with your business will determine how you choose your domain name. If you currently have a brick & mortar location up and running, you will probably wish to choose a domain name that is either exactly the same as your business name or very close to it. You've already worked hard in establishing your name and brand that your customers love and are familiar with so having a matching domain will enable your customers to find you easily online.
If you have a popular business name, it may not be available as a domain name. Not to fear, there are tons of domain variations available. You could try a different domain extension like .biz, .net, or .co instead of .com. Alternatively, you could add the city name you are in after your business name and then you can probably get a .com domain name. Additionally, this method of adding a local element can improve your search engine results for your local patrons.
If you are a new business, or in the process of launching a business that will exist solely online, picking your domain name is basically choosing your company name. You should choose a name that represents your business as far as attitude and personality and is a memorable name. Every business can benefit from a couple of key tips when choosing a domain name like keeping it short and making it easy to spell.


Oh... I am so happy! I finally replaced my old cutting table, after weeks of looking high and low for an affordable solution. I needed something that was 36" high, about 36" wide, and 60" long. My friend Diana had seen at someone's house two bookshelves with a door as a top.
Finding the bookshelves would not be difficult, and the door I could get at Home Depot or Lowes (plain door). However, they would not saw it down to size for me.
After many trips to IKEA to check out the various options, last weekend I decided upon these two bookshelves and a table top.
The bookshelves are 29 1/2" inches wide by 36" high (if you do not install the feet, which I did not). The tabletop was 29" wide x 61" 1ong x 1" thick - that was the best I could do!
Eventually I will stain the top to match the bookshelves. Right now, I am so excited with all the extra storage room I have. The shelves under the tabletop have projects I am working on; the ones on the outside hold baskets with spray and other bottles, patterns, oversize thread cones, and rulers.
Speaking of rulers, I used to keep them on my cutting table. Although they were handy, they were all together and I could not really remember which rulers I had... Also, the clutter always bothered me.
So, this morning I went to Staples in search of a cork board. I was going to buy a small one, even though I was not sure that was the best solution. As I was heading to the cash register, I decided to double back and check out the clearance table.
How do you like it? Aren't these boards fun? I can easily find and grab the ruler I need, and the oversize rulers are stowed on the bookshelf.
My 12-year-old son Ryan helped my husband assemble the bookshelves Saturday, and this morning Ryan helped me hang the boards - instead of using the self-adhesive stuff that came with the boards I nailed them to the wall due to the weight of the rulers. Done!!!
Now, if I could only find time to enjoy my updated studio... Is Summer over yet???
Love your last minute find! I think the rulers look great, and you found a solution that works for you. Thanks for sharing.
Thanks, Celia! The price was right, too!


After much deliberation, you have finally selected the home of your dreams. What now? Do you knock on the seller's door with a sack full of cash and demand the keys?
Not quite. Buying real estate isn't like buying a pack of gum down at the variety store. There is a process to be followed, and the first step is to make a purchase offer.
Your real estate agent, working in close consultation with you, will prepare the Offer to Purchase. The Offer to Purchase is an important legal document that says you agree to buy the seller's house (often contingent on certain conditions).
This process is not as straightforward as it sounds. You want the seller's house, but to reach that point, you must be mindful of the seller's reaction to any conditions you demand in the offer.
Firm offer to purchase a home: This is usually preferable to the seller, because it means that you are prepared to purchase the home without any conditions. If the offer is accepted, the house is yours.
Conditional offer to purchase a home: This means that you have placed one or more conditions on the purchase. Common conditions make the completion of the sale subject to a clean home inspection, subject to financing approval, or subject to the sale of the buyer's existing home. The house is not sold until all the conditions have been met.
As this purchase may well constitute the biggest outlay of dollars in your lifetime, you don't want reckless disregard for detail to turn a real estate investment into a financial setback. Both you and the seller will want to take every precaution, stating any contingencies clearly, to avoid the possibility of legal issues later on.
Deciding how much to offer is one of the most difficult judgments to make. Offer too little (or offer too late), and you stand the chance of losing the house to another bidder (particularly in a seller's market). On the other hand, nobody wants to pay more for something than it's worth. Your Royal LePage real estate agent can help you understand the local housing market by showing you what comparable homes are selling for, helping you assess the condition of the house, and determining the type of competition you may face from other buyers.
The deposit shows your good faith and will be applied against the purchase of the house when the sale closes. Your Royal LePage real estate agent can advise you on an appropriate amount (typically 5%).
Terms include the total price offered and the financing details. You may arrange your own financing or ask to assume the seller's mortgage, especially if it has an attractive interest rate.
Conditions are items that must be completed or fulfilled prior to the closing (such as a home inspection, obtaining financing, or selling your existing house). List anything you want the seller to pay for – carpet cleaning, warranties and any repairs or credits for damages, and so on.
Your offer may be contingent on certain items being either included or excluded in the sale. These items can be anything from appliances to decorative items, such as window coverings or mirrors (these are called chattels in legalese).
In Canadian real estate transactions, the closing day is generally the day the title of the property is legally transferred and the transaction of funds finalized, unless otherwise specified (except in Manitoba and Quebec). In British Columbia, the possession date is legally one to three days after closing.
When the negotiations are complete and all the terms are agreed upon, your real estate agent usually prepares a copy of the agreement of purchase and sale showing only the final terms. Once this process is complete, you and your real estate lawyer (or notary in Quebec) should review the offer to see that its terms are stated exactly as you wish before you sign it.
Careful attention to detail and consideration of the seller's point of view should result in a happy outcome: your confident stride through the front door of your new house.
Welcome! Please Enjoy this Article on the Elements of an Offer to Purchase a Home.


text:
Honda's VTX 1800cc
By Mike Hanlon
That's right, Honda's VTX is 1800cc - two 900cc cylinders of sheer grunt. This time, when Honda decided to go after Harley Davidson's traditional market, it learned from past mistakes. Recognising that the Harley badge could never be replaced, it went for it's own unique selling proposition - masses of grunt - 1800 cc of grunt, to be precise.
Now it's not a perfect motorcycle by any stretch. The VTX is very heavy, though you'd never know unless someone told you. And its ground clearance is limited, particularly due to that enormous muffler. But 1800cc of motor covers a multitude of sins, and the VTX's fuel-injected 100 cubic inch donk is the baddest in town! The fuel injected, six valve bruiser produces a bone-crushing 16.2 Newton metres of torque at just 3000 rpm. Claimed figures don't count for much compared with the actual experience of twisting that throttle from idle and feeling the VTX start pushing road behind it like you have NEVER felt it before.
We were very fortunate in preparation for this article, to ride a completely standard VTX and one with drag pipes. The usual problem with testing a motorcycle such as this is that you never get to see it as it will inevitably hit the road - no-one will retain the standard muffler, almost certainly swapping on a set of raspier pipes, partly to increase the ground clearance, but mainly to let that massive mill snarl a little. And snarl it does - it's a funny thing I've noticed over nearly thirty years of motorcycle testing, but no-one has ever claimed they didn't see me when I was riding a motorcycle of this ilk. Not once did they make me feel threatened with an aggressive move of any kind, and I suspect its partly due to the fact that it's not wise to mess with someone who rides a machine like this.
Riding the VTX down the beach road on a Sunday morning is like witnessing the parting of the Red Sea. Everyone who rode the bike commented on the Harley's, whoops, Honda's "presence" - cars you would not normally expect to give way are suddenly extremely courteous. Exactly what gets this 'respect", be it the size or the styling, it doesn't matter. It's there, and it's bloody marvellous for your state of mind. Getting back to the size for a moment, it has the longest wheelbase in motorcycling, and clocks in dry at 320 kilos, almost 50kg heavier than the 1670cc Yamaha Warrior and Harley's new-age hotrod V-ROD.
BUT ... every rider gets both feet on the ground, WITH knees bent! The seat is low, and so is the weight - the VTX is extremely easy to ride, even for the relatively inexperienced - it'll pull any gear, at any speed, it's always predictable and stable under all conditions.
The brakes are massive and predictable, and the VTX tyres are big. The braking system is linked with a strong rear bias, so you can brake entirely with your foot. Stopping quickly is just a slight firmer press of the foot brake - the bike squats due to the rear bias, but it stops quickly and feels VERY safe when it does so. Crash stops just require a squeeze of the hand too. In many ways, the VTX is like an automatic, and the really comfy seat and ease-of-use makes for a very cruisey ride. Throw in a complete lack of hassle from the other road inhabitants, and the VTX is a wonderful way to relax.
Now the VTX is not a racetrack, curvy-road style of bike but it can kick the butt of almost anything at the traffic lights! A bullet-proof clutch, fat torque between 3000 and 5000rpm, and that fat rear tyre combine for a very fast exit.Fully prepped , the VTX is capable of high elevens for a quarter mile - very respectable - but at the end of 400 metres, the rider looks more like a sailboarder , flapping in the breese on those high-riser bars at around 180kmh. The part where the VTX makes ground on the sub-eleven second quarter milers is the first 100 metres, making it a real world strip bike.
The VTX is capable of thunderous acceleration but that's not what it's about. It's a reliable, high-tech, fuel-injected FUN bike and it does it as well as anything I've ridden in 30 years. In closing, we must point out that three people who rode the bike in the two weeks we had it are considering buying a VTX.
Mike Hanlon
MotorcyclesHonda Motorcycles
As a photojournalist, Mike's work was published in a dozen languages across 20+ countries. He went on to edit or manage over 50 different print publications, each with a different target audience: sports, automotive, advertising, marketing, design, ad infinitum. Mike has been working in the internet for more than 20 years and was the veteran of five internet start-ups before founding New Atlas in 2002.


text:
[Games] Nimble Quest (iOS / Android)
A lot of us who lived through the early Nokia mobile phone era should be familiar with the classic game, Snake. Yes, the game predates mobile phones, but a lot more of us were exposed to the game since it was one of the default games installed on several generations of phones.
Nimble Quest is directly derived from Snake, but with some interesting twists. And thus the game becomes quite the innovative spin on a classic game concept. At first I didn't expect to enjoy this game so much, but now I've lost a fair amount of my life trying to navigate my little party past various enemies. All the while collecting gems, coins and other heroes.
But I'm getting ahead of myself in this review.
Nimble Quest is essentially a sort of adventure game released by the company NimbleBit. I've played both the iOS and Android versions of the game and they're pretty much the same.
Following the principle of Snake, your main goal is to navigate your party parts enemies without bumping into them, into the walls of the area or into your own party (like the tail in Snake). As you kill the enemies around the map, their deaths spawn gems, gold coins or other heroes. And when you cross over these heroes, they get added to your party train.
So you can only choose your party leader at the start of the game. Beyond that point, your party only gets bigger (or longer in this case) when you gather heroes within each stage after killing opponents. Every time you finish a new stage for the first time, you unlock another character to aid in your future missions. Thus your maximum party size is always equal to the total number of possible characters that you have unlocked.
Each hero has a different attack style, armor rating and other abilities. The knight is a melee character who can slash at enemies ahead of you. The archer can shoot arrows off in a straight line. And later characters hurl fireballs, throw bombs and many other abilities. And adding them all to your party can certainly increase your chances of surviving the stage. And all of them are rendered in rather adorable sprites that are highly reminiscent of the early Final Fantasy games.
As you go through each stage you can unlock various power-ups like magnets that attract gems to you or a shield to protect your party leader from a direct collision. You can extend the duration of these power-ups by spending your gems to upgrade them. Or you can spend your gems on upgrading your heroes. And best of all, the more kills that you manage with a particular party leader will reduce the the upgrade cost for that hero. So you have a lot of different ways to improve your party.
At its most basic, the game seems simple enough. Largely it's still Snake with additional weapons and stuff. And yet that element makes a world of difference as you dodge spiders, skeletons, knights and demons as you go from stage to stage. And the action can get pretty intense as the enemies start whittling away at your party or you end up hitting a darn wall.
Nimble Quest is a fun and addictive casual game, one that is easy to pick up on the fly and leave just as quickly - provided you cleared a particular stage first. And I'm happy to rate the game a full 5 ominous tones when a hero dies out of a possible 5.
Tags: android, games, geekdom, iOS, reviews


At the end of one of golf's most thrilling – and longest – days of the year, 58 players advanced through 36-hole sectional qualifying rounds held at 10 sites around the country to earn spots in the 2015 U.S. Open field. The group includes two golfers with multiple U.S. Open titles as well as 15 amateurs.
For complete coverage, visit usopen.com, or follow any of the links below to access results, photos and a story recapping the events at each location.


We don't have any reviews for Robert Walters Santiago (Chile).
Robert Walters Santiago (Chile) employees haven't posted any photos yet.
We don't have any salaries for Robert Walters Santiago (Chile).
We don't have any interview reviews for Robert Walters Santiago (Chile).
This is an overview of the Robert Walters Santiago campus or office location. This office is the major Robert Walters Santiago, Chile area location. Find the Robert Walters Santiago address. Browse jobs and read about the Robert Walters Santiago location with content posted anonymously by Robert Walters employees in Santiago.