text:
Talk:History of Haskell/Version 1
Comments on "The History of Haskell" (draft)
Please use the Wiki to add your comments here. Include your name and the date. You can do this with four tildes, like this: ~~~~.
To edit the page, you need to log in: click the login link at the bottom of the window. If you don't already have an account, the login page lets you create one in 30 seconds. See HaskellWiki:Contributing.
Simonpj 18:51, 14 July 2006 (UTC) Simon PJ. Here is an example comment
BerniePope I hope you don't mind, but I've taken the liberty of breaking this up into sections, so that it is easier to find out what has been said already. This seems to be especially useful for typos etc. Please feel free to add other sections if you think they are necessary. I've also made the page numbers bold, and put them into page order (where possible).
Title suggestions
JaredUpdike 20:38, 14 July 2006 (UTC) Other ideas for a title: The History of Haskell: Unsuccessfully Avoiding Success or something using the motto "Avoid success at all costs." Or perhaps Success Considered Harmful, or, A History of Haskell or Doomed to Succeed quoting Hoare (although this sounds somewhat self-congratulatory).
GaneshSittampalam 09:19, 15 July 2006 (UTC) I really like the "eager to be lazy" title.
BerniePope 13:59, 17 July 2006 (UTC) Subtitles: (not serious) "A pure type of fun, with no side-effects (except when bottoms are uncovered)". "From theorems to tools". "Doing lots of typing to avoid doing lots of work". "Beta reduction than destructive update".
Typos, spelling, grammar, formatting and expression
Malcolm 10:05, 20 July 2006 (UTC) (SLPJ: done) Typo? page 1, column 2, "version 1.0 dated 1 April 1988" seems to conflict with the later timeline (and several other mentions) which places the first version in April 1990.
BerniePope 15:42, 15 July 2006 (UTC) (SLPJ: done)Typo: page 2, column 2, "Rod Bustall" should be "Rod Burstall".
Greg Restall 09:55, 7 August 2006 (UTC) (SLPJ: done) Name: page 3, column 1, "Barclay Rosser" should be "Barkley Rosser".
BerniePope 15:42, 15 July 2006 (UTC) (SLPJ:done) Spelling: page 3, column 1, "confernce".
(SLPJ: wording improved) On page 4 after the list of goals, it seems that the following sentence ("We agreed to base it on an existing language, namely OL.") should be preceeded by a line break (it now starts on the same line as the sixth goal).
ChristianSievers 20:12, 25 July 2006 (UTC)(SLPJ: done) Expression. page 5, about Haskell 1.4: "list comprehensions were made applicable to arbitrary monads". I think when applied to a monad, they are no longer list comprehensions. If you don't want to mention monad comprehensions, maybe write that "l. c. were generalized to a. m."
ChristianSievers 20:12, 25 July 2006 (UTC) (SLPJ: done) Double word. page 7, first line: "can be sure that that f will not"
JaredUpdike 22:00, 14 July 2006 (UTC) (SLPJ: done) page 9 Section 3.8, last paragraph, syntax error: should be "Miranda is still in use today: it is still taught in some institutions", missing word. (Sec 4.2 This tradition was honed by Moses Schonfinkel and Haskell Curry, and came to be called currying. I half expected a joke following this, saying [it was] called currying, luckily, and not schonfinkeling.) Same section, typo: is a list of lists should be in a list of lists.
- That joke would have been surpassed by reality, because the german word for currying is schönfinkeln. See Schönfinkeln. --MarcVanWoerkom 18:49, 16 July 2006 (UTC)
- ChristianSievers 20:12, 25 July 2006 (UTC) (SLPJ: done) So in the section about currying, it should be Moses Schönfinkel (Umlaut!).
BerniePope 15:42, 15 July 2006 (UTC) (SLPJ: done) Expression. page 9. It says "Haskell did not adopt Miranda's abstract data types, using its module system instead." It is not clear whose module system it is using. Perhaps it should read "using a module system instead." ?
ChristianSievers 20:12, 25 July 2006 (UTC) (SLPJ: done) Missing word. page 10, end of section Infix operators: "are not used extensively enough to cause major problems."
BerniePope 15:56, 15 July 2006 (UTC) (SLPJ: done) Tense. page 12. Section 5.1, algebraic data types. It says "In general, every algebraic data type specified...", should that be "specifies" ? or perhaps even better "In general, algebraic data types specify" ?
(SLPJ: ToDo) Ruiz 12:04, 16 July 2006 (UTC) Comment. page 12. If I am not mistaken, the Fermat's Last Theorem example only generates (1,1,z) triplets.
- Well, the example is wrong in many more respects than that.
need to be bigger than3
for the example to relate to Fermat's Last Theorem. Furthermore, the list comprehension would generate 'counter examples' to the theorem, not solutions. I think it would be best if you chose a completely different example
BerniePope 16:15, 15 July 2006 (UTC) (SLPJ: done) Tense. page 13. Section 5.3 Abstract types. It says "This had the advantage ...". Perhaps it should be: "This has the advantage", since Miranda still exists, and the advantage still holds. Later in the same paragraph the expression about adopting the feature in Haskell is a bit awkward. Perhaps it could read: "It is not clear how to adapt Miranda's method of defining abstract data types to type classes, and that is one reason we chose a different solution." ?
BerniePope 16:27, 15 July 2006 (UTC) (SLPJ: done) Typo. Section 5.6, page 14 and in Bibliography. Godel's name in citation missing the 'o'.
- No it's missing the 'ö'. It has an umlaut. Josef 13:33, 4 August 2006 (UTC)
BerniePope 05:41, 16 July 2006 (UTC) (SLPJ: done) Comment. page 15, column 1. "practical comprehensibility" is a bit of a mouthful. Perhaps "pragmatism" would suffice?
BerniePope 06:11, 16 July 2006 (UTC) (SLPJ: done) Typo (possibly). page 16. Section 6.4, multi-parameter type classes. "They gave the following example: second.". Should the "second" be there?
BerniePope 06:56, 16 July 2006 (UTC) (SLPJ: done)Typo, page 16. The code "n = (x + y)", perhaps drop the redundant parens?
BerniePope 07:19, 16 July 2006 (UTC) (SLPJ: done) page 17. Choice of identifier. In the code "f (MkT x f) = f x". Perhaps the inner or outer "f" should be renamed? Also, is there a more compelling example than this one?
Weihu 17:33, 16 July 2006 (UTC) (SLPJ: done) page 17. Duplication of words. "The the type qualification in this case" => "The type qualification in this case".
BerniePope 07:16, 16 July 2006 (UTC) (SLPJ: done) Typo. page 17. "patter-matching" -> "pattern-matching".
BerniePope 07:26, 16 July 2006 (UTC) (SLPJ: done) Expression. page 17. Perhaps drop "rather than explicitly". This is implied by the previous "happens implicitly".
BerniePope 07:38, 16 July 2006 (UTC) (SLPJ:done). page 18. In lexically scoped type variables, it says the type of xcons is "forall a. a -> a". Do you mean: "forall a . [a] -> [a]"?
ChristianSievers 20:12, 25 July 2006 (UTC) (SLPJ: done) Missing Article. page 18, section Generic Programming: "Haskell has served as the host language for a remarkable variety of experiments..."
Plareplane 01:13, 18 July 2006 (UTC) (SLPJ: done) Typo. page 20. "The input in the string to be parsed, and returns a list of parse results, consisting of the value parsed and the remaining unparsed string."
BerniePope 08:39, 16 July 2006 (UTC) (SLPJ: done) Typesetting. page 22. Sometimes the "IO monad" is written where "IO" is in typewriter font, and other times it is in times roman, and other times it is written "I/O". This may be an intentional distinction, but maybe the notation can be unified?
Weihu 20:36, 16 July 2006 (UTC) (SLPJ: done) Word missing. page 22. "So readFile a function that" => "So readFile is a function that".
ChristianSievers 18:20, 18 July 2006 (UTC) (SLPJ: done) Extra word. page 22. "An IO computation is a function that (logically) takes a the state..." Drop "a" or "the".
ChristianSievers 20:12, 25 July 2006 (UTC) (SLPJ: done) Double word. page 24, last sentence: "The first release was (0.10) was in December 1992..."
ChristianSievers 20:12, 25 July 2006 (UTC) (SLPJ: that's the way multi-para quotations are supposed to go.) Syntax. page 25. In the section about hbc, most ending quotation marks are missing.
JaredUpdike 04:27, 15 July 2006 (UTC) (SLPJ: done) page 25. Section 9.2 misspelling "existance" should be "existence" third to last paragraph. Sec. 9.5 , page 27, second to last paragraph. test bad should be test bed.
BerniePope 12:33, 16 July 2006 (UTC) (SLPJ: done) Typo. page 28. Section 10.2, paragraph 2. "who had by thus time" -> "who had by this time".
BerniePope 13:22, 16 July 2006 (UTC) (SLPJ: done) Missing word. page 30. Section 10.4.2 Observational debugging. It says "to track down bug location" -> "to track down the bug location".
BerniePope 05:07, 17 July 2006 (UTC) (SLPJ: done) Expression. page 30. Section 10.5 Testing tools. "If debugging tools ... -> "Whilst debugging tools ...". The "if" seems to be left hanging in the sentence.
BerniePope 05:30, 17 July 2006 (UTC) (SLPJ: done) Syntax. page 30. Section 10.5 Testing tools. In the definition of "prop_insert" you use "$" for infix application, and thus avoid some parens. I wonder whether it would be better to have the explicit parens instead? Non Haskellers may find the "$" style difficult to parse. Also, it would be more consistent with other example pieces of code in the paper.
Weihu 21:35, 15 July 2006 (UTC) (SLPJ: done) Typo: page 31, column 2, "a central them" should be "a central theme".
Malcolm 11:10, 20 July 2006 (UTC) (SLPJ: done) Typo: page 31, section 11.1.1 Parser Combinators. "folkolore" should be "folklore".
JaredUpdike 00:14, 18 July 2006 (UTC) (SLPJ: done) Typo: page 32 end of page. Unless my PDF reader is missed up (likely) "time = Beh (\t - t)" should be "time = Beh (\t -> t)".
JaredUpdike 00:18, 18 July 2006 (UTC) (SLPJ: done)Typo. page 33 Second paragraph, 11.2.2 "Arguably, in is better" should be "Arguably, it is better".
BerniePope 05:47, 17 July 2006 (UTC) (SLPJ: done)Typo. page 33. Section 11.2.1 Functional reactive programming. The instance declaration for Floating is missing "Behaviour a) where".
Josef 14:19, 4 August 2006 (UTC).(SLPJ: done) page 33 section 11.2.2, second to last paragraph. You write '... an approach based on a generalization of monads called arrows was discovered ...' You should have a reference to the section where you talk about Arrows, which currently is Section 6.6. Though see my comment further down on moving the section about arrows.
JaredUpdike 00:24, 18 July 2006 (UTC) (SLPJ: done)Typo. page 33. sec 11.2.3: First three sentences could perhaps be combined with colons and semicolons, i.e. "Lazy functional [snip]: firstly [snip]; secondly [snip]." or the the second and third sentence fragments might be provided with predicates.
JaredUpdike 00:31, 18 July 2006 (UTC)(SLPJ: done) Typo. page 34. sec. 11.2.3 end of first paragraph
should be
(omit period after quote).
GaneshSittampalam 09:18, 15 July 2006 (UTC) (SLPJ: done)Section 11.2.3 page 34 typo "unsagePerformIO".
BerniePope 06:44, 17 July 2006 (UTC) (SLPJ: done)Missing word (perhaps). page 34. Section 11.2.5 Summary. It says "... a DSEL is little than that." I have not heard that expression before, perhaps it was meant to be: "... a DSEL is little more than that."?
BerniePope 06:51, 17 July 2006 (UTC) (SLPJ: done)Typo. page 35. Section 11.3 Graphical user interfaces. "lacked the fully range of widgets" -> "lacked the full range of widgets".
BerniePope 06:54, 17 July 2006 (UTC) (SLPJ: done)Extra word. page 35. Section 11.3 Graphical user interfaces. "... and only implemented only part of the full interface."
Weihu 21:42, 16 July 2006 (UTC) (SLPJ: done)page 35: "invariably based on a imperative widget" => "invariably based on an imperative widget".
BerniePope 06:54, 17 July 2006 (UTC)(SLPJ: done) Typo. page 35. Section 11.4 Natural language processing. "Callaghan?s": there is a question mark where there ought to be an apostrophe.
(SLPJ: ToDo) BerniePope 07:07, 17 July 2006 (UTC) Notation. page 36. Section 12.1 Education. You write "embedded DSLs", earlier in Section 11.2 you use the acronym "DSEL" perhaps for the same thing?
BerniePope 07:14, 17 July 2006 (UTC) (SLPJ: done)Typo (possibly). page 36. Section 12.1.1 A survey of Haskell in Higher Education. On my screen it looks like there is an extra space after the number 28, in the sentence "Surprisingly, only 28 ..." Perhaps there is supposed to be a percent sign in there? Could be an artefact of the PDF viewer i'm using, but seems unlikely.
BerniePope 07:21, 17 July 2006 (UTC)(SLPJ: done) Typo. page 36. Section 12.1.1 A survey of Haskell in Higher Education. Bottom of second column. Backwards quotation marks at start of "The students who take the Haskell track ..."
BerniePope 07:56, 17 July 2006 (UTC) (SLPJ: done) Missing word. page 37. Section 12.2 Haskell and software productivity. "These contests have open to anyone." -> "These contests have been open to anyone."
BerniePope 08:03, 17 July 2006 (UTC) (SLPJ: done) Typo, page 37. Section 12.3. Darcs and Pugs. Third paragraph. "source coded" -> "source code".
BerniePope 08:25, 17 July 2006 (UTC) (SLPJ: done) Expression (minor). page 38. Section 12.4.2 Bluespec. "The purpose of them" -> "Their purpose". Later in the same paragraph there is a typo: "Haskell language construct" -> "Haskell language constructs" (plural).
(SLPJ: done) Typo on page 39: Another example is that Linspires toold must handle legacy data formats. --Neil Mitchell 15:23, 14 July 2006 (UTC)
Plareplane 01:13, 18 July 2006 (UTC)(SLPJ: done) Extra word. page 40. "given we the importance we usually attach"
ChristianSievers 20:12, 25 July 2006 (UTC) (SLPJ: done) Syntax. page 40, Python section: "In turn, Javascript another dynamically typed language...". There is a comma missing after "Javascript".
Josef 14:33, 4 August 2006 (UTC). (SLPJ: done) Typo. page 43. Reference to Duck, et.al. Should be "ESOP'04" instead of "ESPO'04".
Josef 14:33, 4 August 2006 (UTC). (SLPJ: done)Problem with swedish charaters. page 43. Reference to Dybjer. Should be "Martin-Löf's" instead of "Martin-Lf's". Use '\"o' in latex to get the umlaut.
(SLPJ: done)Typo on page 43: Missing letter in "Gdel". Phlucas 09:54, 17 July 2006 (UTC)
- ChristianSievers 20:12, 25 July 2006 (UTC) Also wrong cases in the title. Both need some BibTeX magic.
(SLPJ: I think this is OK now) Two different papers are referenced as (Kiselyov et. al. 2004) in the text (bib entries on page 44). Phlucas 09:54, 17 July 2006 (UTC)
(SLPJ: done) Duplicate reference Wallace/Chitil/Brehm/Runciman on page 48. Phlucas 09:54, 17 July 2006 (UTC)
BerniePope 13:06, 16 July 2006 (UTC) (SLPJ:done) Overall. Capitalisation in headings seems to be inconsistent.
JaredUpdike 00:51, 18 July 2006 (UTC)(SLPJ: done) Many places, esp. sec. 12. The word "textbook" appears as "text book" and "text-book" although I believe "textbook" is the textbook spelling.
JevgeniKabanov 15:58, 18 July 2006 (UTC) (SLPJ: done)Page 25 has transactional mememory.
General comments
Section 1, 2, and 3
Josef 13:19, 4 August 2006 (UTC) I didn't find any reference to Haskell Prime. I think it is worth mentioning when, why and how the Haskell Prime effort was initiated.
(SLPJ: done, except I can't find a typeset Haskell 1.3 library report)ChristianSievers 20:12, 25 July 2006 (UTC) Page 5. You give the page count for some version of the report, but not all. At least for the first version, it should also be given, and why not just for all?
Padator 08:56, 17 July 2006 (UTC) Page 7. There is maybe too few discussions about the work of Stefan Kaes. I would like to know more about this topic.
(SLPJ: done) BerniePope 15:42, 15 July 2006 (UTC) Comment. page 7. Section 3.3, third paragraph. Rather than talk about "div" (are the first quote marks backwards?), perhaps you could say - "for example, Miranda's type system allows floating point values to be given to functions which are only defined on the integer subset of num, thus turning a static error into a dynamic one."
(SLPJ: done)Josef 13:14, 4 August 2006 (UTC) Comment. page 7. Section 3.4. Although Haskell doesn't have a formal semantics maybe it would be helful to point out that the report uses a core language which many features of Haskell are translated into.
(SLPJ: ToDo) sjthompson Sun Jul 23 16:47:55 BST 2006. Comment. page 8. Section 3.4 talks about 'equational reasoning' as being the basis of Haskell proof. It's a bit more complicated, since equational reasoning is limited to formalising the properties of equality as a congruence relation. To prove theorems about Haskell functions it's also necessary to use rules of induction which correspond to the recursive definitions of functions and data types. Induction suffices to prove results for the finite, fully defined, inhabitants of data types; variants of coinduction are needed to infer results over, for instance, infinite lists.
Section 4: Syntax
(SLPJ: ToDo) BerniePope 04:24, 18 July 2006 (UTC) Comment. page 9. Section 4 Syntax. I was a little surprised not to see a discussion of the literate style. Though it is not a Haskell invention, it still seems important.
(SLPJ: done)BerniePope 15:42, 15 July 2006 (UTC) Comment. page 10. Section 4.1, layout. It says "The rules are simple ...". I think this is a contentious issue. Recent discussions on the Haskell Prime mailing list [1] suggested a contrary view. How many Haskellers actually know the rules? Perhaps it would be more accurate to say that experience shows it is not hard to adopt a style of programming which stays within the rules.
(SLPJ: done)sjthompson Sun Jul 23 16:47:55 BST 2006. Comment. page 10. Section 4.1 I would agree with Bernie's comment, and would add that experience appears to show that layout of Haskell programs is more idiosyncratic than in other languages. There appears to be no widely accpeted layout style; and in the HaRe project (Li et al, 2003) ir was therefore necessary to preserve layout of user programs because it was unacceptable to users simply to pretty print programs in a standard layout.
(SLPJ: ToDo) BerniePope 15:42, 15 July 2006 (UTC) Comment. Footnote 2 on page 10 says the Scheme authors took a more Draconian approach with respect to operators, though it doesn't actually say what that means. On the off chance that someone reading the paper doesn't know Scheme, it might be worth elaborating on that point.
(SLPJ: it's still superficial compared, say, to type classes. But I agree that the full glory of pattern matching is far from trivial, although the Report does give a pretty detailed translation, including guards.)sjthompson Sun Jul 23 16:47:55 BST 2006. Comment. page 11. Section 4.4 "It is certainly true that the additional syntactic sugar makes the language seem more elaborate, but it is a superficial sort of complexity, easily explained by purely syntactic transformations." The differences are not purely syntactic, nor the transformations trivial. For example, it is possible to "fall through" from a guard to a subsequent equation, whereas if ⦠then ⦠else ⦠provides an answer in every case. An closer equivalence would be forced by making a final "otherwise" clause mandatory.
(SLPJ: done)BerniePope 15:42, 15 July 2006 (UTC) Comment. page 12. Section 4.4. Near the end of the section you give an example of "where" being attached to a declaration. I think the example function "f" is rather obscure, perhaps there is a better example? Maybe one from the Prelude? Also, there seems to be another point you could make here. Due to laziness we get some more freedom in the way that we write where clauses. For instance, the thing being defined in the where clause may only be well defined in a subset of the alternatives. But that doesn't matter because we will only evaluate the thing if and when it is needed, not before.
(SLPJ: ToDo) BerniePope 15:42, 15 July 2006 (UTC) Comment. page 12. Section 4.5, list comprehensions. Perhaps it is worth noting the Haskell does not have the diagonalisation operator like Miranda. It may also be worth remarking on why this is so. Surely it was considered.
(SLPJ: done) sjthompson Sun Jul 23 16:47:55 BST 2006. Comment. page 12. Section 4.5. Erlang (strict) has list comprehensions.
(SLPJ: not sure this is worth it)Josef 13:33, 4 August 2006 (UTC) Comment. page 12. Section 4.5. I think parallel list comprehensions are worth mentioning. Although I don't quite know where. Maybe a new section called "Haskell as a syntax laboratory"?
Section 5 Data types
(SLPJ: not sure this is worth it.)ChristianSievers 20:12, 25 July 2006 (UTC) page 12 Section 5.1 discusses the empty type as sum of zero alternatives. While this is indeed not allowed by the syntax, we had Void. Maybe this should be mentioned somewhere.
(SLPJ: done) BerniePope 16:05, 15 July 2006 (UTC) Comment. page 13. Section 5.3 Abstract types. It says that the type has one constructor. Is it really necessary to limit the type to just one constructor? Surely it is enough that the constructors of the type are not exported, regardless of how many there are?
(SLPJ: done)ChristianSievers 20:12, 25 July 2006 (UTC) Page 13, section 5.3: The implementation of isempty results in an Eq a constraint on its type. Readers shouldn't be encouraged to test for empty lists in this way. Maybe also mention that because of different name spaces, the data definition could be data Stack a = Stack [a]. (SLPJ: for the latter, I just added an example in 4.3)
(SLPJ: done) Malcolm 10:44, 20 July 2006 (UTC) page 13. Section 5.3 Abstract types. I agree with Bernie's query above. It would seem that in Miranda, the abstract type must have only one constructor, but this restriction really does not apply in Haskell. Perhaps this is worth explaining in the text. Maybe if the description of Miranda's abstract types were placed before the Haskell version, it would be easier to make this point.
(SLPJ: too detailed?) ChristianSievers 20:12, 25 July 2006 (UTC) page 13f about n+k patterns. What about c*n patterns, was that only gofer? Maybe it could still be mentioned here.
Section 6 Type system
(SLPJ: Done, new section) BerniePope 13:24, 17 July 2006 (UTC) Comment. page 14. Section 6 Haskell as a type system laboratory. You don't seem to mention the defaulting rules of Haskell for unresolved numeric overloading. Whilst I think defaulting is somewhat of a wart, it is nonetheless of interest because it reveals some of the difficult design decisions that have to be made in the definition of a real programming language. Some of the most interesting parts of this paper are the sections which delve into the process of designing the features of Haskell, and maybe the defaulting story is worth telling too.
(SLPJ: done) BerniePope 05:28, 16 July 2006 (UTC) Comment. page 14. Section 6.1, Type classes. Perhaps it should mention that eqInt is primitive equality on integers, maybe as a comment in the code.
(SLPJ: added a whole para) Josef 13:40, 4 August 2006 (UTC). Comment. page 14-15. Section 6.1. You write 'A particularly attractive feature of type classes is that they can be translated into so-called "dictionary-passing style", by a typedirected transformation.' On the other side of the coin there is the problematic fact that type classes cannot be understood without some type directed translation. That might be worth mentioning. Together with the fact that dictionary translation isn't the only way to understand type classes.
(SLPJ: too detailed?) Josef 13:44, 4 August 2006 (UTC). page 15. Section 6.1. You mention the classes Read and Show. But up to Haskell 1.2 these were one class called Text. Worth mentioning perhaps?
(SLPJ: not sure what to do here, if anything) BerniePope 05:54, 16 July 2006 (UTC) Comment. page 15. Section 6.2 Monomorphism restriction. This marks one of the most unusual aspects of the language, especially in the Language Report. In particular, it is motivated by operational semantics --- sharing --- but the rest of the Report is largely silent on the issue. I think the Report says something to the effect of "programmers expect sharing to be preserved", but there is not much else in the Report to back this statement up. Perhaps you could tie this back to the discussion in Section 3.4 (Haskell has no formal semantics). Also, I think it would be reasonable to say "GHC provides a flag to suppress the restriction", without actually naming the flag.(SLPJ: mentioned this)
(SLPJ: hard to know what to say. The paper can't be a tutorial really.)BerniePope 06:02, 16 July 2006 (UTC) Comment. page 15. Section 6.2 Higher kinded polymorphism. It says "Here, the type variable m has kind *->*". It seems like the reader is already supposed to know what a kind is at this point. Perhaps the section could provide a little introduction to the concept of kinds first. Another thing about kinds is that they are sort of shadowy figures that seem to lurk in the background of Haskell. For instance they have no syntactic counterpart in Haskell 98. It can be quite daunting for beginners when they get a kind error.
(SLPJ: done) Malcolm 10:54, 20 July 2006 (UTC) Comment page 17. Section 6.6 Existential data constructors. Hbc, ghc, and Hugs have them. So does nhc98! So does jhc! In fact I'm not sure there are any compilers that don't support them.
(SLPJ: too detailed?) BerniePope 07:30, 16 July 2006 (UTC) Comment. page 17. Section 6.6 Implicit parameters. Perhaps contrast this approach to a Reader monad?
(SLPJ: too detailed; the reader will have to read the papers!)BerniePope 07:44, 16 July 2006 (UTC) Comment. page 18. Arrows. It doesn't really say what arrows are, except that they are like monads, but more general. Perhaps this could be elaborated, maybe with some mention of the intuition that arrows generalise things which are somehow composable? Perhaps an example of an arrow which cannot be done with a monad?
(SLPJ: arrows moved to 7.4) Josef 14:05, 4 August 2006 (UTC) page 18. Arrows. I think this discussion about arrows is misplaced. Arrows is not a type system thing. It's a library, perfectly implementable in Haskell98. Sure, there is some syntactic sugar that is desugared in the type checker in GHC. But there are other preprocessors for Arrows that doesn't need a type checker to work. I think Arrows should be mentioned somewhere in section 11 instead.
(SLPJ: done) Josef 14:05, 4 August 2006 (UTC) page 18. Generic Programming. I think PolyP is worth mentioning.
Section 7 Monads and IO
(SLPJ: reworded) BerniePope 08:14, 16 July 2006 (UTC) Comment. page 20. Section 7.2 Monads. It says that "Checking that the laws hold provides a reassuring sanity check when defining a new monad." Perhaps you could elaborate on exactly what we are checking, and subsequently reassured about. It says earlier that the laws show associativity and identity, but is there a more "programmer oriented" view of what this means?
(SLPJ: done)BerniePope 08:22, 16 July 2006 (UTC) Comment. page 20. Section 7.2 Monads. It says monads were helpful in structuring programs, including "the Haskell compiler itself". This sounds like there was a single Haskell compiler. Perhaps it should be "exisiting Haskell compilers"?
(SLPJ: done)BerniePope 08:22, 16 July 2006 (UTC) Comment. page 20. Section 7.2 Monads. One of the ongoing issues with monads is combining them together. Perhaps you could mention some of the attempts at doing this, such as monad transformers.
(SLPJ: done, somewhat briefly)JaredUpdike 23:16, 17 July 2006 (UTC) Comment. page 21. While reading and referring to the figures I keep getting confused by which Figure is Figure 2, Figure 3, etc. due to the heavy black lines which seem to act as separators, forcing my brain into believing that the heading applies to the code below the black line. Although I looked at the page as a whole to know which heading belongs to which figure, subconciously I am still confused by the dividing lines and automatically read the wrong heading for each section. Perhaps moving the lines, introducing a second set of lines above each section of code, or careful use of more whitespace (or complete boxes?) could alieviate or disambiguate these figures?
Section 8 Middle age
(SLPJ: reworded slightly) BerniePope 08:30, 19 July 2006 (UTC) Comment. page 24. Section 8.2.3 Summary. It says "a glance at the literature on ML modules will confirm" (regarding making things easier). Perhaps you could back this up with a sample of some references?
Section 9 Implementations
(SLPJ: done) Malcolm 10:59, 20 July 2006 (UTC) Correction. page 26. Section 9.4 - nhc. I did not collaborate with Niklas and Colin on the next-generation heap profiling tools. (Although I did implement profiling in Gofer, that was entirely separate from the next generation stuff.)
Sections 10 Profiling and debugging
BerniePope 13:04, 16 July 2006 (UTC) Comment. page 29. Section 10.3 Controlling Evaluation Order. The last paragraph suggests that we can wait until the program is written, then profile, then add seqs as necessary. While this is true, many programs are never really finished. Adding seq to code is one thing, but maintaining code with seq in it is another, perhaps more difficult problem. Also, you might be able to make a link here to the material on speculative evaluation, since that also solves some space/strictness issues.
(SLPJ: done) Robdockins 18:50, 19 July 2006 (UTC) In section 10.3 you mention that the presence of seq damages free theorems and the list deforestation in particular. You might want to mention the following paper, which deals with this issue: http://crab.rutgers.edu/~pjohann/popl04.pdf . Section 8.2 addresses list deforestation in particular.
(SLPJ: done) BerniePope 13:14, 16 July 2006 (UTC) Comment. page 29. Section 10.4 Debugging and tracing. It says that hbc and GHC provide trace. Hugs also has trace (perhaps nhc98 does as well?).
(SLPJ: done) Malcolm 11:07, 20 July 2006 (UTC) Re: trace, I can confirm that nhc98 has trace too.
(SLPJ: done) Malcolm 11:07, 20 July 2006 (UTC) Comment page 30. Section 10.4.1 Algorithmic debugging. Although Nilsson and Sparud's algorithmic debugger is no longer extant, Buddha is not the sole carrier of the flame. Sparud's later work led to Hat, which has included an algorithmic debugger (the hat-detect tool) since 2001.
BerniePope 04:59, 17 July 2006 (UTC) Comment. page 30. Section 10.4.2 Observational debugging. In the Hood library the type of observe is overloaded, like "observe :: Observeable a => String -> a -> a", which is both an interesting and useful application of type classes, and in some ways a limitation of hood, since it isn't polymorphic. I think it is important to point out the use of overloading here. Also, I think Hugs comes with a built-in polymorphic version, which of course isn't portable.
Section 11 Applications
(SLPJ: well, it's all in the monads chapter too, and I'm happy with that placement. I'm not sure what else we should say .) Josef 14:16, 4 August 2006 (UTC). page 31 section 11. I think that Monads and Arrows (M&A) deserve a special place here among your discussion about combinator libraries and DSELs. M&A are libraries for library writers, they provide support for deciding how to design a library and they implement a lot of useful code that can be shared among many libraries. Furthermore, the special syntaxes for M&A further help in creating DSELs. I think this form of libraries for libraries which M&A provide is rather unique to Haskell (although I could be wrong) and it is definitely worth a mention.
(SLPJ: done, replaced with RIFE) Hoan 12:45, 15 July 2006 (UTC) On page 33 it says that Ruby on Rails is a continuation based framework. I think thats wrong. PS. Its a riveting read.
(SLPJ: done) Malcolm 11:12, 20 July 2006 (UTC) Comment. page 34 Secion 11.2.4 Computer Music. The first mention of darcs (second para) seems to use it casually like everyone will know what it is. Perhaps a distinguished font (and a forward reference to 12.3?) might be appropriate.
(SLPJ: done)Malcolm 11:16, 20 July 2006 (UTC) Correction. page 35 Section 11.3 GUIs. The toolkit formerly known as "WxWindows" has been officially called "WxWidgets" for several years now (due to desire to avoid and trademark dispute with Microsoft).
(SLPJ: done) Josef 14:46, 4 August 2006 (UTC). Comment. page 35. Section 11.3. I find your current categorization and description of GUIs a bit misleading. As it is worded right now it misses out on the very strong connection between Fudgets and Fruit. These two libraries are extremely similar. But Fudgets ofcourse predates the invention of Arrows so it doesn't have that as a guiding principle. Maybe you should make a new bullet with Fruit and make a note about the similarities with Fudgets.
Josef 14:27, 4 August 2006 (UTC). Comment. page 35. Section 11.4 on Natural Language Processing. GF belongs in this section.
Section 12 Impact
(SLPJ: done) BerniePope 08:38, 17 July 2006 (UTC) Comment. page 37. Section 12.4 Companies using Haskell. Perhaps you could mention the Commerical users of FP workshop? Not limited to Haskell, but an important sign of a coming of age.
(SLPJ: done) BerniePope 13:29, 17 July 2006 (UTC) Comment page 39. Section 12.5 The Haskell community. Perhaps you could also mention the Haskell IRC channel [2], and some of its interesting software clients, especially lambdabot.
- dons 06:37, 19 July 2006 (UTC) Out of interest, after seeing the mailing list graphs, I've prepared some similar analysis of the #haskell irc channel. It too shows similar growth patterns since 2001, when it was created. Details here
- Simonpj 11:51, 19 July 2006 (UTC) Interesting data! I didn't know there were 2,000 users of the IRC channel. What does the time axis (labelled 1,2,3 ...) mean? 2001, 2002..? And why does the graph curve down at the end?
- dons 14:15, 19 July 2006 (UTC) The x-axis are the years 2001-2006, (each point is for the previous year), and the graph curves down at the end as 2006-7 isn't finished yet. The 'X' floating above the end of the curve is where we project forwards to the end of the year. Note that we don't ever have 2,000 users concurrently (we averge around 200 users at a time). Over a year, however, 2,000 people (or unique names -- some are duplicates) will visit the channel.
(SLPJ: done. Actually it is the same use of "kind"!) BerniePope 08:22, 17 July 2006 (UTC) Comment. page 38. Section 12.4.2 Bluespec. It says "The type system has been extended with types of numeric kind." Perhaps this could be reworded to avoid the use of "kind", which has a specific meaning in types. Unless of course it does actually mean "kind" in the specific sense. Either way it could probably be clarified.
BerniePope 08:46, 17 July 2006 (UTC) Comment (not serious). page 39. Section 12.5 The Haskell community. It says that the Haskell Cafe' is most active in winters, with an amusing footnote about Scandinavia. Don't forget that in the southern hemisphere we have winter at the opposite time of the year! There are lots of Haskellers down here too! Also, if the winter connection is true, then it doesn't bode well for the adoption of Haskell in countries like Singapore and Indonesia.
Saccade 20:57, 17 July 2006 (UTC) Comment page 39 Section 12.5 The Haskell community. Footnote 14 is a lot more important than you seem to be giving it credit for. Polyglot programmers (like me) have a strong tendency to pick up new languages with great enthusiasm, and then ditch them a few years later with equally great enthusiasm. A reasonable null hypothesis model would be that about n_0 =~ 600 people get seriously into Haskell every year, and then have a roughly k =~ 4/5 chance of ditching the language for each year thereafter, giving n_t == n_0 * k^t serious users who have been using it for t years. This comes out looking a lot like your graph. (I'm not saying it's not possible that there's an explosion of interest, but this isn't very good evidence for it.)
(SLPJ: this section concentrates on similarities with Haskell (or contrasts in a closely related area) rather than being comprehensive. So I'm not sure what to add here that'd be brief but illuminating.) BerniePope 08:59, 17 July 2006 (UTC) Comment. page 40. Section 12.6. Influence on other languages. Maybe you can mention that Clean has a powerful system of dynamic types, and also generic functions which go beyond type classes. Also, since you mention that Clean has an I/O system based on linear types, you might also like to mention that Mercury also takes a similar approach, using unique modes.
(SLPJ: done) ChristianSievers 20:12, 25 July 2006 (UTC) Page 40. Python also has layout, propably this was also inspired by Haskell.
(SLPJ: done) ChristianSievers 20:12, 25 July 2006 (UTC) Page 40. And what about Cayenne?
Other notes
(SLPJ: done) BerniePope 09:08, 17 July 2006 (UTC) Comment. page 41. Section 13. Acknowledgements. In the last paragraph you note all the people who have contributed material, but you do not mention Nikhil, who is cited on page 38 as contributing the section on BlueSpec.
(SLPJ: done) Malcolm 10:50, 20 July 2006 (UTC) Re: Rishiyur Nikhil - he is mentioned in the acknowledgements. But I agree (below) that there is some inconsistency in naming him with family name only throughout the main text.
- (SLPJ: done) BerniePope 12:15, 20 July 2006 (UTC) Rishiyur Nikhil is mentioned in the section about the Haskell committee, but he is not mentioned in the section about people who contributed to some sections, later on. Whereas Lennart and others are mentioned in both parts of the Acks.
(SLPJ: the intention is to use the first name on first occurrence. Pls do tell us where we missed that.) BerniePope 07:57, 16 July 2006 (UTC) Overall. Names of people. I've noticed that sometimes people are referred to by their whole name, whilst others are referred to by just their family name. Perhaps there is an underlying method here, but it wasn't clear to me. Perhaps it is that the first reference gets a full name, and subsequent ones are just the family name? Is that always the case?
(SLPJ: I fixed David H. (For ages I thought Lemmih was his real name!) Any others?) Malcolm 10:50, 20 July 2006 (UTC) Re: names. Just to add that the use of IRC nicknames in the text is a little disconcerting too. e.g. Lemmih (in real life: David Himmelstrup).
(SLPJ: ToDo) Abayley 07:37, 17 July 2006 (UTC) JHC gets a one-line mention - perhaps it deserves a little more? AFAICT, it was written by one person, as a student, who decided that the best way to learn Haskell was by writing a Haskell compiler. A commendable effort I think, and also a testament to the power of the language.
(SLPJ: ToDo) BerniePope 13:39, 17 July 2006 (UTC) Comment. Overall. The paper seems to be missing a conclusion at the end. Something to tie it all together. I was hoping to read a little bit about what the future of Haskell may bring - even though it would only be speculation, it would still be useful. What are the lessons learned? What would you do differently, now that you have the benefit of hindsight? Are we doomed to keep inventing programming languages? What does Haskell still need?
(SLPJ: there are lots of such papers, and we could easily cite a list, but it might look rather self-interested to do so.) AndrePang 00:45, 18 July 2006 (UTC) Comment. I'm not sure if this is appropriate for this paper, but perhaps a mention of significant papers to come out of GHC work would be good. The example I had in mind was pioneering garbage collection techniques, but there may also be other areas that are applicable. Even if it's a one or two paragraph blurb on it, it'd add to the impression that GHC is, in fact, a state-of-the-art compiler. For what it's worth, I also agree with Alistair Bayley about giving GHC more than a one-line blurb: it's an impressive piece of work with courageous goals.
(SLPJ: David doesn't want it.) JaredUpdike 00:49, 18 July 2006 (UTC) Question. Where is the standard "Miranda is a trademark of Research Ltd." disclaimer? Is it unnecessary given the fact that the history of Miranda is recounted and Turner given due credit?
(SLPJ: in progress) BerniePope 04:14, 18 July 2006 (UTC) Comment. Diagrams! I think a really useful addition to this paper would be a couple of diagrams. First, a timeline of the developments of Haskell. To help us put the whole thing in perspective. You could annotate the timeline with version numbers, interesting developments (like monads etc), major compiler/tool releases, significant events - in short all the stuff in the paper that was worth putting a date to. It would be a lot of work, but it would really help to draw the information out of the prose. Second, a kind of family tree of the languages mentioned in the paper. You see this thing from time to time on the net, but they never have all the little languages mentioned in this paper, like SASL, KRC, Orwell etc. I think that would be a useful contribution to programming language history in general. Again, a lot of work, but worth it in my opinion.
- dons 06:44, 19 July 2006 (UTC) In response to Bernie's comment above regarding timeline, we almost have one. This page, extracted from the mailing list archives 1990-2006. It could possibly be used as a basis for some of the tool releases.
- Simonpj 12:25, 20 July 2006 (UTC) A timeline diagram would be a great idea. Would anyone be interested in creating one for us, in exchange for a grateful acknowledgement in the body of the paper?
(SLPJ: quite right; done) Jmaessen 06:48, 20 July 2006 (UTC) Section 6.2: wasn't Bounded
a later addition to Haskell (sometime 'round 1.3), rather than an immediate application of type classes? Or has my memory failed me?
Jmaessen 07:49, 20 July 2006 (UTC) Section 9.1 appears to be the first mention of views as a feature of Haskell 1.0. Surely this merits mention in one of the earlier historical sections?
ChristianSievers 20:12, 25 July 2006 (UTC) I think there should be some background about the name Haskell 98. At least that it was a community decision, maybe also a list of other suggestions.
davidk01 02:08, 29 July 2006 I finally get it, monads that is, and this paper is what put me over the edge. I think seeing it in a historical way is what did it, because I saw how a type constructor class is a natural generalization of regular type class.


text:
Fish Tacos Are Just Part of Mexican Food Tale
October 1, 2009 by jim.pickell
Filed under Blog, Press
Special to The Bee
As well as surf, sand and sun, another thing you can count on when you spend much of winter at the southern reaches of the Baja peninsula is an endless supply of fish tacos.
Casting for yellowtail, dorado, sierra and other varieties that provide the meat of a fish taco, after all, long has been the principal lure of Los Cabos, the sunny fishing settlements of San Jose del Cabo and Cabo San Lucas at the tip of Baja California Sur, where the Sea of Cortez and the Pacific Ocean mesh.
I couldn't wait. On the drive from Sacramento, I began to eat fish tacos south of Coalinga and continued through San Diego, Ensenada, San Quintin, Guerrero Negro and other coastal cities recognized for their seafood.
No question, fish tacos constitute a quick and convenient meal, customarily consisting of a few pieces of battered and fried fish tucked inside a corn tortilla. The dressings generally include shredded cabbage and a mayonnaise-based sauce. Assorted optional additions are wedges of lime, slices of cucumber, pico de gallo and a wide range of hot sauces.
"There may be no experience on Earth that quite matches the pleasure of an afternoon spent wandering around the Ensenada fish market, sluicing fish tacos down with oceans of slush-cold Tecate beer and watching locals haggle over yellowtail tuna and horse mackerel," wrote Pulitzer Prize-winning restaurant critic Jonathan Gold.
I now suspect, however, that Gold was smitten more with the scene, the sunshine and the cerveza than the fish tacos.
By the time I got to Los Cabos, I not only had my fill of fish tacos, I was convinced they're the most boring item of the Mexican diet.
Just when, where and by whom the fish taco was hatched is a matter of debate in culinary circles, but I wouldn't be surprised if the inventor was an enterprising street vendor responding to touring gringos who prefer their food readily identifiable, convenient, pale, bland, fried and cheap, requisites met quite neatly by the standard fish taco.
Sure, over the ensuing months, we again ate fish tacos, especially at two landmark Baja taquerias celebrated for their fish, shrimp and scallop tacos: Taqueria Rossy and Cabo Mama Surf Tacos. Both were within walking distance of our casa in San Jose del Cabo.
But our diet branched out as we explored other aspects of Mexican cuisine, both ancient and modern.
"Don't eat the street food," warned an ex-pat American schoolteacher I ran into on a morning walk soon after we arrived. It was advice not difficult to heed when it came to neon-colored clouds of cotton candy, but easy to forget when the choice was succulent and spicy tacos al pastor – slices of marinated pork stacked on a spit, fired by a gas-fueled flame and quickly cut into thin strips that fly deftly into a palmed tortilla, often topped with a chunk of pineapple flicked from atop the cone of meat.
Mexican cuisine as frequently interpreted in California is pedestrian and heavy – tacos of oily ground beef, tamales with more masa than filling, burritos big enough to double as pontoons on a fishing boat. Granted, some California chefs appreciate that cooking in Mexico is largely regional, and frequently fresher, lighter and more varied than versions we see routinely in the United States.
But after three months in San Jose del Cabo, I wouldn't try to codify a "Baja cuisine." As Mexican regions go, Baja California Sur is too young, modern, diverse and dynamic for any one cluster of dishes to represent the state, or for even a defined style of cooking to have evolved.
Yet I sensed four currents of Mexican cooking coursing through Baja California Sur:
• Simply prepared seafood inspired by proximity to the Sea of Cortez, with its varied bounty of fish and its expansive white beaches, where local families have camped on weekends and holidays for generations. On the beach, the catch may be grilled quickly, then tossed onto a tortilla with a homemade salsa and a dash or two of hot sauce. In one of the region's artfully ambitious restaurants, the seafood is apt to be prepared and presented with more precision, such as parrotfish steamed in banana leaves, topped with a pesto of cilantro and cashews, and accompanied with a ratatouille of prickly pear.
• Despite the area's emphasis on seafood, more beef is prepared in gutsy and rustic hacienda ways than you might expect along a warm coastline. Baja, however, continues to celebrate its ranching culture, which remains alive despite the sparse forage of the desert and the encroachment of condominiums.
(Much of the state, incidentally, still is open range, something to keep in mind as you drive along the coast, your eyes diverted by multimillion-dollar "villas" rising above the beaches.)
• No matter how casual or how grand, few restaurants of Los Cabos are without at least a dish or two from other regions of Mexico, recognition that much of the area's population, whether permanent or seasonal, consists of people who have arrived in cars with license plates saying Nuevo León, Michoacán, Jalisco, Sinaloa, Sonora or some other mainland state.
• By the same token, the 18-mile stretch of Highway 1 between San Jose del Cabo and Cabo San Lucas is dotted with tony seaside resorts whose clientele is in large part international, thereby helping account for the Italian, Japanese, Chinese, French and Thai restaurants in and about the two cities.
If Mexican food frequently is knocked as "unhealthy" it isn't for its content so much as its vivid flavors, which invite overindulgence. Many of the staples of the Mexican diet are marvelously wholesome – avocados, tomatillos, tomatoes, beans, corn – and their preparation often retains their nutrients without adding too much distracting impact from butter, sugar, salt and the like.
The two supermarkets we frequented had terrific produce sections, their bins sagging with pineapples, papayas, cantaloupes and other vitamin-dense fruits. A subsection of one produce department included more than 20 fresh herbs, some familiar (minty yerba buena, earthy epazote) and some new to me (ruda, said to be favored by the Aztecs as a cure for intestinal ailments).
For every downtown cart selling ice cream, another would be dispensing fresh-sliced watermelon and mango. The most popular breakfast destination along the blue-collar street Valerio González Canseco was a café specializing in take-away jugos and licuados, its entrance crowded with sacks of oranges.
And just try to find some traditional "manteca de cerdo," or lard rendered from pork. When I asked its whereabouts at one of the supermarkets I was shown to an aisle lined with jars of "manteca vegetal comestible," or vegetable shortening. There wasn't a tablespoon of lard to be found in the place.
But as I began to prepare beans that called specifically for lard, I remembered a nearby open-air café where the specialty is carnitas, chunks of pork fried in large caldrons of oil alongside the sidewalk out front. The place does a huge business, and I got to speculating that it must have some lard it would be willing to give up.
Sure enough, the cooks at El Michoacano saw me coming, and had a kilo of old- fashioned pork fat in my hands before I completely got out my request in my halting Spanish. The plastic container was dented, its top torn, and it had to be kept in a plastic bag in the refrigerator because there was almost as much lard on the outside as inside. Like oak with wine, a little lard goes a long way, and that kilo was far more than I needed during our three-month sojourn.
No, there's much more to Baja cookery than fish tacos. As we neared the end of our stay, I returned to the most historic and alluring place to shop for food in San Jose del Cabo, the Alberto A. Alvarado Aramburo Mercado Municipal, the old-time communal market in the middle of the city.
In addition to produce stands and Tortilleria Erika, it includes Marlene Cremeria y Polleria for chicharron, chorizo, chicken and cheese, Carniceria Dos Arbolitos for carne de puerco, New York rib-eye, machaca and other cuts, Sinaloa Fish Market for cabrilla, chica, huachinango, camaron, atun and other seafood, and a food court with 10 small stalls, most of which are named for and overseen by women – Marbella, Sonia, Ely.
I walked up and down the central corridor, scanning the menu boards while debating with myself about what to order for one last late breakfast in San Jose del Cabo. Should it be caldo de camaron, bisteck con nopales, rojo pozole or blanco pozole, chilies rellenos, menudo?
Fish tacos weren't among the options, but chilaquiles was, and at a table in front of the stall Luncheria ZuLema that's what I ordered, with a verde sauce, two fried eggs and a tall tumbler of freshly made orange juice.
It was the perfect send-off. The accompanying salsas were blistering hot, the chopped cilantro fresh, the white onion sweet, the eggs precise, and the chilaquiles – basically triangles of leftover tortillas simmered in a zesty tomatillo sauce – had the elusively correct texture, slightly chewy and hauntingly toasty.
Now there's a dish of challenge and invention, just the item to keep me fueled and interested on the drive back to Sacramento.
Pescado a la Veracruzana
Prep time: 45 minutes
Cook time: 35 minutes
Serves 4
While most closely identified with the Mexican coastal city of Veracruz, this classic seafood entree can be prepared wherever meaty fish fillets can be found. We generally used cabrilla, sometimes called flag cabrilla, a member of the grouper family caught in the Sea of Cortez off San José del Cabo. Serve with a fruity albarino, pinot grigio, chenin blanc or sauvignon blanc. This recipe is adapted from "Authentic Mexican" by Rick Bayless with Deann Groen Bayless (Morrow, $30 384 pages).
Note: Prep time does not include the 1-hour marinate time for the fish.
For the fish:
1 1/2 pounds boneless, skinless meaty fish fillets like red snapper or halibut, preferably in 4 pieces, each 1/2-inch thick
Freshly squeezed lime juice and a little salt
For the sauce:
3 tablespoons vegetable oil, preferably part olive oil
1 medium onion, thinly sliced
2 pounds (4 medium-large) ripe tomatoes, roasted or boiled, peeled and cored, or three 15-ounce cans good-quality tomatoes, lightly drained
2 cloves garlic, peeled and minced
20 meaty green olives (preferably manzanillo), pitted and roughly chopped
2 tablespoons large Spanish capers
2 medium pickled chilies (jalapeños), stemmed, seeded and sliced into strips
1 tablespoon pickling juices from the chilies
1 1/2 teaspoons mixed dried herbs, such as marjoram and thyme
2 tablespoons finely chopped flat-leaf parsley, plus a few springs for garnish
3 bay leaves
1-inch cinnamon stick
2 cloves
1/2 teaspoon black peppercorns, very coarsely ground
1 cup light-flavored fish broth, bottled clam juice or water
Salt, if necessary
Rinse the fillets, lay them in a noncorrosive dish and sprinkle them with lime juice and salt. Cover and refrigerate about 1 hour.
In a large skillet, heat the oil over medium heat, add the onion and cook, stirring frequently, until golden, 7 or 8 minutes.
While the onion is cooking, cut the peeled fresh tomatoes in half crosswise and squeeze out the seeds into a strainer set over a small bowl. Cut the tomatoes into 1-inch pieces and place in a mixing bowl. Collect all the juices on the cutting board and add to the tomatoes, along with those strained from the seeds. Canned tomatoes need only be lightly drained, then cut into 1-inch pieces, collecting the juices as you go.
Add the garlic to the lightly browned onion and stir for a minute or so, then add the tomatoes and their juice. Simmer for 5 minutes to reduce some of the liquid.
Divide the olives and capers between two small bowls, and set one aside to use as garnish. To the other bowl, add the jalapeño strips, pickling juice, mixed herbs and chopped parsley. If you don't wish to have the whole bay leaves, cinnamon, cloves or cracked pepper in the finished sauce, wrap them in cheesecloth and tie with a string; otherwise, add them directly to the bowl containing the herbs.
After the tomato mixture has simmered and reduced, add the olive/caper mixture which contains the jalapeño strips, pickling juice, herbs and spices (either loose or in cheesecloth). Add the fish broth (or clam juice or water). Cover and simmer 10 minutes. Taste and add salt if necessary and remove bay leaves and cinnamon stick (if added loose) or cheesecloth-wrapped spices.
Fifteen minutes before serving, remove the fillets from the refrigerator and rinse them again. Either poach them in the sauce on top of the stove or bake in the sauce, as follows:
Stove-top method: Nestle the fish fillets in the sauce so they are well covered. Set the lid on the pan and place over a medium heat. After 4 minutes, turn the fillets over, re-cover and cook 2 or 3 minutes longer, until a fillet will flake under firm pressure.
Baking method: Preheat oven to 350 degrees. Place fillets in a single layer in a lightly greased baking dish. Spoon the sauce over them, cover with aluminum foil and bake for 8 to 10 minutes, until the fish just flakes when pressed firmly with a fork at the thickest part.
Serve the poached or baked fillets on warm dinner plates with lots of the sauce, garnished with a sprinkling of the reserved capers and olives and a sprig of parsley.
Per serving: 412 cal.; 40 g pro.; 20 g carb.; 18 g fat (2 sat., 6 monounsat., 10 polyunsat.); 54 mg chol.; 1,218 mg sod.; 4 g fiber; 9 g sugar; 41 percent calories from fat.
Fish tacos
Prep time: 30 minutes
Cook time: 30 to 45 minutes
Serves 6 to 8 (about 24 tacos)
Fine fish tacos are found at stands all about Baja California, customarily selling for less than $2 in U.S. currency. When you fish the Sea of Cortez, however, you have to do something with the seafood you don't release.
While we were in San Jose del Cabo, a brightly polka- dotted, sleek, meaty and rich member of the mackerel family, the sierra, were running strong. We released nearly all of them, but kept a couple for tacos, their oily flavor more than compensated by the spiciness and sweetness of this batter, adapted from Deborah M. Schneider's "Baja: Cooking on the Edge" (Rodale, 274 pages, $27.95). She says double-frying the fish is essential, but we found a single frying to be satisfactory.
2 cups all-purpose flour
1 1/2 teaspoons baking powder
1/2 teaspoon granulated garlic
1/4 teaspoon cayenne
1/2 teaspoon dry mustard
1/2 teaspoon dried whole Mexican oregano, rubbed to a powder
Kosher salt
1/2 teaspoon freshly ground black pepper
12 ounces (1 bottle) cold beer, plus more to thin the batter if necessary
2 pounds firm, meaty fish
Freshly squeezed lime juice
Vegetable oil, for deep frying
24 tortillas, preferably corn
To make the batter, whisk together the flour, baking powder, garlic, cayenne, mustard, oregano, 1 teaspoon salt, and pepper until well blended. Stir in the beer until there are no lumps. (Batter may be made several hours ahead and refrigerated.)
Trim the fish of all blood lines and skin. Cut into pieces the size and shape of your index finger. Sprinkle with a few drops of lime juice and a little salt. (If not using immediately, wrap and refrigerate.)
Pour oil into a deep, wide pan to a depth of 2 inches and heat over medium-high heat to 350 degrees. Use a deep-fry thermometer or test the heat by dropping a little of the batter into the oil. It should bounce to the surface almost immediately and be surrounded by little bubbles.
Pat the fish dry with paper towels. Check the thickness of the batter by dipping in one piece of the fish. The batter should be the consistency of medium-thick pancake batter, coating the fish easily but dripping very little. Add a little beer if the batter seems too thick.
Add the fish to the batter. Using tongs or chopsticks, swish each piece to make sure it is thoroughly coated, then lift it out of the batter, let it drip once, and lay the fish gently into the hot oil. Cook a few pieces at a time until they float and the batter is set but still very light in color. Pieces that stick to the bottom may need to be nudged with a spatula to release them.
Remove the fish to a rack to drain; reserve the frying oil. (The fish can be prepared ahead to this point, cooled on a rack, and refrigerated uncovered. Cool the oil and reserve.)
When you are ready to serve, reheat the oil to 350 to 360 degrees and refry the fish a few pieces at a time until crisp and golden brown.
To serve, hold a tortilla in your hand and add a few pieces of fish and the traditional accompaniments: shredded cabbage, pico de gallo, chopped white onion, cilantro, lime juice, mayonnaise-based sauce (mix together 1/2 cup mayonnaise, 1 to 2 teaspoons white vinegar, 1 1/2 tablespoons milk or water). Corn tortillas customarily are preferred for fish tacos.
Per serving based on 8 servings without accompaniments: 480 cal.; 31 g pro.; 60 g carb.; 11 g fat (2 sat., 3 monounsat., 6 polyunsat.); 36 mg chol.; 343 mg sod.; 5 g fiber; 3 g sugar; 22 percent calories from fat.
Chilaquiles verdes
Prep time: 40 minutes
Cook time: 1 hour
Serves 2 as a main dish, 4 as a side dish
Chilaquiles verdes, a popular breakfast dish in Mexico City, can be dressed up for dinner by adding a couple of cups of shredded roasted chicken.
For this dish, the tortilla chips, sauce and crema can be prepared in advance, but simmer the final assembly just before serving to retain the dish's proper texture.
This version was adapted from "Authentic Mexican" by Rick Bayless with Deann Groen Bayless (Morrow, $30, 384 pages).
Note: The prep and cook times include the time to make the salsa verde and the crèma espresa. The prep time also does not include the 16- to 28-hour set and chill time for the crèma espesa
6 medium-thick corn tortillas, preferably stale and store-bought
1/3 cup vegetable oil
1 1/2 cups tomatillo sauce (salsa verde) (recipe follows)
1/2 cup chicken broth
1/2 cup boneless, cooked chicken, cut in chunks (optional)
1 large sprig epazote (optional)
1/4 teaspoon salt
1/4 cup thick crèma espesa (recipe follows), or commercial sour cream thinned with a little milk or cream
2 tablespoons crumbled Mexican queso fresco or queso anejo, or a cheese like feta or mild Parmigiano
1 thinly sliced onion, broken into rings
Cut tortillas into fourths. If they are moist, dry them out for a few minutes in a 350-degree oven until quite leathery.
Pour the oil into a medium-sized skillet set over medium-high heat. When hot enough to make the edge of a tortilla sizzle, add half the tortilla pieces. Turn them frequently until they are lightly browned and nearly crisp, then remove and drain on paper towels. Fry and drain the remaining tortilla pieces in the same fashion. Reduce the heat to medium-low and discard any oil that remains.
Return the tortilla pieces to the skillet and add the tomatillo sauce (salsa verde), broth, optional chicken and optional epazote. Stir well to coat the tortillas. Cover the skillet and simmer until the tortillas are soft but not mushy, about 5 minutes. Season with salt.
Scoop the mixture onto a warm serving platter. Drizzle with the crèma espesa, sprinkle with cheese and decorate with onion rings. Serve immediately.
Per serving based on 4 side dish servings without optional ingredients: 319 cal.; 5 g pro.; 26 g carb.; 23 g fat (5 sat., 6 monounsat., 12 polyunsat.); 9 mg chol.; 241 mg sod.; 4 g fiber; 3 g sugar; 63 percent calories from fat.
Salsa verde (tomatillo sauce)
1 pound (11 medium) fresh tomatillos, husked and washed
3 fresh chilies serranos or 2 fresh chilies jalapeños, stemmed
5 or 6 sprigs fresh cilantro, roughly chopped
1 small onion, chopped
1 large clove garlic, peeled and roughly chopped
1 tablespoon lard or vegetable oil
1 or 2 cups poultry broth, less for a thicker salsa, more for a thinner
Salt, about 1/2 teaspoon, depending on the saltiness of the broth
Boil tomatillos and chilies in salted water to cover until tender, 10 to 15 minutes; drain.
Place the tomatillos and chilies in a blender or food processor, with the cilantro, onion and garlic. If using a blender, stir well. Process until smooth, but still retaining a little texture.
Heat lard or vegetable oil in a medium-large skillet set over medium-high. When hot enough to make a drop of the puree sizzle sharply, pour tomatillo mixture in all at once and stir constantly for 4 or 5 minutes, until darker and thicker. Add the broth, let return to a boil, reduce heat to medium and simmer until thick enough to coat a spoon, 10 to 20 minutes. Season with salt.
Crèma espesa
1 cup whipping cream
2 tablespoons buttermilk
Pour the cream into a small saucepan, set over low heat and stir just until the chill is off; do not heat above 100 degrees (lukewarm). Stir in the buttermilk and pour into a glass jar.
Set the lid on the jar (but don't tighten it) and place in a warm (80 degrees to 90 degrees) spot. Let the cream culture and set for 12 to 24 hours, until noticeably thicker (perhaps almost set like yogurt or sour cream). Stir gently, screw on the lid and refrigerate at least 4 hours to chill and complete the thickening.
Chayote with tomato and green chili
Prep time: 35 minutes
Cook time: 35 minutes
Serves 4
Can't wait for that summer zucchini to arrive? Look around the supermarket for the Mexican vegetable chayote, which isn't zucchini but is similarly flavored and textured, though it also suggests cucumber and melon, or a hybrid of all three. After seeing mounds of chayote in the markets of San Jose del Cabo, we went looking for a recipe, and found this side dish back home, at the Web site www.simplyrecipes.com (type chayote into the search field) of Sacramentan Elise Bauer.
1 pound chayotes
6 ounces roasted tomatoes (you can use canned fire roasted tomatoes, or roast whole tomatoes on stovetop or under broiler until skin begins to blacken; do not remove skin but process whole)
1 clove garlic, chopped
2 tablespoons olive oil
2 tablespoons chopped onion
1 large green Anaheim chili pepper (stem and seeds removed and discarded), chopped (wear gloves).
Pinch red chili pepper flakes
1/4 cup water
Salt to taste
1/4 cup roughly chopped cilantro
1/4 cup finely grated Monterey Jack cheese
The peel of chayotes is tough and inedible even when cooked, so peel them completely. This may take a little doing, as the folds in the chayotes can make it difficult. Cut the chayotes into 1/4-inch-wide, 2-inch-long julienned strips, with or without the core.
Purée the roasted tomatoes and the garlic in a blender, set aside.
Heat oil in a large skillet over medium heat. Add the chopped onion and green chilies. Cook on medium heat until just soft, about 3 or 4 minutes.
Add the tomato mixture and red chili flakes, and continue to cook 3 minutes more. Add the chayote, water and salt to taste. Cover and cook, stirring occasionally for 15 minutes. Add the chopped cilantro and cook for 5 minutes more. The chayote should be just tender, moist but not watery.
Sprinkle with grated cheese and serve.
Per serving: 126 cal.; 3 g pro.; 9 g carb.; 9 g fat (2 sat., 6 monounsat., 1 polyunsat.); 6 mg chol.; 191 mg sod.; 4 g fiber; 2 g sugar; 64 percent calories from fat.
Possibly Related Posts:
- Wizard of Oz – Todos Santos, Baja
- Mexico's Health Care: First-Rate, and at Bargain Prices
- Press Index
- Beware Airline Surfboard Bag Fees
- Todos Santos Ranked Top Emerging Destination in the World

subset: commoncrawl


text:
Already known as a leader in innovation, as recognized by our highly praised Capacitive Stylus, Capacitive Styra, and ClearTouch products, BoxWave is proud to continue that line of excellence with our Trignetic Capacitive Stylus.
The Trignetic Capacitive Stylus will feel smooth and solid in your hands. Its triangular design provides your fingers easy and comfortable gripping points. The compact design fits nicely into the palm of your hand.
Your thumb will rest naturally onto the rubberized pad. The durable and responsive tip will improve your touchpad accuracy. And stored underneath its thumb pad, the built in magnet grants your Trignetic adherence to metal surfaces for convenient, non-traditional storage.
Designed to be compact in size and economical in operation. The Trignetic Capacitive Stylus: An Agreement has been Made.


text:
Sereno Yellow Gold Necklace (45cm)
7.5mm yellow gold (14k 2mc) plated silver alternating oval and round link necklace with feature clasp 45cm, antitarnish
Complimentary delivery for all orders over $150. Orders under $150 will be charged a flat fee of $9.90.
Once your order has shipped, please allow 2-7 business days for delivery depending on your location. Orders requiring ring sizing take up to three (3) additional business days to complete.
If for any reason you are not 100% satisfied with your purchase, you may return it online or in-store within 30 days of delivery for an exchange or full refund. Subject to meeting the requirements of our refund policy.
A 12 month guarantee and 30 day change of mind policy applies to online purchases. Why not take advantage of our unique diamond guarantee on manufacture and quality. We're proud of our reputation for providing quality jewellery of the highest calibre. In fact, we're so confident of the quality and workmanship of our jewellery, that every item in range carries our unique Diamond Guarantee. Our guarantee ensures you have selected the finest quality and value for money, covering any manufacturing faults and is conditional upon us making free inspections every six months over the guarantee period.


text:
Jaz I, I know sometimes you just really want sprinkles, but this is getting ridiculous.
Friday, October 1, 2010
Bless His Heart
Friday, October 1, 2010
Jaz I, I know sometimes you just really want sprinkles, but this is getting ridiculous.
49 comments | Post a Comment
first comment on a popular site like this? impossible!
- October 1, 2010 at 1:39 PM
- jengersnap said...
Maybe prayer works better in sprinkled cookie cake form?
- October 1, 2010 at 1:40 PM
- Hurricane Heide said...
hehehehe...looks sort of like a tombstone with that wording. Loving the sprinkles! hahahahahahaha!!!!!
Sprinkle Fan,
Heide - October 1, 2010 at 1:45 PM
Are those really sprinkles? For a minute, I thought they were Fruity Pebbles.
- October 1, 2010 at 1:45 PM
- Lori DiBacco said...
Awesome! God bless 'em.
- October 1, 2010 at 1:48 PM
- M M said...
At first I thought this was the dreaded CCC because of how misshapen the cake was. Unfortunately I was wrong.
- October 1, 2010 at 1:49 PM
Is that a cake or a donut cake? Either way, poor Seth! God BLESS you, Seth!
- October 1, 2010 at 1:56 PM
Life changing sprinkles, unbelievable details, perfect wording....too wonderful for words
- October 1, 2010 at 2:05 PM
- October 1, 2010 at 2:08 PM
- Kate said...
Is that not a normal confirmation cake?
Mom and I have some "chatting" to do.
http://arguingwithadoughnut.blogspot.com/ - October 1, 2010 at 2:09 PM
LOL! I may need to get a cake that says that for my youngest's first communion next year. Minus the ton of sprinkles, of course.
- October 1, 2010 at 2:16 PM
- Danger Boy said...
Our Sprinkle, who art in Bakery,
Hollowed be thy sweet tooth.
Thy Cakedom come
Thy baking be done
in dining room as it is in Bakery.
Give us this day our daily cake,
and forgive us our dentist bills,
as we forgive them that wreck against us.
And lead us straight into temptation
delivering pounds upon our guts.
For thine is the sprinkle, and the frosting, and the cake, for the next 5 minutes. Dig in. - October 1, 2010 at 2:20 PM
- Trevor said...
I had to do a double take to see if those were really sprinkles covering that cake.
Do you wonder what all those sprinkles might be hiding? I mean, given the terrible job on the whole cake and all. - October 1, 2010 at 2:27 PM
I hope Seth wasn't too cross!
- October 1, 2010 at 2:29 PM
Well, first his parents never had parents of their own, so they don't know what they're doing.
Then, they get the whole family kicked out of paradise.
Next, one brother kills the other brother.
To top it all off, this cake.
Poor Seth. - October 1, 2010 at 2:32 PM
@ Danger Boy - that was funny!
cc - October 1, 2010 at 2:40 PM
- Unknown said...
- October 1, 2010 at 2:56 PM
- J. R. W. said...
Crunch, crunch, eww.
WV: grerses: "The cake just left the grerses taste in my mouth. I think it was the sprinkles." - October 1, 2010 at 2:57 PM
- WitchyMel said...
@Danger Boy - As a recovering Catholic, I just wanted to say, God frost you!
@Silrette - Perhaps if it were sprinkles instead of forbidden fruit...? Just sayin'.
WV: delmi - If dis cake 'ad less sprinkles, delmi, vud you eat it? - October 1, 2010 at 3:00 PM
- Betsy said...
As a children's pastor you have to understand sometimes you really need to make sure you have "extras" of everything to avoid the inevitable argument from the one that "didn't get the piece covered in the most sprinkles..."
Not to mention after the last baptism at our church where two of the young-uns being baptized ( ages 6-8) got into a stompping competition (on each others feet) during the prayer before "God Help Seth's parents" might be more appropriate! - October 1, 2010 at 3:03 PM
Good lord (umm.. pun unintentional). Did they press the sprinkles into the frosting by the handful? That looks so... bleh.
On top of the request for DI.
WV: sohysi "It's sohysi to fall in love..." - October 1, 2010 at 3:04 PM
Looks like a donut cake from Allie's.
- October 1, 2010 at 3:07 PM
Love this cake, though It's far too appropriate to be considered a wreck.
- October 1, 2010 at 3:19 PM
mass of sprinkles > mass of cake
- October 1, 2010 at 3:20 PM
it looks like they splattered paint onto the cake, rather than used a crate of sprinkles on it
- October 1, 2010 at 3:37 PM
I second the donut cake from Allie's (and love that another reader knows what that is!) it might be a wreck, but it's delicious:)
- October 1, 2010 at 3:44 PM
- Q said...
Maybe Seth wasn't the cake's recipient. Maybe Seth is the assistant Wreckerator who needs to start going to Sprinkleholics Annonymous...
- October 1, 2010 at 3:47 PM
- kater said...
'help' appears to be in a different font than both 'god' and 'seth'. two different wreckerators perhaps?
wv - raterg: if the sprinkles were brown, they'd look more like ratergs. - October 1, 2010 at 4:14 PM
- Double J Adventures said...
@ Danger Boy - So funny, loved it!
I think they got too excited about the sprinkles and forgot to ice the sides of the cake.
"WhoooHoooo SPRINKLES!!!!!!spinkle, spinkle, sprinkle!.......wait....I feel like I am forgetting something?" - October 1, 2010 at 4:17 PM
- Kenri said...
God Help this cake. This crooked rainbow cross cake.
- October 1, 2010 at 4:41 PM
My daughter, niece and nephews would LOVE the over-abundance of sprinkles this sugary cross has to offer.
- October 1, 2010 at 4:46 PM
- deb said...
Nothing says "Welcome to the Church" like a crooked cross smothered in sprinkles.
- October 1, 2010 at 4:49 PM
- Kate said...
DangerBoy, I want to play too. So, like a damned hell ass good Catholic? Here, say ten Hail Frostings.
Hail Frosting, full of sugar, the Cake is under thee; blessed art thou among bakers, and blessed is the fruit in they filling, strawberry rhubarb. Holy Frosting, perfect compliment, deliver our sweet tooth now and at the hour of our diabetic coma.
http://arguingwithadoughnut.blogspot.com/ - October 1, 2010 at 4:59 PM
"God, help Seth...not gag on all these sprinkles"
wv: vanatri: answers Miss Mina's wv - "no, I don' vanatri dis cake!" - October 1, 2010 at 5:13 PM
I'm thinking more along the lines of "God help Seth's parents" after he eats this sprinkle/sugar slathered cake!!
Oh, and yeah... what's with the Di references? Yeah, Di ate cake and loved it. I really did. Minus sprinkles, as those were eaten by themselves straight from the container. Never gathered on cake.
~~Di - October 1, 2010 at 5:29 PM
- D.B. Echo said...
From a distance it looks like that cake is teeming with brightly-colored maggots.
Pointing that out would probably mean more cake for me.
WVW: premb - To get a larger share of something (e.g. cake) by making a revolting comment that makes everyone else want less or none at all. - October 1, 2010 at 5:53 PM
- splendidcakes said...
This may be the best Wreck ever-of course I have been thinking all day that God had better help my teenage son (listening James?!?)
- October 1, 2010 at 6:44 PM
I teach 2nd grade (the year children make their First Communion) at a Catholic grade school. I enjoyed this post way too much!
- October 1, 2010 at 6:52 PM
- Samantha said...
OMG IS THAT AN ALLIES DONUT CAKE?!?! omg they're soooo good regardless of how this looks I get one every year
- October 1, 2010 at 6:56 PM
Yikes! Is that an intro to an intervention? Or dessert AFTER the intervention - you know, in case it didn't work???
- October 1, 2010 at 7:15 PM
Just what Seth needs a mouthful of sugary sprinkles.. God help his teachers after he eats this lol and his parents too for that matter.
- October 2, 2010 at 1:26 AM
Good one, @ Silrette. We can't be too hard on Adam and Eve, though -- all of their kids were conceived *outside* of the garden, so where would we all be if they had followed instructions?
I was thinking perhaps 'Seth' was the wreckerator's signature, and he wrote the inscription after realizing he has a sprinkles problem.
A donut cake sounds yummy. Just to be clear, we're not talking 'cake donut', but an actual raised donut in a cake-style form factor, right?
Some local baker needs to be making such a creation now. Sprinkles optional. - October 2, 2010 at 4:31 AM
- Angie said...
Oh, that poor kid! Bless him, indeed... And I think it's the wreckerator who needs the Big Guy's help.
wv - roide: Maybe the wreckerator was suffering from roides and that's why this one looks so bad? - October 2, 2010 at 9:24 AM
- ksaldria said...
Good God, it looks like someone barfed sprinkles all over the dang thing.
- October 2, 2010 at 12:38 PM
- Helen said...
That's very interesting... I'm a cake decorator myself (mostly for the fun of it)... If you want you can visit my website and see some of my work.
- October 2, 2010 at 4:06 PM
"Sprinkles?" I'd call that a full immersion....
n - October 2, 2010 at 4:40 PM
Actually, Seth is the name of the Sunday School teacher. The kid's name is Damien! :O
- October 3, 2010 at 12:19 AM
- Malweth said...
+1 on an Allie's donut cake. That's the reason I left Google Reader to check out the comments!!
If it is a donut, the sprinkles are A-OK -- it's the only way I've seen them done. - October 3, 2010 at 9:17 PM
- Alyssa said...
I've had the BEST time with this one! My brother's name is Seth, and he caused our vicar SO much stress during Catechism classes- he was nearly kicked out. I wonder if it was made for him! Ha!
- October 19, 2010 at 11:08 PM
Search This Blog
Wreck the Halls
NEW! Pre-Order Today!
Barnes & Noble
Borders |
Buy the Book
Buy the NYT Bestseller
What's a Wreck?
What's a Wreck?
A Cake Wreck is any cake that is unintentionally sad, silly, creepy, inappropriate - you name it. A Wreck is not necessarily a poorly-made cake; it's simply one I find funny, for any of a number of reasons. Anyone who has ever smeared frosting on a baked good has made a Wreck at one time or another, so I'm not here to vilify decorators: Cake Wrecks is just about finding the funny in unexpected, sugar-filled places.
Now, don't you have a photo you want to send me? ;)
- Fan Faves
- The Classics
The Classics
Praise for the Book
- "Will have you laughing so hard you'll forget to eat!"— Washington Post
- "a hilarious winner" — The Oregonian
- "a fantastically gut-busting book"— NPR
- "It's all here, each wreck a disaster of hilarity." — BookPage.com
- "Hysterically funny!"— Epinions.com
- "laugh-out-loud funny"— The Times
- "Yates' sharp humor makes the funny even funnier." — The Dallas Morning News
- "an amazing laugh-out-loud book"— The Book Triblog
What the fans are saying
- "I was laughing so hard, I couldn't catch my breath."
- "As funny as the blog that started it."
- "WAY better than I expected!"
- "Cake Wreckery at its best!"
- "Wrecktastic!"
- American Mensa:Top 50 Websites of 2010
- Amazon: Top 10 gift books of 2009
- The Orlando Sentinal "Orbbies": Winner Humor
- 2009 BlogLuxe Awards: Funniest Blog
- 2009 Bloggies: Best Writing of a Weblog, Best New Weblog, Best Food Blog
- The 2008 Weblog Awards: Best Food Blog
- Blogger's Choice 2008 Awards: Best Humor Blog
Where's the book?
We don't have any copies of Cake Wrecks for sale here, autographed or otherwise. We decided the shipping and handling costs would be too high to make it worth your while. So instead, buy your copies locally or online and then order personalized bookplates: it's cheaper, easier, and I think even looks a bit nicer.
Ordering Info
Payments must be made through Paypal, which accepts all major credit cards. Sorry, but that means no checks or MOs or barter-based chickens.
We ship everything first class USPS, and will do our best to have your package in the mail within 2 days of your order.
Popular This Month
Popular This Month
- Sunday TREATS: Happy Halloween!
- Don't Mansion It
- Frightened Out of Their Wits
- Well, That's Horrifying
- Training Day
- This Is Halloween. (No, Really.)
- Going Through a Rough Patch
- All Hallow's Wrecks
- Sunday Sweets Goes Back to the Future!
- Beautiful Wrecks
- They Call Me...Tater Salad
- A Little Late to the Meme
- Regular Wrecks
- Happy Boss'es...Boss'...Bosses...Bossy Day!
- Sunday Sweets: Farmed Out
- Wreckies of the Month
- In Soviet Russia...
- Barbie's Had It Up To HERE
- Kitty Please
- Wreck, Reuse, Recycle
- Something About Moose
- Sunday Sweets: The Fall Spirit
- What Happens in Vegas...
- No Offense
- For Your Consedration
- Down With EPP!
- Instant Manliness®!!!
- A Floridian's Fall Trip
- Sunday Sweets: An Ostentation of Peacock
- A Grave Situation
- Bless His Heart
- Friends Don't Let Friends Cross The Streams


text:
Liability Disclaimer
Pricing, Weights, Measurements and Capacities
Prices are always subject to change and can not be guaranteed so always call for up to date pricing! Weights, measurements, and capacities may vary considerably from those stated as typical for a unit. The weights that are posted on the actual unit are the ones that towing decisions should be based upon. Any information that is on the site can never be regarded as the final authority, and it is up to each customer to inspect the unit and all documents to ensure that it meets their particular needs.
Information, Images and Logos
Some images used on this site are representative of how a unit might appear and may include options or features that might not be part of the actual unit being offered for sale. The images, logos, copy and trademarks contained in this site, including but not limited to the text, images, audio or video, are believed to be in the public domain or are used by Irvines Camper Sales with permission of the respective trademark or copyright holder.
Financing and offers
Terms and conditions for any pricing, down payments, loan rates or terms are for demonstration purposes only. The actual terms that may be available to a customer will depend on many variables, including that customer's credit history and financial resources and the structure of the transaction (such as down payments and collateral). Some customers may not be eligible for financing.
The information, services, products, and materials contained in this site including, without limitation, text, graphics, and links, are provided on an "as is" basis with no warranty. To the maximum extent permitted by law, Inventrue and Irvines Camper Sales disclaim all representations and warranties, express or implied, with respect to such information, services, products, and materials, including but not limited to warranties of merchant ability, fitness for a particular purpose, title, non-infringement, freedom from computer virus, and implied warranties arising from course of dealing or course of performance. In addition, Inventrue and Irvines Camper Sales do not represent or warrant that the information is accurate, complete or current. Price and availability information is subject to change without notice. Due to the large amount of content and information provided, errors can and will occur. By visiting this web site you agreed that Inventrue and Irvines Camper Sales shall be held harmless from all liability and responsibility for any and all errors or omissions in the information provided on this site. Inventrue nor Irvines Camper Sales shall not be required or obligated to honor any price if said price is incorrect or inaccurate, regardless of who entered the information.
Limitation of Liability
In no event shall Inventrue or Irvines Camper Sales be liable for any direct, indirect, special, punitive, incidental, exemplary or consequential damages, or any damages whatsoever, even if Inventrue or Irvines Camper Sales has been previously advised of the possibility of such damages, whether in an action under contract, negligence, or any other theory, arising out of or in connection with the use, inability to use, or performance of the information, services, products, and materials available from this site. These limitations shall apply notwithstanding any failure of essential purpose of any limited remedy. Because some jurisdictions do not allow limitations on how long an implied warranty lasts, or the exclusion or limitation of liability for consequential or incidental damages, the above limitations may not apply to you.
Terms Disclaimer
Site Compliance and Privacy Policy
Our Commitment To Users With Disabilities
Inventrue and Irvines Camper Sales are committed to ensuring digital accessibility for people with disabilities. We are continually improving the user experience for everyone, and applying the relevant accessibility standards where possible.
The Web Content Accessibility Guidelines (WCAG) defines requirements for designers and developers to improve accessibility for people with disabilities. It defines three levels of conformance: Level A, Level AA, and Level AAA. We are partially conformant with WCAG 2.1 level AA. Partially conformant means that some parts of the content do not fully conform to the accessibility standard.
If you encounter accessibility barriers with this web site you can contact Inventrue by clicking here (opens a new page!) and we will make every effort to respond promptly and address your concerns.
Privacy Policy
In most cases your visits to this website won't reveal personally identifiable information about you. If you elect to provide us with personal information we will only use that information in accordance with this policy.
Examples of when we collect detailed information include an application for credit, a credit card payment, a rental reservation, or an address to ship or mail or email something to you. If you ask us to not use this information as a basis for further contact with you, we will respect your request. If we change our privacy policy, we will post those changes here.
Information From Your Computer - Our site recognizes browser, operating system and Internet Protocol addresses. We use this information to gather broad demographic data, track user movement, and to improve our site. We typically do not link IP addresses to personally identifiable information; however to protect our service, site, customers, visitors or others, we may use elect to do exactly that.
Cookies - Cookies are pieces of data we can send to your browser which may then be stored on your hard drive. Our usage of a cookie is not linked to personally identifiable information while you are on our site and when you close your browser, the cookie terminates.
Links - Our site contains links to other sites and we are not responsible for the privacy practices or the content of these sites.
Other Information Practices - We use Secure Socket Layer encryption to transfer information but there are always risks no matter how much we try to prevent intrusions. You are on a secure page when a lock icon on your web browser appears as "locked". However, you transmit information to us at your own risk as we cannot ensure the security of any information you transmit to us.
When we do receive any transmission of data from you we continue efforts to ensure its security online as well as offline. Online processes include encryption and strong password protections. Offline, we take significant steps to restrict access to your information to only those employees who need that information to perform a specific job (such as a sales, finance or customer service representative). Those employees are kept up-to-date on security and privacy practices.
Contacting Us
You may, at any time, review, edit, and/or remove any information we have stored on you by contacting us and will promptly comply with any request to review, edit, or remove the requested information.


text:
Two Pianos, Four Hands. 2 Copies needed to perform. To see other NFMC selections, click here.
Prices and availability subject to change without notice.
Also Recommended:
Customers Who Purchased This Item Also Purchased:
Concerto No. 27 in Bb, K.595 has been added to your cart
You Might Also Like:
Due to high demand, Concerto No. 27 in Bb, K.595 is on back order
Purchase Now and we will ship this item when it is available.
Our privacy policy has recently been updated. By clicking Accept or "X", you hereby accept and agree to the updated privacy policy.
Series: Schirmer Library of Classics


text:
Discuss the U.S. and other nations' constitutions here.
There have been no posts in the last 30 days in this forum. Try using the controls below to search for any older posts that may exist.
Use this control to limit the display of threads to those newer than the specified time frame.
Allows you to choose the data by which the thread list will be sorted.
Order threads in...
Note: when sorting by date, 'descending order' will show the newest results first.
Forum Rules


text:
Daniel Klein Ladies Premium Stainless Steel Strap
Feature: 3 Hands
Movement: 2035
Case: IP Gold
Case Size: 31MM
Band: IP Gold Band
Dial: White MOP Dial
Water Resistant: 3 Bar
Warranty: 1 Year International.
Confidence in every purchase
Discover incredible deals on genuine jewellery and watches at Brand Avenue. With stores in Johannesburg, Pretoria, and Cape Town, plus our online store, find peace of mind knowing all items are sourced from official distributors and come with a warranty.
Frequently Asked Questions
Every product on our website is sourced from the official South African distributors. We do not deal in parallel or grey imports and every item is 100% genuine.
Brand Avenue, as an official retailer for every brand we stock, will uphold the warranty provided with every brand. For any repairs or warranty related enquiries, please email us with your order number to email@example.com
We have a wide range of payment methods available, including 'Buy Now, Pay Later' options.
Click here to view a list of our payment methods
All items in stock will be dispatched up to 7 business days of receiving a cleared payment for the order.
Although we do our best to ensure our stock levels are always accurate, there are instances where they are unable to locate an item in the warehouse. If this happens you will be contacted by our customer service agent to choose a substitute product, or alternatively you may choose to be refunded.
We offer FREE click & collect at 15 store locations nationwide.
Simply click on the "STORE PICKUP" button in your shopping cart, and select the store you'd like to collect from together with your contact details.Please make sure to go into the VIEW CART screen before check out to select the click & collect option.
As soon as your selected store has your order ready for you to collect they will give you a call.


text:
Galaxy 6 Mode Showerhead - SG06134
You might also be interested in
Mouldcure Pink and Black Mould Removal Spray (750ml bottle) - HC0028/1-750
Product Description
Product Specification
Do you have a question regarding this product?
Call us directly 0131 538 4343 or click the button to ask us a question.
Ask a Question
Be the first to ask a question about this product.
Have you purchased this product from Shower Doctor?
Why not leave a review here and help other buyers that are looking.
Be the first to write a review about this product.
Estimated Delivery: Stocked items usually within 1-3 days, depending on selected delivery option.
Delivery Options: Various delivery options are available including "Next Day" home delivery and Click & Collect from local shops
Order by 3pm for Next Day Delivery option
If you would like to return any items please send them to:
Returns Department
The Shower Doctor Ltd
Unit 4b, Bankhead Crossway South
When arranging the return yourself, please take a note of any tracking or parcel reference numbers that are provided.
Alternatively, if you would like to use our Royal Mail tracked returns service just follow this link: http://www.royalmail.com/track-my-return/create/5092
The cost for using this service is £3.99 which will be deducted from any refund entitlement.
Please disclose the reason for returning the item along with details of your order number and or account reference.


text:
If you are searching information about Wilko Worcester - 15-21 High Street, including the most common opening hours, here at Promotheus we give you all the information you need. Check out store opening hours and locations for your favorite retailers such as Wilko. In total, there are 419 Wilko stores in the UK of which 1 are in your city of Worcester.
If you are interested in offers, deals and sales at other shops, see the weekly offers of one of another 76 retailers whose catalogues are available at Promotheus.co.uk.


text:
Do you know how to provide your pet with first aid if an emergency occurs?
Here are a few tips to help you prepare for an unexpected pet health issue:
- If your pet sustains a wound, wash it with clean running water.
- If there is a lot of bleeding, apply pressure for at least five minutes with a clean cloth, such as a flannel, a towel or even a t-shirt.
- As soon as you can, call the vet, as the wound may require stitching or further treatment – especially if the wound is large or contaminated.
- A common injury is a dog bite, and these can be much more severe than they initially look. It is important to always seek veterinary attention in these cases.
- If your pet suddenly becomes lame, carefully check the foot of the affected limb for thorns, bits of glass, grass seeds or other items that may be irritating.
- You can usually remove these items safely, but do be careful, as the animal will most likely be in pain and may behave in an unpredictable manner.
- If the lameness persists call the vet, as the injury may require further investigation and treatment. Animals limp when they are in pain, so at the very least they will need pain relief.
Road accidents
- If you come across an injured pet in the road or yours gets hit by a car, talk gently to it as you approach.
- Move slowly and avoid making sudden movements, and put a lead on if possible.
- If the animal is able to move and walk, go to the vet – even if there appears to be no pain, as there may be internal injuries.
- If the animal cannot walk and you can pick them up, place one hand at the front of the chest and the other under the hindquarters.
- Improvise a stretcher for large dogs with a coat or a blanket.
- If the animal is paralysed, find something rigid to carry them on, such as a board, and cover them with a blanket.
Burns and scalds
- Run cold water over a burn for at least five minutes and then contact the vet.
- Do not apply ointments or creams, but if you can't get to the vet right away, apply a saline-soaked dressing to the area.
Be prepared
Have the following things ready in your home so you are prepared for any incident:
- A pet first aid kit – your vet can advise on what to keep in there.
- The phone number and address of your vet – including alternative numbers for evenings and weekends.
- A pen and paper – you may wish to note down the vet's instructions.
- A clean, large blanket.
Try not to panic – an emergency situation will require you to be speedy, calm and most importantly, safe.
It is vital to remember that a sudden illness or injury will cause your pet to be potentially very frightened. In this situation, even tame pets can bite, so you must ensure your own safety. Having a muzzle will allow you to help your pet confidently.
Muzzles cause no harm to the animal and reduce the risk of harm to you.


text:
Out of stock
Favourite Country Recipes
Contact Us
Please note, all special orders must be paid for at the time of order.
Please note, payment must be made at the time of order.
£10 minimum order for delivery across all departments.
You must be 18 or older to view and purchase this item.


text:
Girl Denim Dungaree - Blue - SG2312108B
Article Code: SG2312108B
Color: Blue
Main fabric: 100% Cotton
Size Guide
7DAYZ provides returns for all item except : Sale & Promotion items and specifically stated non-returnable & non-exchange items. Product(s) sold at mark down prices cannot be returned or exchange. 7DAYZ reserves the right for final decision. 7DAYZ reserves the right to amend this policy at any time without prior notice.
Refund via Account's Store Credit at www.7dayz.com.my only.
You may exchange your item(s) size ( except sales items ) via postage and at 7DAYZ physical store, depending on item availability.
Products must be in original condition with proof of receipt.We're unable to accept your return as it had been washed.
How long does it normally takes to ship out items once payment is made?
We will process your order within 24 hours and ship your orders within 5-7 working days, except wishlist item(s).
Where can I find my tracking number?
Tracking numbers will be provided by email once shipped.
Where can I track my parcel?
▪Local orders are delivered via Skynet/Poslaju/Pgeon/EasyParcel. Orders can be tracked at HERE
▪International order are temporary close.