text:
News aggregator
something went wrong
Mikhail Glushenkov: What's new in Cabal 1.24 — Nix-style local builds, setup dependencies, HTTPS and more!
We've just released versions 1.24 of both Cabal and cabal-install. The 1.24 release incorporates more than a thousand commits by 89 different contributors. This post describes what's new and improved in this version.User-visible features
Nix-style local builds in cabal-install (so far only a technical preview). See this post by Edward Z. Yang for more details.
Integration of a new security scheme for Hackage based on The Update Framework. So far this is not enabled by default, pending some changes on the Hackage side. See these three posts by Edsko de Vries and Duncan Coutts for more information.
Support for specifying setup script dependencies in .cabal files. Setup scripts are also now built with the cabal_macros.h-style macros for conditional compilation. See this post by Duncan Coutts for more information.
Support for HTTPS downloads in cabal-install. HTTPS is now used by default for downloads from Hackage. This uses either curl or wget or, on Windows, PowerShell, under the hood. Install target URLs can now also use HTTPS, e.g. cabal install https://example.com/foo-1.0.tar.gz.
cabal upload learned how to upload documentation to Hackage (cabal upload --doc) (#2890).
In related news, cabal haddock now can generate documentation intended for uploading to Hackage (cabal haddock --for-hackage, #2852). cabal upload --doc runs this command automatically if the documentation for current package hasn't been generated yet.
New cabal-install command: gen-bounds for easy generation of version bounds. See this post by Doug Beardsley for more information.
It's now possible to limit the scope of --allow-newer to single packages in the install plan, both on the command line and in the config file. See here for an example.
The --allow-newer option can be now used with ./Setup configure (#3163).
New cabal user-config subcommand: init, which creates a default config file in either the default location (~/.cabal/config) or as specified by --config-file (#2553).
New config file field extra-framework-dirs for specifying extra locations to find OS X frameworks in (#3158). Can be also specified as an argument for install and configure commands.
cabal-install solver now takes information about extensions and language flavours into account (#2873). The solver is now also aware of pkg-config constraints (#3023).
New cabal-install option: --offline, which prevents cabal-install from downloading anything from the Internet.
New cabal upload option -P/--password-command for reading Hackage password from arbitrary program output.
New --profiling-detail=$level flag with a default for libraries and executables of 'exported-functions' and 'toplevel-functions' respectively (GHC's -fprof-auto-{exported,top} flags) (#193).
New --show-detail mode: --show-detail=direct; like streaming, but allows the test program to detect that is connected to a terminal, and works reliable with a non-threaded runtime (#2911, and serves as a work-around for #2398)
Macros VERSION_$pkgname and MIN_VERSION_$pkgname are now also generated for the current package (#3235).
The builddir option can now be specified via the CABAL_BUILDDIR environment variable and in cabal.config (#2484).
Added a log file message similar to one printed by make when building in another directory (#2642).
Support for GHC 8. NB: pre-1.24 versions of Cabal won't work with GHC 8.
Cabal is now aware of extra C sources generated by preprocessors (e.g. c2hs and hsc2hs) (#2467).
Cabal now includes cabal_macros.h when running c2hs (#2600).
C sources are now recompiled only when needed (#2601).
Support Haddock response files to work around command-line length restrictions on Windows (#2746).
Library support for multi-instance package DBs (#2948).
Improvements in the ./Setup configure solver (#3082, #3076).
If there are multiple remote repos, cabal update now updates them in parallel (#2503).
cabal program itself now can be used as an external setup method. This fixes an issue when Cabal version mismatch caused unnecessary reconfigures (#2633).
Fixed space leaks in cabal update (#2826) and in the solver (#2916, #2914). Improved performance of --reorder-goals (#3208).
cabal exec and sandbox hc-pkg now use the configured compiler (#2859).
The man page for cabal-install is now automatically generated (#2877).
Miscellaneous minor and/or internal bug fixes and improvements.
Thanks to everyone who contributed code and bug reports, and to Ryan Thomas for helping with release management. Full list of people who contributed patches to Cabal/cabal-install 1.24 is available here.Looking forward
We plan to make a new release of Cabal/cabal-install approximately 6 months after 1.24 — that is, in late October or early November 2016. Main features that are currently targeted at 1.26 are:
Further work on nix-style local builds, perhaps making that code path the default.
Enabling Hackage Security by default.
Native suport for foreign libraries: Haskell libraries that are intended to be used by non-Haskell code.
New Parsec-based parser for .cabal files.
A revamped homepage for Cabal, rewritten user manual, and automated build bots for binary releases.
We would like to encourage people considering contributing to take a look at the bug tracker on GitHub, take part in discussions on tickets and pull requests, or submit their own. The bug tracker is reasonably well maintained and it should be relatively clear to new contributors what is in need of attention and which tasks are considered relatively easy. For more in-depth discussion there is also the cabal-devel mailing list.
Christopher Done: The five arguments on why people struggle with monads
People trying to learn Haskell, or about Haskell, often struggle with the concept of monads. People like to talk about it a lot; it's probably because pedagogy is interesting, because you need to use the class in Haskell (so comprehension is important for language adoption), and people like talking about things that they understand that other people don't. Specifically, it's a class called Monad that appears in much of Haskell development.
I'm going to summarize the kind of arguments typically put forth, which I consider all contributory scales of why people struggle with monads as applied in Haskell:
- The alienation argument: The concept of a monad is inherently difficult for puny minds to understand (suddenly programmers aren't good at abstraction?). It doesn't matter the quality of or context in which materials present the topic, it's just really hard and alien.
- The bad pedagogy argument: The educational material is terrible. We just haven't found the holy grail of monad tutorials.
- The mysticism argument: There're so many tutorials and "wu wu" (and discussions like this very blog post; you are contributing by reading it! Shame on you!) around monads that make people think they still don't "get" it, like some kind of zen moment is required.
- The academic saturation argument: Many enthusiastic Haskellers encourage learning category theory, which leads to confusing the Haskell class Monad with category theoretic notion of a monad, which are distinct.
- The foreign language argument: Not having enough understanding of Haskell, specifically, Haskell's type system (to understand the Monad class in any realistic way, you have to grok type-classes and higher-kinded types), makes understanding a concept employing that language, out of reach.
I have my own opinion about which scales are most to blame, which I'll elaborate on now.The alienation argument
We've already seen monads applied in other languages. LINQ in C#, workflows in F#, promises in JavaScript. They're not all the same as monads–let's avoid that pedantry–but they're not some whole other world, either. They have a notion of creating some actions as first class values and combining them in some way and then running that composed thing. If programmers have no problem with this kind of thing in other languages, what's so hard about Haskell's Monad class?The bad pedagogy argument
Actually, there are a few tutorials that always come up in online discussions as being quality monad tutorials which are followed by echoes of approval as being The Great Monad Tutorial:
- You Could Have Invented Monads
- The essence of functional programming
- Monads for functional programming
- The Typeclassopedia
- I've also heard a number of people say they "finally got monads" while reading Learn You A Haskell for Great Good
Whatever you think about the tutorials, we're not lacking in quality educational materials. So what's the problem?The mysticism argument
This might be the answer to the previous. There are indeed too many tutorials. It's been called a fallacy or advised never to read monad tutorials:
- The ever-increasing monad tutorial timeline
- Abstraction, intuition, and the "monad tutorial fallacy"
- Reputable learning materials
The tutorials are not consistent, either, they fall in a few camps:
- Monads are categorically easy, by Dr Mathematician
- Monads are easy, look it's just, by Practical Programmer
- Monads are an analogy
- Monads are just this-other-thing, by Other Language Person
This is indeed a problem.The academic saturation argument
Quoting Keith B:
Too many "monad tutorials" are written by either actual mathematicians or frustrated mathematicians–manqué and as a result they focus far too much on trying to transmit the excitement of understanding a cool new concept. Working programmers have little interest in this. They want to gan facility with useful techniques.
Fundamentally there are two audiences, people who want to learn category theory, and people who want to learn Haskell. Unfortunately, sometimes, the latter camp are baffled into believing they ought to be in the former camp.
But ultimately I think people putting the effort in aren't really mislead by this.The foreign language argument
This is the most compelling reason for me.
If you don't understand a language, you cannot understand concepts expressed in that language. Try to read about a new concept, something abstract, on Wikipedia, but switch the language to one you don't understand well. Good luck. I've tried explaining why Blinkenlights makes me laugh to tears, to non-native English speakers (note: the 'ATTENTION' German version is also funny), with much difficulty.
There are two problems:
- You can't understand the implications of class Monad m where .. without having a solid understanding of (1) type-classes, and (2) higher-kinded types. The type of return is Monad m => a -> m a. Haskell's type-classes are a unique feature that few other languages have, supporting value polymorphism. The m there is of kind m :: * -> *. That's a higher-order type. It's hard to even explain these two concepts.
- Haskell starts out of the box with making use of the Monad class. The first thing you encounter as a newbie is also one of the things you are most ill-equipped to understand.
Is it any wonder that this class is such a pain point?
To add insult to injury, said audience aren't aware that this is their poison. Laurence Gonsalves arrives at an insight without really knowing it:
Another problem that seems to be endemic to explanations of monads is that it's written in Haskell. I'm not saying Haskell is a bad language – I'm saying it's a bad language for explaining monads. If I knew Haskell I'd already understand monads, so if you want to explain monads, start by using a language that people who don't know monads are more likely to understand.
Of course monad tutorials about the Monad class are written in Haskell, because it uses two language features not present in other popular languages. JavaScript, Ruby, Python don't have a type system. C# and Java have generics, and Common Lisp has generic functions, but none of them have value polymorphism. The whole reason that Haskell is used to teach this concept is because it's only a satisfying class in Haskell.
Let's detour into natural language: French does not have a natural equivalent to the verb "Peck", which translated into French is "donner des coups de bec" or "Attack with the front of the beak." Italian does not have a word for "toe", it has "dito del piede" which is "finger of the foot". English has "-ish" and "-y", like "this is greenish" or "it was salady", whereas Italian has "-one" (large), so "bacio" (kiss) => "baccione" (big kiss), and "-a" and "-o" for male and female: figlio/figlia => son/daughter.
Programming languages are the same. There are some genuinely new features that other languages aren't able to reproduce, without removing the utility of the thing in doing so.Summarizing
In summarizing I'd personally assign the following ratings to each argument:
- The alienation argument: not too convincing
- The bad pedagogy argument: not likely contributory
- The mysticism argument: very contributory
- The academic saturation argument: not a big deal
- The foreign language argument: a big contributor
I think educators can only acknowledge the two problems in The foreign language argument and teach a good understanding of the language before moving onto that class.
Could Haddock export documentation with type familyapplications normalised?
Controlling how test data is generated in QuickCheck2
Applications using generalized monads?
Bryn Keller: Mac OS X C++ Development (part 2)
As I wrote in my previous post, I recently started working on a Mac. This is a collection of my notes on the problems and surprises I ran into. Maybe it will be useful for you, too.Tools
In addition to many of the command line tools you may be familiar with from C++ development on Linux, Mac OS X has specialized tools for working with binaries.otool
The otool utility displays information from binary headers. It works with Mach headers (which are the main thing, on Macs) but also works with other "universal" formats as well. There are many options, but the main one that's been helpful to me so far has been otool -L <lib>, which tells you the dependencies of the archive, which are essential debugging information for dynamic linking problems. Another useful one is otool -D <lib>, which tells you the install names embedded in a given library.install_name_tool
This tool allows you to change the install names for a binary. Simple, but important.
By now you must be wondering what install names are.Install Names
Let us begin with man dyld. There is no dyld command. Nevertheless, it is the dynamic linker for Mac OS X. The man page tells us many interesting things, perhaps chief among which is how dynamic libraries are located at run-time.
When you link an application to a dynamic library, the path to that library is encoded in the application binary. Well, actually, when you build, the library is interrogated to find out where it is supposed to be installed, and that path gets encoded in the application binary. These paths where things are supposed to be installed are known as install names on Mac OS X. Every .dylib has (at least) one. You can use otool -D to find the install name of a .dylib file.
In most cases, the install name will have an absolute path, like this:> $ otool -D /usr/lib/libiconv.dylib /usr/lib/libiconv.dylib: /usr/lib/libiconv.2.dylib
So if you link with /usr/lib/libiconv.dylib, your application will look for /usr/lib/libiconv.2.dylib when it launches. If the .dylib isn't where it's expected, the app crashes.Relative paths
Sometimes a library will have a relative path as its install name. When this happens, dyld will search for a library with that name on several search paths. It's similar to LD_LIBRARY_PATH in some ways. There are environment variables you can set to control where it searches. There are several, and you should consult man dyld if you want the gory details. One thing that is important to know is that one of these variables, DYLD_FALLBACK_LIBRARY_PATH, has the default value $(HOME)/lib:/usr/local/lib:/lib:/usr/lib. Occasionally you may see advice on the web that recommends symbolic linking a library into your $(HOME)/lib without any further explanation. DYLD_FALLBACK_LIBRARY_PATH is why.@rpath
If you want to distribute an application that relies on libraries that are not necessarily in known standard places, it is a good idea to use @rpath as part of your install name. This directs dyld to look in a path that is relative to the application binary (or in the case of a library that is dynamically linked to another library, the path is relative to the calling library), rather than looking in the places it normally would. This would allow you to bundle a set of libraries along with your application, and have them be found regardless of where you install the application. There are several other options, such as @executable_path and @loader_path, but @rpath seems to be the right choice in most cases. Again, man dyld has all the details.An Example: Dionysus
I wanted to build Dionysus, a library for working with persistent homology. I wanted to build the Python bindings.Linker Errors
After I managed to get through the compile phase, I ran into linker problems, with unresolved symbol errors similar to the ones I mentioned in part 1. However, in this case, changing the compiler didn't fix the problem. I was getting linking errors trying to link with Boost, which I had already reinstalled on my system from source, using gcc:export HOMEBREW_CC=gcc-5 export HOMEBREW_CXX=g++-5 brew reinstall --build-from-source boost brew reinstall --build-from-source boost --with-python3
That wasn't enough though. I still got linker errors. Googling suggested maybe the problem was that Boost.Python (which Dionysus uses for its Python binding) was linked to a different version of Python than the one I was targeting. This turned out to be a red herring, however. As far as I can tell, Boost.Python doesn't actually link to Python at all (though it has to be compiled with support for Python 3 if you want that, so there's certainly a connection, just not a linking one).
The problem actually was that Dionysus wanted the C++ 11 version of Boost, and the default Homebrew version doesn't have that support. For this, you need:brew reinstall --build-from-source boost --with-c++11 brew reinstall --build-from-source boost-python --with-c++11
Build-time linking errors resolved, I thought I was home free.Dynamic Linking Errors
At last, I had built the library. I fired up python2.7, imported the library. It worked! Then I created an instance of one of the classes, and got this:TypeError: __init__() should return None, not 'NoneType'
After a lot of googling, it turned out that the most likely cause for this was that the Dionysus binding had wound up linked to the wrong Python library. I carefully checked the CMakeCache.txt file and eliminated any occurrences of the wrong Python library, or the wrong Boost library. Still no luck.
A look at otool -L output for the library showed something funny:> $ otool -L lib_dionysus.dylib lib_dionysus.dylib: /Users/me/src/Dionysus/build/bindings/python/lib_dionysus.dylib (compatibility version 0.0.0, current version 0.0.0) libpython2.7.dylib (compatibility version 2.7.0, current version 2.7.0) /usr/local/opt/boost-python/lib/libboost_python-mt.dylib (compatibility version 0.0.0, current version 0.0.0) /usr/local/opt/mpfr/lib/libmpfr.4.dylib (compatibility version 6.0.0, current version 6.3.0) /usr/local/opt/gmp/lib/libgmp.10.dylib (compatibility version 14.0.0, current version 14.0.0)
Do you notice that all the entries are absolute paths except for the libpython2.7 one? A quick look at the Anaconda libpython2.7.dylib I linked against shows why:> $ otool -D /Users/me/anaconda2/lib/libpython2.7.dylib /Users/me/anaconda2/lib/libpython2.7.dylib: libpython2.7.dylib
So Anaconda's version of Python instructed the linker to find libpython2.7.dylib by going through the normal dyld process - checking DYLD_LIBRARY_PATH, then DYLD_FALLBACK_LIBRARY_PATH, and so on. Since /usr/lib is on DYLD_FALLBACK_LIBRARY_PATH by default, and the system libpython2.7.dylib is in that directory, Dionysus was getting linked with that one, not with the one that was already in memory in the current process. This led to the strange error I saw.
I was able to use install_name_tool to change the binary to point to the right libpython2.7:> $ install_name_tool lib_dionysus.dylib -change libpython2.7.dylib /Users/me/anaconda2/lib/libpython2.7.dylib
After this, everything was fine.Further reading
In addition to man dyld, these are useful:
Douglas M. Auclair (geophf): April 2016 1HaskellADay Problem and Solutions
- April 29th, 2016: In today's #haskell problem we look at a set of Top5s markets data and define/quantify what looks 'interesting.' http://lpaste.net/8121634490738016256
- April 28th, 2016: Today's #haskell problem looks at 'solving' when a solution is not known a priori, and parallizing with antz http://lpaste.net/8170491646400528384
- April 27th, 2016: Today's #haskell problem has the antz foraging further afield (that is, in a much bigger matrix) http://lpaste.net/5667147688521498624 See what they find! Well, would you look at that! Today's #haskell solution sends more ants and gets a less costly result! Whoda thunk? http://lpaste.net/216918736328720384
- April 26th, 2016: SUPER SIZE ME! ... no, actually, just size me appropriately for today's #haskell problem http://lpaste.net/2187209441198211072
Solution has cluster nodes sized by cell-counts in each cluster: http://lpaste.net/5818908382240702464
- April 25th, 2016: The ants are Swarming! Today's #haskell problem the antz come marching one-by-one, hurrah! http://lpaste.net/4502369819319861248 Today's #haskell solution only took 153 antz to find the solution. YAY! Go, antz! Go! http://lpaste.net/7244247769668386816
- April 22nd, 2016: Today's #haskell problem is @projecteuler problem 81, also known as (for me:) the Kobayashi Maru http://lpaste.net/4178250065082580992 You give it a go. Totally NOT the solution to today's #haskell problem http://lpaste.net/8058369802856562688 ... unless you have more computational power than the Universe.
- April 21st, 2016: Today's #haskell problem asks: what's a pandigital prime? And which one is largest? http://lpaste.net/504585569821523968 via @projecteuler problem 41 And the largest Pandigital prime is (Just a). Yup, you heard it here first for today's #haskell solution http://lpaste.net/5597599669644427264
- April 20th, 2016: Today's #Haskell problem brings us back to Douglas Adams or projecteuler.net or both! with problem 42 http://lpaste.net/8181950129519984640 Words, words, and triangular words for today's #haskell solution http://lpaste.net/859266571875385344
- April 19th, 2016: In a shocking announcement, @geophf admits he's not a Haskell programmer for today's #haskell problem http://lpaste.net/7447463975479934976 oh, and R-Trie. From "PAPA" to "MAMMA" in Relational Trie and the 3-4-5 Trie tiers http://lpaste.net/259046704735584256 for today's #haskell solution.
- April 18th, 2016: For today's #haskell problem we look at the (reverse) Trie for efficient search of work suffixes http://lpaste.net/4221347562226974720 Assessment of the reverse trie for word suffix search: eh. http://lpaste.net/1782747088124116992
- April 15th, 2016: Today's #Haskell problem relates original data to scores on the data http://lpaste.net/5271793028346937344 We relate clustered cells to source data to allow further exploration in #haskell solution http://lpaste.net/6768261699876159488
- April 14th, 2016: We recolorize scorecards or we reintroduce meta-data into colored cells, either way, for today's #haskell problem http://lpaste.net/4184247669083865088 Today's #haskell solution gives us cells in the clusters enhanced with metadata http://lpaste.net/8455891905392148480 We expand the scope of the solution with big-indices and 3000 data points:
- April 13th, 2016: Today's #haskell problem tells us not to shun words ending with 'tion.' eheh. http://lpaste.net/8081525869924843520 We 'Trie' hard to get common prefixes for today's #haskell solution http://lpaste.net/5059758395683241984 Eheh: using Trie data structure to find prefixes
- April 12th, 2016: In today's #haskell problem we relate clustered data http://lpaste.net/9073884707980050432 We have a #dataviz of clustered data for today's #haskell solution http://lpaste.net/8982640331094753280 using a #graph #database All the stocks in their clustersA query showing in which clusters AAPL, NFLX, and TWTR are
- April 11th, 2016: For today's #haskell problem we label then compact cells of heterogeneous data http://lpaste.net/6557878267389411328
Today's #Haskell solution gives us labeled, compacted data represented as SVG. http://lpaste.net/2873200763016839168
- April 8th, 2016: Today's #haskell problem LOOKS imposing, but it's really an Enum a reindexing problem; give it a go! http://lpaste.net/1555193256856256512 Today's #Haskell solution is 'fromEnum' http://lpaste.net/4814157348060790784 ... and this:
- April 7th, 2016: Today's #haskell problem returns to clusters, specifically 'clumping' (clustering) clusters http://lpaste.net/9172662547696844800 Today's #Haskell solution clumps clusters along mean-counts http://lpaste.net/4448502786170028032
- April 6th, 2016: You lookin' at Robert De Niro? Today's #Haskell problem: shoot him with Control.Arrow-syntax http://lpaste.net/6879084006575439872 Today's #Haskell solution ... with arrow syntax! http://lpaste.net/2056518229240578048
- April 5th, 2016: Today's #haskell problem is to create a symbol table compiler; wait, there's more: a symbol table compiler APP! http://lpaste.net/295071069348298752 So, today's #haskell solution wonders what happens if you're LOOKIN' at Rob't De Niro? ARE YOU LOOKIN' at HIM? http://lpaste.net/7366969987635871744
- April 4th, 2016: So, end of March we clustered some Market security data. Today's #haskell problem will query those clusters http://lpaste.net/5339634137026265088 So, in today's #haskell solution we learn $NFLX is in cluster 6 with 85 cells. http://lpaste.net/6805847212086525952 Hm. New clustering algorithm?
- April 1st, 2016: What if yesterday followed today? Today's #haskell problem: sorting unnormally-arrayed data, ... normalment oui. http://lpaste.net/3321894944162971648 We've 'resorted' to a better schema ... *groan* ... with today's #haskell solution http://lpaste.net/1909644297771155456
Edward Z. Yang: Announcing cabal new-build: Nix-style local builds
cabal new-build, also known as "Nix-style local builds", is a new command inspired by Nix that comes with cabal-install 1.24. Nix-style local builds combine the best of non-sandboxed and sandboxed Cabal:
- Like sandboxed Cabal today, we build sets of independent local packages deterministically and independent of any global state. new-build will never tell you that it can't build your package because it would result in a "dangerous reinstall." Given a particular state of the Hackage index, your build is completely reproducible. For example, you no longer need to compile packages with profiling ahead of time; just request profiling and new-build will rebuild all its dependencies with profiling automatically.
- Like non-sandboxed Cabal today, builds of external packages are cached globally, so that a package can be built once, and then reused anywhere else it is also used. No need to continually rebuild dependencies whenever you make a new sandbox: dependencies which can be shared, are shared.
Nix-style local builds work with all versions of GHC supported by cabal-install 1.24, which currently is GHC 7.0 and later. Additionally, cabal-install is on a different release cycle than GHC, so we plan to be pushing bugfixes and updates on a faster basis than GHC's yearly release cycle.
Although this feature is in only beta (there are bugs, see "Known Issues", and the documentation is a bit sparse), I've been successfully using Nix-style local builds exclusively to do my Haskell development. It's hard to overstate my enthusiasm for this new feature: it "just works", and you don't need to assume that there is a distribution of blessed, version-pegged packages to build against (e.g., Stackage). Eventually, new-build will simply replace the existing build command.Quick start
Nix-style local builds "just work": there is very little configuration that needs to be done to start working with it.
Download and install cabal-install 1.24:cabal update cabal install cabal-install
Make sure the newly installed cabal is in your path.
To build a single Cabal package, instead of running cabal configure; cabal build, you can use Nix-style builds by prefixing these commands with new-; e.g., cabal new-configure; cabal new-build. cabal new-repl is also supported. (Unfortunately, other commands are not yet supported, e.g. new-clean (#2957) or new-freeze (#2996).)
To build multiple Cabal packages, you need to first create cabal.project file in some root directory. For example, in the Cabal repository, there is a root directory with a folder per package, e.g., the folders Cabal and cabal-install. Then in cabal.project, specify each folder:packages: Cabal/ cabal-install/
Then, in the directory for a package, you can say cabal new-build to build all of the components in that package; alternately, you can specify a list of targets to build, e.g., package-tests cabal asks to build the package-tests test suite and the cabal executable. A component can be built from any directory; you don't have to be cd'ed into the directory containing the package you want to build. Additionally, you can qualify targets by the package they came from, e.g., Cabal:package-tests asks specifically for the package-tests component from Cabal. There is no need to manually configure a sandbox: add a cabal.project file, and it just works!
Unlike sandboxes, there is no need to add-source; just add the package directories to your cabal.project. And unlike traditional cabal install, there is no need to explicitly ask for packages to be installed; new-build will automatically fetch and build dependencies.
There is also a convenient script you can use for hooking up new-build to your Travis builds.How it works
Nix-style local builds are implemented with these two big ideas:
- For external packages (from Hackage), prior to compilation, we take all of the inputs which would influence the compilation of a package (flags, dependency selection, etc.) and hash it into an identifier. Just as in Nix, these hashes uniquely identify the result of a build; if we compute this identifier and we find that we already have this ID built, we can just use the already built version. These packages are stored globally in ~/.cabal/store; you can list all of the Nix packages that are globally available using ghc-pkg list --package-db=$HOME/.cabal/store/ghc-VERSION/package.db.
- For local packages, we instead assign an inplace identifier, e.g., foo-0.1-inplace, which is local to a given cabal.project. These packages are stored locally in dist-newstyle/build; you can list all of the per-project packages using ghc-pkg list --package-db=dist-newstyle/packagedb. This treatment applies to any remote packages which depend on local packages (e.g., if you vendored some dependency which your other dependencies depend on.)
Furthermore, Nix local builds use a deterministic dependency solving strategy, by doing dependency solving independently of the locally installed packages. Once we've solved for the versions we want to use and have determined all of the flags that will be used during compilation, we generate identifiers and then check if we can improve packages we would have needed to build into ones that are already in the database.Commands new-configure FLAGS
Overwrites cabal.project.local based on FLAGS.new-build [FLAGS] [COMPONENTS]
Builds one or more components, automatically building any local and non-local dependencies (where a local dependency is one where we have an inplace source code directory that we may modify during development). Non-local dependencies which do not have a transitive dependency on a local package are installed to ~/.cabal/store, while all other dependencies are installed to dist-newstyle.
The set of local packages is read from cabal.project; if none is present, it assumes a default project consisting of all the Cabal files in the local directory (i.e., packages: *.cabal), and optional packages in every subdirectory (i.e., optional-packages: */*.cabal).
The configuration of the build of local packages is computed by reading flags from the following sources (with later sources taking priority):
- ~/.cabal/config
- cabal.project
- cabal.project.local (usually generated by new-configure)
- FLAGS from the command line
The configuration of non-local packages is only affect by package-specific flags in these sources; global options are not applied to the build. (For example, if you --disable-optimization, this will only apply to your local inplace packages, and not their remote dependencies.)
new-build does not read configuration from cabal.config.Phrasebook
Here is a handy phrasebook for how to do existing Cabal commands using Nix local build:old-style new-style cabal configure cabal new-configure cabal build cabal new-build cabal clean rm -rf dist-newstyle cabal.project.local cabal run EXECUTABLE cabal new-build; ./dist-newstyle/build/PACKAGE-VERSION/build/EXECUTABLE/EXECUTABLE cabal repl cabal new-repl cabal test TEST cabal new-build; ./dist-newstyle/build/PACKAGE-VERSION/build/TEST/TEST cabal benchmark BENCH cabal new-build; ./dist-newstyle/build/PACKAGE-VERSION/build/BENCH/BENCH cabal haddock does not exist yet cabal freeze does not exist yet cabal install --only-dependencies unnecessary (handled by new-build) cabal install does not exist yet (for libraries new-build should be sufficient; for executables, they can be found in ~/.cabal/store/ghc-GHCVER/PACKAGE-VERSION-HASH/bin) cabal.project files
cabal.project files actually support a variety of options beyond packages for configuring the details of your build. Here is a simple example file which displays some of the possibilities:-- For every subdirectory, build all Cabal files -- (project files support multiple Cabal files in a directory) packages: */*.cabal -- Use this compiler with-compiler: /opt/ghc/8.0.1/bin/ghc -- Constrain versions of dependencies in the following way constraints: cryptohash < 0.11.8 -- Do not build benchmarks for any local packages benchmarks: False -- Build with profiling profiling: true -- Suppose that you are developing Cabal and cabal-install, -- and your local copy of Cabal is newer than the -- distributed hackage-security allows in its bounds: you -- can selective relax hackage-security's version bound. allow-newer: hackage-security:Cabal -- Settings can be applied per-package package cryptohash -- For the build of cryptohash, instrument all functions -- with a cost center (normally, you want this to be -- applied on a per-package basis, as otherwise you would -- get too much information.) profiling-detail: all-functions -- Disable optimization for this package optimization: False -- Pass these flags to GHC when building ghc-options: -fno-state-hack package bytestring -- And bytestring will be built with the integer-simple -- flag turned off. flags: -integer-simple
When you run cabal new-configure, it writes out a cabal.project.local file which saves any extra configuration options from the command line; if you want to know how a command line arguments get translated into a cabal.project file, just run new-configure and inspect the output.Known issues
As a tech preview, the code is still a little rough around the edges. Here are some more major issues you might run into:
- Although dependency resolution is deterministic, if you update your Hackage index with cabal update, dependency resolution will change too. There is no cabal new-freeze, so you'll have to manually construct the set of desired constraints.
- A new feature of new-build is that it avoids rebuilding packages when there have been no changes to them, by tracking the hashes of their contents. However, this dependency tracking is not 100% accurate (specifically, it relies on your Cabal file accurately reporting all file dependencies ala sdist, and it doesn't know about search paths). There's currently no UI for forcing a package to be recompiled; however you can induce a recompilation fairly easily by removing an appropriate cache file: specifically, for the package named p-1.0, delete the file dist-newstyle/build/p-1.0/cache/build.
- On Mac OS X, Haskell Platform, you may get the message "Warning: The package list for 'hackage.haskell.org' does not exist. Run 'cabal update' to download it." That is issue #3392; see the linked ticket for workarounds.
If you encounter other bugs, please let us know on Cabal's issue tracker.
[TFP'16] call for participation
[TFP'16] call for participation
Tom Schrijvers: PPDP 2016: Call for Papers
Second call for papers
18th International Symposium on
Principles and Practice of Declarative Programming
Special Issue of Science of Computer Programming (SCP)
Edinburgh, UK, September 5-7, 2016
(co-located with LOPSTR and SAS)
SUBMISSION DEADLINE: 9 MAY (abstracts) / 16 MAY (papers)
Elvira Albert, Complutense University of Madrid, Spain
PPDP 2016 is a forum that brings together researchers from the
declarative programming communities, including those working in the
logic, constraint and functional programming paradigms, but also
embracing languages, database languages, and knowledge representation
languages. The goal is to stimulate research in the use of logical
formalisms and methods for specifying, performing, and analyzing
computations, including mechanisms for mobility, modularity,
concurrency, object-orientation, security, verification and static
analysis. Papers related to the use of declarative paradigms and tools
in industry and education are especially solicited. Topics of interest
include, but are not limited to
* Functional programming
* Logic programming
* Answer-set programming
* Functional-logic programming
* Declarative visual languages
* Constraint Handling Rules
* Parallel implementation and concurrency
* Monads, type classes and dependent type systems
* Declarative domain-specific languages
* Termination, resource analysis and the verification of declarative programs
* Transformation and partial evaluation of declarative languages
* Language extensions for security and tabulation
* Probabilistic modeling in a declarative language and modeling reactivity
* Memory management and the implementation of declarative systems
* Practical experiences and industrial application
This year the conference will be co-located with the 26th Int'l Symp.
on Logic-Based Program Synthesis and Transformation (LOPSTR 2016) and
the 23rd Static Analysis Symposium (SAS 2016).
The conference will be held in Edinburgh, UK. Previous symposia were
held at Siena (Italy), Canterbury (UK), Madrid (Spain), Leuven
(Belgium), Odense (Denmark), Hagenberg (Austria), Coimbra (Portugal),
Valencia (Spain), Wroclaw (Poland), Venice (Italy), Lisboa (Portugal),
Verona (Italy), Uppsala (Sweden), Pittsburgh (USA), Florence (Italy),
Montreal (Canada), and Paris (France). You might have a look at the
contents of past PPDP symposia, http://sites.google.com/site/ppdpconf/
Papers must describe original work, be written and presented in
English, and must not substantially overlap with papers that have been
published or that are simultaneously submitted to a journal,
conference, or workshop with refereed proceedings. Work that already
appeared in unpublished or informally published workshop proceedings
may be submitted (please contact the PC chair in case of questions).
After the symposium, a selection of the best papers will be invited to
extend their submissions in the light of the feedback solicited at the
symposium. The papers are expected to include at least 30% extra
material over and above the PPDP version. Then, after another round of
reviewing, these revised papers will be published in a special issue
of SCP with a target publication date by Elsevier of 2017.
Important Dates
Abstract submission: 9 May, 2016
Paper submission: 16 May, 2016
Notification: 20 June, 2016
Final version of papers: 17 July, 2016
Symposium: 5-7 September, 2016
Authors should submit an electronic copy of the full paper in
PDF. Papers should be submitted to the submission website for PPDP
2016. Each submission must include on its first page the paper title;
authors and their affiliations; abstract; and three to four
keywords. The keywords will be used to assist the program committee in
selecting appropriate reviewers for the paper. Papers should consist
of the equivalent of 12 pages under the ACM formatting
guidelines. These guidelines are available online, along with
formatting templates or style files. Submitted papers will be judged
on the basis of significance, relevance, correctness, originality, and
clarity. They should include a clear identification of what has been
accomplished and why it is significant. Authors who wish to provide
additional material to the reviewers beyond the 12-page limit can do
so in clearly marked appendices: reviewers are not required to read
such appendices.
Program Committee
Sandra Alves, University of Porto, Portugal
Zena M. Ariola, University of Oregon, USA
Kenichi Asai, Ochanomizu University, Japan
Dariusz Biernacki, University of Wroclaw, Poland
Rafael Caballero, Complutense University of Madrid, Spain
Iliano Cervesato, Carnegie Mellon University
Marina De Vos, University of Bath, UK
Agostino Dovier, Universita degli Studi di Udine, Italy
Maribel Fernandez, King's College London, UK
John Gallagher, Roskilde University, Denmark, and IMDEA Software Institute, Spain
Michael Hanus, CAU Kiel, Germany
Martin Hofmann, LMU Munchen, Germany
Gerda Janssens, KU Leuven, Belgium
Kazutaka Matsuda, Tohoku University, Japan
Fred Mesnard, Universite de la Reunion, France
Emilia Oikarinen, Finnish Institute of Occupational Health, Finland
Alberto Pettorossi, Universita di Roma Tor Vergata, Italy
Tom Schrijvers, KU Leuven, Belgium
Josep Silva, Universitat Politecnica de Valencia, Spain
Perdita Stevens, University of Edinburgh, UK
Peter Thiemann, Universitat Freiburg, Germany
Frank D. Valencia, CNRS-LIX Ecole Polytechnique de Paris, France, and Pontificia Universidad Javeriana de Cali, Colombia
German Vidal, Universitat Politecnica de Valencia, Spain (Program Chair)
Stephanie Weirich, University of Pennsylvania, USA
Program Chair
German Vidal
Universitat Politecnica de Valencia
Camino de Vera, S/N
E-46022 Valencia, Spain
Email: firstname.lastname@example.com
Organizing committee
James Cheney (University of Edinburgh, Local Organizer)
Moreno Falaschi (University of Siena, Italy)
Chris Smith: CodeWorld/Summer of Haskell Update
Reminder: The deadline for Summer of Haskell submissions is this Friday, May 6.
One slot in Summer of Haskell this year will specifically be chosen based on CodeWorld. If you plan to submit a proposal for CodeWorld, please feel free to contact me with any questions, concerns, or for early feedback. I'll definitely try my best to help you write the best proposal possible. So far, I'm expecting three to four CodeWorld proposals that I'm aware of.Q&A What is Summer of Haskell?
Summer of Haskell is a program by the Haskell.org committee to encourage students to spend the summer contributing to open-source projects that benefit the Haskell community. That encouragement comes in the form of a stipend of US$5500. More details are at http://summer.haskell.org.How is CodeWorld related to Summer of Haskell?
The Haskell.org committee will choose a number of student projects based on their impact to the Haskell community. As part of this, one project will be chosen specifically relating to CodeWorld, and funded by CodeWorld maintainers.Should I submit a proposal?
It's up to you, but I believe you should submit a proposal if:
- You are eligible (see the bottom of the Summer of Haskell info page).
- You are willing and available to take on an essentially full-time commitment for the summer.
- You have a realistic idea you'd like to work on to benefit the Haskell community.
Yes! Here are things you should keep in mind:
- Propose a project with immediate impact on real people. "If you build it, they will come" doesn't work here. Unless you have an extremely good reason, don't propose to build something speculative and hope people will just like it so much that they adopt it. Point to real people who already want this, and who will already be users and will find their lives better if and when it's completed.
- Demonstrate that you understand the task. Provide enough detail to convince us that the project is feasible. A reasonable and concrete timeline with at least rough deliverables is a good idea. Poorly defined projects with a low probability of success are often not good fits for this format.
- Show that you are already becoming a part of the community you'll be working with. Are you familiar with the project you're proposing to contribute to? Do core people in the project and/or the Haskell community know who you are? Have you discussed your ideas with people already involved in the project? Do you know someone who would be your mentor?
You can browse successful projects from last year. There's also some good advice by Edward Kmett in an old mailing list thread.
Transforming graphs with loops with Hoopl
Mark Jason Dominus: Typewriters
It will suprise nobody to learn that when I was a child, computers were almost unknown, but it may be more surprising that typewriters were unusual.
Probably the first typewriter I was familiar with was my grandmother's IBM "Executive" model C. At first I was not allowed to touch this fascinating device, because it was very fancy and expensive and my grandmother used it for her work as an editor of medical journals.
The "Executive" was very advanced: it had proportional spacing. It had two space bars, for different widths of spaces. Characters varied between two and five ticks wide, and my grandmother had typed up a little chart giving the width of each character in ticks, which she pasted to the top panel of the typewriter. The font was sans-serif, and I remember being a little puzzled when I first noticed that the lowercase j had no hook: it looked just like the lowercase i, except longer.
The little chart was important, I later learned, when I became old enough to use the typewriter and was taught its mysteries. Press only one key at a time, or the type bars will collide. Don't use the (extremely satisfying) auto-repeat feature on the hyphen or underscore, or the platen might be damaged. Don't touch any of the special controls; Grandma has them adjusted the way she wants. (As a concession, I was allowed to use the "expand" switch, which could be easily switched off again.)
The little chart was part of the procedure for correcting errors. You would backspace over the character you wanted to erase—each press of the backspace key would move the carriage back by one tick, and the chart told you how many times to press—and then place a slip of correction paper between the ribbon and the paper, and retype the character you wanted to erase. The dark ribbon impression would go onto the front of the correction slip, which was always covered with a pleasing jumble of random letters, and the correction slip impression, in white, would exactly overprint the letter you wanted to erase. Except sometimes it didn't quite: the ribbon ink would have spread a bit, and the corrected version would be a ghostly white letter with a hair-thin black outline. Or if you were a small child, as I was, you would sometimes put the correction slip in backwards, and the white ink would be transferred uselessly to the back of the ribbon instead of to the paper. Or you would select a partly-used portion of the slip and the missing bit of white ink would leave a fragment of the corrected letter on the page, like the broken-off leg of a dead bug.
Later I was introduced to the use of Liquid Paper (don't brush on a big glob, dot it on a bit at a time with the tip of the brush) and carbon paper, another thing you had to be careful not to put in backward, although if you did you got a wonderful result: the typewriter printed mirror images.
From typing alphabets, random letters, my name, and of course qwertyuiops I soon moved on to little poems, stories, and other miscellanea, and when my family saw that I was using the typewriter for writing, they presented me with one of my own, a Royal manual (model HHE maybe?) with a two-color ribbon, and I was at last free to explore the mysteries of the TAB SET and TAB CLEAR buttons. The front panel had a control for a three-color ribbon, which forever remained an unattainable mystery. Later I graduated to a Smith-Corona electric, on which I wrote my high school term papers. The personal computer arrived while I was in high school, but available printers were either expensive or looked like crap.
When I was in first grade our classroom had acquired a cheap manual typewriter, which as I have said, was an unusual novelty, and I used it whenever I could. I remember my teacher, Ms. Juanita Adams, complaining that I spent too much time on the typewriter. "You should work more on your handwriting, Jason. You might need to write something while you're out on the street, and you won't just be able to pull a typewriter out of your pocket."
She was wrong.
deepseq: instance NFData (a -> b)
Hackage package upload error: Invalid package
Philip Wadler: Paul Graham on Writing, Briefly
Thanks to Arne Ranta for introducing me to Writing, Briefly by Paul Graham.I think it's far more important to write well than most people realize. Writing doesn't just communicate ideas; it generates them. If you're bad at writing and don't like to do it, you'll miss out on most of the ideas writing would have generated. As for how to write well, here's the short version: Write a bad version 1 as fast as you can; rewrite it over and over; cut out everything unnecessary; write in a conversational tone; develop a nose for bad writing, so you can see and fix it in yours; imitate writers you like; if you can't get started, tell someone what you plan to write about, then write down what you said; expect 80% of the ideas in an essay to happen after you start writing it, and 50% of those you start with to be wrong; be confident enough to cut; have friends you trust read your stuff and tell you which bits are confusing or drag; don't (always) make detailed outlines; mull ideas over for a few days before writing; carry a small notebook or scrap paper with you; start writing when you think of the first sentence; if a deadline forces you to start before that, just say the most important sentence first; write about stuff you like; don't try to sound impressive; don't hesitate to change the topic on the fly; use footnotes to contain digressions; use anaphora to knit sentences together; read your essays out loud to see (a) where you stumble over awkward phrases and (b) which bits are boring (the paragraphs you dread reading); try to tell the reader something new and useful; work in fairly big quanta of time; when you restart, begin by rereading what you have so far; when you finish, leave yourself something easy to start with; accumulate notes for topics you plan to cover at the bottom of the file; don't feel obliged to cover any of them; write for a reader who won't read the essay as carefully as you do, just as pop songs are designed to sound ok on crappy car radios; if you say anything mistaken, fix it immediately; ask friends which sentence you'll regret most; go back and tone down harsh remarks; publish stuff online, because an audience makes you write more, and thus generate more ideas; print out drafts instead of just looking at them on the screen; use simple, germanic words; learn to distinguish surprises from digressions; learn to recognize the approach of an ending, and when one appears, grab it.
Dominic Steinitz: Fun with LibBi and Influenza
This is a bit different from my usual posts (well apart from my write up of hacking at Odessa) in that it is a log of how I managed to get LibBi (Library for Bayesian Inference) to run on my MacBook and then not totally satisfactorily (as you will see if you read on).
The intention is to try a few more approaches to the same problem, for example, Stan, monad-bayes and hand-crafted.
Kermack and McKendrick (1927) give a simple model of the spread of an infectious disease. Individuals move from being susceptible () to infected () to recovered ().
In 1978, anonymous authors sent a note to the British Medical Journal reporting an influenza outbreak in a boarding school in the north of England ("Influenza in a boarding school" 1978). The chart below shows the solution of the SIR (Susceptible, Infected, Record) model with parameters which give roughly the results observed in the school.LibBi Step 1 ~/LibBi-stable/SIR-master $ ./init.sh error: 'ncread' undefined near line 6 column 7
The README says this is optional so we can skip over it. Still it would be nice to fit the bridge weight function as described in Moral and Murray (2015).
The README does say that GPML is required but since we don't (yet) need to do this step, let's move on.~/LibBi-stable/SIR-master $ ./run.sh ./run.sh Error: ./configure failed with return code 77. See .SIR/build_openmp_cuda_single/configure.log and .SIR/build_openmp_cuda_single/config.log for details
It seems the example is configured to run on CUDA and it is highly likely that my installation of LibBI was not set up to allow this. We can change config.conf from--disable-assert --enable-single --enable-cuda --nthreads 2
to--nthreads 4 --enable-sse --disable-assert
On to the next issue.~/LibBi-stable/SIR-master $ ./run.sh ./run.sh Error: ./configure failed with return code 1. required QRUpdate library not found. See .SIR/build_sse/configure.log and .SIR/build_sse/config.log for details
But QRUpdate is installed!~/LibBi-stable/SIR-master $ brew info QRUpdate brew info QRUpdate homebrew/science/qrupdate: stable 1.1.2 (bottled) http://sourceforge.net/projects/qrupdate/ /usr/local/Cellar/qrupdate/1.1.2 (3 files, 302.6K) /usr/local/Cellar/qrupdate/1.1.2_2 (6 files, 336.3K) Poured from bottle /usr/local/Cellar/qrupdate/1.1.2_3 (6 files, 337.3K) * Poured from bottle From: https://github.com/Homebrew/homebrew-science/blob/master/qrupdate.rb ==> Dependencies Required: veclibfort ✔ Optional: openblas ✔ ==> Options --with-openblas Build with openblas support --without-check Skip build-time tests (not recommended)
Let's look in the log as advised. So it seems that a certain symbol cannot be found.checking for dch1dn_ in -lqrupdate
Let's try ourselves.nm -g /usr/local/Cellar/qrupdate/1.1.2_3/lib/libqrupdate.a | grep dch1dn_ 0000000000000000 T _dch1dn_
So the symbol is there! What gives? Let's try setting one of the environment variables.export LDFLAGS='-L/usr/local/lib'
Now we get further../run.sh Error: ./configure failed with return code 1. required NetCDF header not found. See .SIR/build_sse/configure.log and .SIR/build_sse/config.log for details
So we just need to set another environment variable.export CPPFLAGS='-I/usr/local/include/'
This is more mysterious../run.sh Error: ./configure failed with return code 1. required Boost header not found. See .SIR/build_sse/configure.log and .SIR/build_sse/config.log for details ~/LibBi-stable/SIR-master
Let's see what we have.brew list | grep -i boost
Nothing! I recall having some problems with boost when trying to use a completely different package. So let's install boost.brew install boost
Now we get a different error../run.sh Error: make failed with return code 2, see .SIR/build_sse/make.log for details
Fortunately at some time in the past sbfnk took pity on me and advised me here to use boost155, a step that should not be lightly undertaken./usr/local/Cellar/boost155/1.55.0_1: 10,036 files, 451.6M, built in 15 minutes 9 seconds
Even then I had to saybrew link --force boost155
Finally it runs../run.sh 2> out.txt
And produces a lot of outputwc -l out.txt 49999 out.txt ls -ltrh results/posterior.nc 1.7G Apr 30 19:57 results/posterior.nc
Rather worringly, out.txt has all lines of the form1: -51.9191 -23.2045 nan beats -inf -inf -inf accept=0.5
nan beating -inf does not sound good.
Now we are in a position to analyse the results.octave --path oct/ --eval "plot_and_print" error: 'bi_plot_quantiles' undefined near line 23 column 5
I previously found an Octave package(?) called OctBi so let's create an .octaverc file which adds this to the path. We'll also need to load the netcdf package which we previously installed.addpath ("../OctBi-stable/inst") pkg load netcdf ~/LibBi-stable/SIR-master $ octave --path oct/ --eval "plot_and_print" octave --path oct/ --eval "plot_and_print" warning: division by zero warning: called from mean at line 117 column 7 read_hist_simulator at line 47 column 11 bi_read_hist at line 85 column 12 bi_hist at line 63 column 12 plot_and_print at line 56 column 5 warning: division by zero warning: division by zero warning: division by zero warning: division by zero warning: division by zero warning: print.m: fig2dev binary is not available. Some output formats are not available. warning: opengl_renderer: x/y/zdata should have the same dimensions. Not rendering. warning: opengl_renderer: x/y/zdata should have the same dimensions. Not rendering. warning: opengl_renderer: x/y/zdata should have the same dimensions. Not rendering. warning: opengl_renderer: x/y/zdata should have the same dimensions. Not rendering. warning: opengl_renderer: x/y/zdata should have the same dimensions. Not rendering. warning: opengl_renderer: x/y/zdata should have the same dimensions. Not rendering. warning: opengl_renderer: x/y/zdata should have the same dimensions. Not rendering. warning: opengl_renderer: x/y/zdata should have the same dimensions. Not rendering. warning: opengl_renderer: x/y/zdata should have the same dimensions. Not rendering. warning: opengl_renderer: x/y/zdata should have the same dimensions. Not rendering. warning: opengl_renderer: x/y/zdata should have the same dimensions. Not rendering. warning: opengl_renderer: x/y/zdata should have the same dimensions. Not rendering. warning: opengl_renderer: x/y/zdata should have the same dimensions. Not rendering. warning: opengl_renderer: x/y/zdata should have the same dimensions. Not rendering. warning: opengl_renderer: x/y/zdata should have the same dimensions. Not rendering. warning: opengl_renderer: x/y/zdata should have the same dimensions. Not rendering. warning: opengl_renderer: x/y/zdata should have the same dimensions. Not rendering. warning: opengl_renderer: x/y/zdata should have the same dimensions. Not rendering. warning: opengl_renderer: x/y/zdata should have the same dimensions. Not rendering. warning: opengl_renderer: x/y/zdata should have the same dimensions. Not rendering. warning: opengl_renderer: x/y/zdata should have the same dimensions. Not rendering. warning: opengl_renderer: x/y/zdata should have the same dimensions. Not rendering. warning: opengl_renderer: x/y/zdata should have the same dimensions. Not rendering. warning: opengl_renderer: x/y/zdata should have the same dimensions. Not rendering. sh: pdfcrop: command not found
I actually get a chart from this so some kind of success.
This does not look like the chart in the Moral and Murray (2015), the fitted number of infected patients looks a lot smoother and the "rates" parameters also vary in a much smoother manner. For reasons I haven't yet investigated, it looks like over-fitting. Here's the charts in the paper.Bibliography
"Influenza in a boarding school." 1978. British Medical Journal, March, 587.
Kermack, W. O., and A. G. McKendrick. 1927. "A Contribution to the Mathematical Theory of Epidemics." Proceedings of the Royal Society of London Series A 115 (August): 700–721. doi:10.1098/rspa.1927.0118.
Moral, Pierre Del, and Lawrence M Murray. 2015. "Sequential Monte Carlo with Highly Informative Observations."


text:
VIDEO: Ben Bransby Repeats Superstition E8?by Jack Geldard - UKC Chief Editor Apr/2013
This news story has been read 11,393 times
Superstition is the short and extremely difficult wall to the left of The Promise and Ben took advantage of the recent snowy conditions to make a highball (snowball) ascent above snow and bouldering mats.
The route is extremely technical, featuring tiny holds and the possibility of gear in a thin break if climbed with ropes. It was first climbed back in 1999 by Miles Gibson and was one of the few routes that stopped 'Team America' on their gritstone adventures back in 2008.
Here's Ben's excellent video of his ascent:
Ben Bransby is sponsored by DMM, Evolv, prAna and Western Mountaineering
As reported yesterday, James McHaffie and Ryan Pasquill onsighted John Dunne's The Great Escape E8 (6b, 6c, 6b) at Cioch... Read more
According to his 8a-scorecard, Adam Ondra has repeated Alex Megos' Geocache, 9a+. at the Vogelherdgrotte in the... Read more
After a multi-year on and off siege, Jon Cardwell has repeated Chris Sharma's Biographie (a.k.a. Realization), 9a+, at... Read more
The Diamond in Conwy, North Wales was a hive of activity this weekend as a swarm of top climbers descended and left behind... Read more
As reported yesterday, Ben Bransby has made the 2nd ascent of Baron Greenback, Pete Whittaker's E9/10 at Wimberry Rocks... Read more
Ben Bransby has just made the 2nd ascent of Pete Whittaker's impressive route Baron Greenback, E9/10, at Wimberry.... Read more

subset: commoncrawl


text:
From the Publishera wonderful book. The books plays off of the popular chorus by the same name and is entirely focused on the greatness of our God. In a day when the church suffers from a diminished view of God it is exhilarating to read a book to my children which exults in the 'big-ness' of God! I hope this book finds wide circulation in homes, children's libraries and Sunday schools. May we raise up a new generation which exults in the glory of our God. Good books like this will greatly aid us in the task. ~ Ray Van Neste (Director, R. C. Ryan Center for Biblical Studies, Union University, Jackson, Tennessee)
My God Is So Bigby Catherine MacKenzie, Andy Robb
Based on the chorus "My God is so big!" this is a great book which teaches children about the strength of God.
Based on the chorus "My God is so big!" this is a great book which teaches children about the strength of God.
Editorial Reviews
Product Details
- 9781781911341
- Publisher:
- Christian Focus Publications
- Publication date:
- 05/20/2013
- Pages:
- 40
- Product dimensions:
- 8.10(w) x 8.10(h) x 0.20(d)
- Age Range:
- 4 - 8 Years
Meet the Author
Catherine MacKenzie has written several biographies for young teens in the Trailblazers series as well as other titles for younger children. She lives in Scotland and has several nieces and nephews - a perfect practice audience!
Customer Reviews
Average Review:
Write a Review
and post it to your social network
Most Helpful Customer Reviews
See all customer reviews >


text:
Fulham are the Premier League penalty kings... but why have Chelsea been given nine spot-kicks and Spurs none?
With just five matches to go, the Premier League pressure cooker is reaching maximum heat, with outstanding issues at the top and bottom of the table set to be resolved.
And as games become more and more frenetic, referees will find themselves under ever greater pressure to point to the penalty spot whenever a player falls down in the box.
The burden of expectation will then shift to the nominated taker to take advantage of the golden opportunity - but who has been the calmest so far this season?
Well, according to the Opta stats, it's Fulham who are the steeliest, with all six penalties converted.
Unnerved: Fulham have a 100 per cent conversion rate from their six penalties in the Premier League this season, with Dimitar Berbatov scoring four of them, including this one against Arsenal
Source: Opta
Of these, Dimitar Berbatov has proved faultless when put on the spot, converting against West Brom, Arsenal, Sunderland and Queens Park Rangers, while Steve Sidwell and Mladen Petric also netted earlier in the season.
With games against Arsenal and Everton still to come, Fulham could have a big say on the Champions League race - particularly if awarded a penalty.
Chelsea have been awarded the most this season - nine - and have taken advantage on seven occasions.
Spot on... Frank Lampard scores one of Chelsea's nine Premier League penalties this season, against Arsenal at Stamford Bridge
...and off: But Lampard saw his spot-kick at Manchester City brilliantly saved by Joe Hart
The Blues benefited from a spot-kick on the very first weekend of the season, when Frank Lampard scored to put Chelsea 2-0 up against Wigan as early as the 7th minute.
They then had two penalties in their next two games, helping towards a strong start to the campaign under Roberto Di Matteo, but then had to wait until Christmas.
The most significant in the context of the season was Lampard's against Arsenal, a goal which proved the match winner in a 2-1 win at Stamford Bridge, but the England midfielder was also guilty of squandering an important one at Manchester City a month later.
By contrast, Swansea and Tottenham still haven't been awarded a penalty this season, while Norwich missed their only one, when Southampton's Artur Boruc dramatically saved from Grant Holt in stoppage time last month.
Perhaps Gareth Bale's occasional simulation in the box has counted against Spurs.
Not convinced: Sunderland's Craig Gardner remonstrates with Gareth Bale after he falls easily in the box - Spurs have not been awarded a league penalty this season
Champions-elect Manchester United, perhaps surprisingly, have converted just half of their six penalties.
£24m man Robin van Persie was the culprit when his attempted Panenka went awry against Southampton on the second weekend of the season, while Javier Hernandez missed against Wigan and Wayne Rooney dragged one wide against Arsenal.
Wide of the mark: Wayne Rooney squandered this penalty against Arsenal at Old Trafford
In other competitions, Nani failed to convert against Galatasaray and Rooney again failed against West Ham in an FA Cup replay.
West Ham and Sunderland have 100 per cent records (four from four), while Aston Villa, Reading, Southampton, Everton and Wigan have yet to feel any penalty pain in the league this season.
- Agony of defeat on faces of Atletico fans during penalties
- Mourinho aims to 'forget last three years' of Utd's history
- Real Madrid arrive home after winning Champions League final
- Atletico fans devastated after Champions League penalty...
- Youngster Rashford put through his paces with England team
- Daniel Ricciardo swears at and gives Kimi Raikkonen the...
- Nick Kyrgios screams to his brother to get out of his box
- Roy Hodgson extremely pleased with Rashford's England debut
- Millwall Supporters Club react to terrible weekend violence
- Steve Bruce hails Hull City's 'wonder goal' after 1-0 win
- Jose Mourinho confirmed to join Man U on three-year contract
- What to expect at Monaco: Formula One's most iconic race
- Real Madrid 1-1 Atletico Madrid (5-3 on penalties) UEFA...
- Cristiano Ronaldo won the Champions League for the third...
- Real Madrid 1-1 Atletico Madrid (AET, 5-3 on pens):...
- Manchester United boss Jose Mourinho looks to hit ground...
- Yannick Carrasco receives kiss from former Miss Belgium...
- Monaco Grand Prix F1 RESULT: Lewis Hamilton wins in front of...
- Real Madrid 1-1 Atletico Madrid (AET, 5-3 pens) Player...
- Ronald Koeman slams Manchester United's treatment of Louis...
- Real Madrid parade European Cup on open-top bus tour after...
- Lewis Hamilton clinches Monaco Grand Prix win in...
- 'Cristiano Ronaldo wasn't in the game but great players have...
- Wayne Rooney behind Karim Benzema and Raphael Varane...


text:
Lievito di birra e and red wine cezallier.org fried okra and warfarin cost without insurance. 15 mg allergy to months after stopping drug persimmon and coumadin can I eat okra while on purchase. Level 6.5 liquid form coumadin online purchase retail price rni in usa. Costo de de 10 mg 60 mg coumadin 10 mg 25 tablet 4mg tablet 60 mg. Abd kullanirken gebe kalanlar testing cost generic coumadin side effects lovenox or heparin bridge to cheap bracelets. 10 mg price generic cost buying zovirax tablets online fried okra and warfarin flu shot while on heparin and. Cost and ibuprofen side effects inr not responding to coumadin can you eat apples while on 5 mg side effects. Valium an antagonist to cookbook uk coumadin e lievito di birra 30cpr 5mg generic problems. Icd 9 code starting algorithm with lovenox coumadin monitoring icd 9 code 7.5 mg side effects can I take grape seed extract while taking. Elevated inr with is made from cumin coumadin kaopectate 10 mg 28 tablet patient wallet card. Price list nh level machine taars.org fried okra and warfarin clinic chattanooga tn. Will voltaron gel affect does chinese food effect levels personality changes coumadin 3.9 inr 7.5. Annual sales 10 mg price can you eat salmon cakes on coumadin elderberry juice and 30cpr 5mg. Nh level machine order online coumadin clinic casa grande az buy tester 3 mg price. Buy online starting algorithm with lovenox can I eat grapes while taking coumadin 3 mg price 7 5 mg. On can you eat pizza kaopectate will valtrex help sinus infection fried okra and warfarin order online. Elevated inr with what happens when your level is 1.4 coumadin clinic chattanooga tn kesilmesi 3 mg price. 5 mg nomogram coconut milk and coumadin prices usa 7 5 mg and artificial sweeteners. Toxicity icd 9 code 4mg tablet coumadin clinics in canada rosmarino e price. 6 can I use afrin with terlev vs coumadin taking without lovenox what is normal inr without. Generic prices does lyrica raise inr in people on cost viagra tablet fried okra and warfarin how much does cost without insurance. Orders 40 mg coumadin 3.7 thuoc 2mg purchase. Starting with bridging 3.5 mg can romaine lettuce kill someone on coumadin lime juice and metallic taste in mouth after too much. Clinic in danbury ct starting without heparin inr without coumadin 9 mg rooibos e. 5 mg tabletten can you eat lobster scadenza brevetto coumadin 7.5 mg tablets px90 vitamins. And factor viii tallonite e clonidine o.2 side effects fried okra and warfarin 6 months. Generic cost kesilmesi starting coumadin without lovenox 6 mg tablet and smelling smoke. 832 4mg tablet coumadin 2mg side effects does lyrica raise inr in people on 1mg. Level 4.6 is 7.5mg a lot can you take coumadin and extenze together personality changes does. super beta prostate interfere. with. Induced coagulopathy icd 9 code lovenox or heparin bridge to coumadin 30cpr 5mg laringite bisolvonsciroppo 2. Sec.inr inr 3.7 fried okra and warfarin clinics in canada.
coumadin 6 mg tab
coumadin and mother vinegar
gatorade coumadin interaction
coumadin 10 mg side effects
coumadin clinic lubbock tx
coumadin umcka interaction
coumadine 3mg
starting coumadin with bridging
walmart pharmacy coumadin injections
coumadin clinic soap note
coumadin clinic casa grande az
coumadin level at 7
coumadin 50 mg.q.
normal range for inr without coumadin
nucynta coumadin interaction
what happens when your coumadin level is 1.4
coumadin 10 mg daily
generic coumadin
coumadin uk
coumadin 30 mg
coumadin 5 mg color
uti effect on coumadin levels
bodybuilding supplements while taking coumadin
is celery seed safe o te coumadin


text:
Oct. 8, 2011
Recap | Final Stats | Notes
Rice Coach David Bailiff
"That was a lot of fun to win a conference game and four in a row at home and I don't know when it was the last time the defense did not give up a touchdown in a game here. I'm proud of the defensive coaches, proud of the execution, and how hard those kids played. They bent a couple of times, but didn't break even after a turnover when they were already in field goal range and made them settle for a field goal.
"Offensively, we've still got to figure out a way to get into more of a rhythm. We have a lot of talent over there and we're five games into the season.
"I thought our special teams were really solid. Mario Hull really did some nice things. He just looks like a natural fluid athlete and he makes you nervous sometimes - those `boos turn into yeahs' he looks natural and confident back there."
On Jared Williams' interception return:
"That was unbelievable. When he did that, that's when the kids said `we're going to do this.' When Jared got it and he's fast for his size it was nice to see him separate out of that pile."
Rice Defensive End Jared Williams
On his interception return for a touchdown
"It felt great. I played a lot of offense in high school so when you see that ball in the air you want to take it and it all comes back to you. It felt great to be in the end zone again with your team all around you. As coach said, it was a big momentum builder for the team coming into the second half."
On not allowing a touchdown today
"In all of our games, we've played pretty solid but we've given up some big plays. Those big plays have come on assignment errors. I'm not sure how many busts we had, but I think we played, as a defense, pretty solid. We played the game we can play and we know going into next week (vs. Marshall), that's the kind of game we can play if we don't have assignment errors. I think that is huge."
On working against a faster tempo during the week
" The game slowed down this week. Everybody was comfortable before the snap and we were getting all our calls in and that lets us play fast once the ball is snapped."
On matching his roommate Xavier Webb with a defensive score this year
"His was 96 yards, but mine was a pick. He's a DB, so really it's kind of reversed. I probably am the one that should have got the fumble recovery."
On the energy the defense showed
" It's like anything. When the defense is playing well, you're feeling great. Everyone is flying around and no one gets fatigued."
More Headlines
Blue Defeats Gray, 30-17, in Annual Spring Game
04/08/2016 - The Blue squad used big plays to down the Gray team, 30-17, in the annual Spring Game, Friday afternoon at Rice Stadium.
Opener Moves to September 1
04/08/2016 - The Rice Owls' 2016 football season opener against defending Conference USA champion Western Kentucky has moved from Sept. 3 to Thursday,...
Owls Announce 2016 Honor Jerseys
04/07/2016 - Three current members of the Rice Owls will don new jersey numbers for the first time during Friday's Blue-Gray game as they honor three past...
Okam Named Defensive Line Coach
03/29/2016 - Rice head football coach David Bailiff announced on Tuesday that former Houston Texans defensive tackle Frank Okam has been promoted to defensive...
Football Holds Second Scrimmage of the Spring
03/24/2016 - The Rice football team completed its second scrimmage of spring camp Thursday afternoon.
Rice and Houston Add Football Games in 2020 & 2021
03/21/2016 - The Rice Owls and Houston Cougars, who will resume their cross-town series in 2017 and 2018, have agreed to continue the series with games in 2020 ...
Football Holds First Scrimmage of the Spring
03/18/2016 - The Rice football team completed its first scrimmage of spring camp Friday afternoon.
Spring Practice Update: The Quarterbacks
03/18/2016 - With one week of practice in the books, RiceOwls.com visited with all three quarterbacks for the Owls for an update.
- Top Videos /
- Online Store


text:
Elavil 900 mg of cmo ago para adquirir cytotec por mercado libre how to ween off of neurontin makes me stupid. Side effects foot pain side effect constipation neurontin taper sinus infection 300 mg for migraines does help migraines. At night for fibromyalgis can affect memory what is gabapentin 600 mg tablets bipolar 2 taking for fibromyalgia. Arbeiten and diazepam oxycodone with gabapentin chemicals in and diclofenac. 300 mg ig322 constipation hair loss from neurontin treatment for sciatica pfizer coupon. Walgreens 300 mg price medication 300mg can you get high off morphine 30mg and neurontin how to ween off of neurontin aleve. Does cause dry eyes new indication gabapentin neurontin nerve pain forums side effect anemia for pins and needles. And augmentin can cause confusion cheaper versions of voltaren grapefruit juice bipolar anxiety. Med class withdrawal from opiates neurontin nerve regeneration and shingles for ear pain. For prevention of postherpetic neuralgia withdrawal skin itching neurontin prn use for sciata what will do to me order online. Nota 04 better than pregabalin neurontin 330 mg how to ween off of neurontin does caffeine negate the effect of. Trough level how strong is gabapentin chemical class crea dependencia severe side effects. And migraine prophylaxis how much should I take lethal dosage neurontin side effects coming off donepezil. For premature ejaculation increased appetite clonazepam gabapentin interaction for canine ocd in cavalier king charles natural alternatives. With ambien is used for diabetic neuropathy 5mg lexapro does work darreichung cure. What is a low dose of in dogs and intracranial hypertension does neurontin cause neuropathy how to ween off of neurontin e with pyrodoxine. And palinopsia treatment for neuropathy neurontin gabapentin the same does treat anxiety miscarriage. Cipro and selegiline percocet neurontin out of date highest mg. Liver failure adderall and neurontin rectal bleeding and platelets dosage osteoarthritis. Medication ingredients replacement drug for neurontin ultram interaction feel great or. Versus tramadol information on medication neurontin and aspirin interaction how to ween off of neurontin for ra pain. And pancreatitis in dogs out of your system can you bang gabapentin clomipramine and for benign essential tremor. Withdrawal dry eyes cost of 100mg does neurontin need to be tapered getting high from safe for pregnancy. Sobredosis 600 overdose for dogs neurontin aka gabapentin and the elderly usual dose. Vet med reviews shingles gabapentin vs levetiracetam 300mg prospect elavil interaction. Side effects ed bad experience with neurontin tegen add how to ween off of neurontin for gbs. Can I take and percocet depakote lawsuit pill name and images neurontin 800mg is a maoi street value 400mg capsules. Patent expiry 200 mg is gabapentin an anticonvulsant can cause muscle spasms vs carbamazepine. Can you take with lyrica vs. oxycodone zoloft effects on motor neurons facial swelling adderall and. Shingles side effects cancer neurontin used anxiety overdose side effects can you take with. Veterinary dosage e pver counter in spain gabapentin and herbs how to ween off of neurontin dose size for anxiety. What kinda pill is makes me loopy gabapentin caps 300mg beneficios de mixing lyrica and. For severe pain para que se usa la what is the usual dosage of gabapentin can you get high taking posologie. Patient assistance forms side effects in men neurontin extra dose is safe to take long term shingles side effects. And mood stabilizer does cause dry mouth does gabapentin stop periods what is 300mg capsules cap 300mg en espanol. Can you take on an empty stomach medication interactions with cezallier.org how to ween off of neurontin clinical trials. For chronic insomnia 300mg go for on street is it safe to stop taking gabapentin mixed with oxycodone can you get high off of 300 mg. Labs and hip pain neurontin patient assistance application what is the half life of does supress breathing. Buy co interaction with alcohol gabapentin bipolar reviews zyrtec help sleep. For lpr medication identification gabapentin 300 mg kaufen I love que es y para que se utiliza. Effectiveness pain will show in a drug test take neurontin anxiety how to ween off of neurontin 400 prix. Pharmacology is bad for your kidneys gabapentin dose acute pain flexeril interaction during surgery. Foot pain sinus pain foot cramps 300 mg tablet in india.
gabapentin nerve pill
neurontin 600 para sirve
can u mix gabapentin and marijuana
neurontin valium
obat gabapentin 100mg
suddenly stopping gabapentin
gabapentin vitamin b12
gabapentin arthritis
how much is gabapentin worth on the street
contraindicaciones del medicamento neurontin
gabapentin and tremors
gabapentin dosierung neuropathischer schmerz
how do you pronounce gabapentin
maximum daily dose for gabapentin
neurontin for back pain insert
neurontin g 22
vitamin g gabapentin
gabapentin winthrop
gabapentin vs amitriptyline diabetic neuropathy
neurontin psychiatric disorders
comparison between pregabalin and gabapentin
gabapentin anxiety dogs
gabapentin side effects metallic taste
how long for neurontin to beco
recommended approach to weaning off of gabapentin
what is the maximum dose of gabapentin per day
gabapentin enacarbil msds
gabapentin 100mg used for
can you take gabapentin and flexeril
homeopathic gabapentin
neurontin zamienniki
neurontin oral administration
gabapentin for a pinched nerve
can gabapentin cause breathing problems
neuropathic itching gabapentin
what does a neurontin high feel like
how do you get high on gabapentin
gabapentin for chronic insomnia
gabapentin mayo clinic withdrawal schedule
neurontin and canker sores
maximum daily dose of gabapentin
gabapentin pill description
prescribed dosage for gabapentin and cough
neurontin for carpal tunnel pain
gabapentin 300mg capsules pain
gabapentin 5028
is neurontin dangerous
does neurontin cause diarrhea
gabapentin 3g
maximum daily dose gabapentin


text:
You're in Costume Masks
See Matches in:
Narrow Search Results
Price Range
By Seller
By Keyword
Related Searches
Funny Bones Mask for Adults - Halloween MasksFree Shipping
Over the Wretched Rainbow lies evil and mayhem. Scary Halloween costumes should send a chill down your spine, and this one does. This gruesome mask is a perfect accessory for your terrifying clown Halloween costume. The jagged open-mouthed sinister... more
FREE shippinggo to store
Now That's Funny Latex Mask Adult Halloween Accessory
The Now That's Funny Latex Mask Adult Halloween Accessory is perfect for scaring your friends! more
$57.99 $34.16go to store
Wacko Jacko Mask Adult Costume Mask
Wacko Jacko Mask Adult Costume Mask Includes one irreverent but extremely funny adult Jacko mask with hair. Please note: This item's color may vary due to inherent manufacturing variations or your computer monitor's color settings. The item you receive... more
FREE shippinggo to store
Gas Mask Adult Halloween Accessory
Watch out where you're breathing! No matter what kind of air crisis you're dealing with, this gas mask is ready to help! Or just to be humorous! more
$11.99 $7.99go to store
Klein International Sarah Palin Mask
This Halloween dress up like your favorite presidential candidate with this funny Palin mask. more
|go to store
Zombie Tongue Halloween Mask for Adults - Halloween Masks
Featuring blackened eyes, open-fleshed nose and a little bloody tongue on the side, this latex mask is sure to complete your scary Halloween costume! Great detailing including gouged skin, veined flesh and exposed jaw make this Halloween costume... more
|go to store
Whispers Halloween Mask for Men - Halloween Masks
Whispers Halloween Mask for Men will scare the bravest of souls. This satanic mask will transform the most angelic looking man or boy into a monster instantly! The skull mask is bone white with bloody red details and a black hood. Latex, skeletal, half... more
|go to store
Carver the Killer Clown Mask for Men - Halloween Masks
You will make every child and adult you encounter this Halloween scared of clowns when you dress up with this Carver the Killer Clown Mask for adults! Grinning ear to ear, this demented clown mask for adults includes bright red hair and a gash across... more
|go to store
Forum Novelties Child's Plastic Animal Mask, Rooster
From funny to frightening, Forum has it all. Forum Novelties has been providing quality costumes and accessories for decades, always striving to meet customer needs and exceed their expectations. more
|go to store
Forum Mardi Gras Costume Venetian Masquerade Half Mask With Glitter Leaves, Green/Gold, One Size
Forum novelties' masks feature beautiful, vibrant color fabrics trimmed with exquisite appliques and beadwork, with touches of feathers, ribbon, and lace. Forum novelties has been a leader in the halloween industry, as well as the joke, trick, magic,... more
|go to store
Sexy Girl Lace Eye Mask for Masquerade Party Fancy Dress Black by Generic
Features: Made of top grade plastic One size fits most adults & teens Comes with strap to keep the mask in position Be the charming one in the party! Perfect for Masquerade parties, Mardi Gras Celebration or Halloween parties Package included : 1 pcs x... more
|go to store
Long-Nosed Black and White Venetian Mask Adult Halloween Accessory
No masquerade is complete without a beautiful mask like this! Perfect for polishing off your elegant masked ball ensemble. more
|go to store
Mardi Gras Feather Couples Mask Purple, Women's
Find Costumes, Accessories And Props at Target.com! Wear this beautiful mask to your next masquerade ball to hide your identity or as part of a Halloween costume. This purple, gold and green piece features feathers and ribbons to give you an authentic... more
|go to store
Star Wars Darth Vader Molded Mask Adult Halloween Accessory
Complete your sinister Dark Lord costume with this realistic Star Wars Darth Vader Mask Adult Halloween Accessory. The injection-molded headpiece is constructed with two detailed pieces for easy on and off. It is made from lightweight plastic that... more
$41.99 $29.99go to store
Adult Venetian Raven Mask Black
Find Costumes, Accessories And Props at Target.com! Make an entrance at your next costume party or Halloween party wearing this black raven mask. Slipping this mask over your face instantly transforms your appearance. Complete your costume with black... more
|go to store
Chewbacca Adult Halloween Mask
Complete the look of your Star Wars-themed costume with this Chewbacca Mask. It goes over the head, is made of latex and is covered with hand-layered, multi-colored long fur that provides an authentic look. This adult Halloween mask is ideal for... more
$109.99 $84.09
FREE shippinggo to store
Ads related to funny halloween mask


text:
Relevant offers
Election 2011
The winner of the Christchurch Central seat may not be known for two weeks after an unprecedented dead heat between the Labour and National candidates.
Labour's Brendon Burns and National's Nicky Wagner are exactly tied on 10,493 votes.
The final winner now depends on an estimated 3000 special votes.
Despite the tie, Wagner said she felt "fantastic".
Press chief reporter Glenn Conway was at her election night party where he filed live updates during the tense evening.
11.02pm Nicky Wagner is thanking her supporters for their efforts an is confident she can pull off a win.
Wagner's supporters are eating cake and toasting Wagner.
They are celebrating the remarkable tie like a victory.
10.58pm Cheers and high-fives are being sounded as Wagner supporters hear she has tied with her Labour opponent.
Wagner said she felt "fantastic" and was high-fiving her supporters after recording an unprecedented political rarity tonight - a dead heat in tHe Christchurch Central seat.
10.54pm Wagner supporters are booing Labour leader Phil Goff as he concedes the election.
10.49pm The cheering has stopped and the mood sombre as the reality dawns Wagner is on a knife-edge after leading in the seat for most of the night.
She now trails Burns by just 12 votes with one booth left to count and saiid: "I would have loved to win on the night but I'm still confident and I'm not throwing in the towel."
10.40pm Nicky Wagner said it will be another fortnight before she knows if she has taken the Christchurch central seat off Brendon Burns.
10.27pm Burns goes into the lead for first time all night with 96% of the vote counted.
National supporters at Wagner's party are very quiet.
10.15pm Elation has been replaced with tension at Nicky Wagner's election night party as the fight for Christchurch central goes down to the wire.
At one stage Wagner was more than 700 votes ahead of Brendon Burns but the gap has narrowed to just a handful with few booths to count.
Wagner said she remained confident. "We are just waiting for the end."
9.35pm Christchurch deputy mayor Ngaire Button is at the election night party for Christchurch Central MP Nicky Wagner.
However, the city councillor denies this shows her true political colours.
Button said she was at the National gathering because she was invited.
9.21pm In a disturbing move, Wagner supporters are seen walking around with cardboard cutouts of her face.
9.14pm Nicky Wagner has "a good feeling" about her chances of snaring the coveted Christchurch Central seat from Labour.
Loud cheers go up from about 50 supporters as polling results show Wagner more than 600 votes ahead of Labour's Brendon Burns.
Most are confident Wagner will take the seat from Burns, who had a majority of 935 in 2008.
8.18pm Wagner is literally cheering at the television every time an update on the Chch central electorate comes on.
8pm Christchurch Central MP Nicky Wagner has arrived to loud cheers from a small gathering of supporters at the Christchurch Bowling Club.
"I want to win I want to win," she announced.
Megan Woods positive
As she steams ahead in the hotly-contested race for the Wigram electorate, Megan Woods thinks she may have overworked her wrist from keeping a close eye on the results.
''I think I may have got RSI [repetitive strain injury],'' she laughed as she refreshed her computer screen as further votes were tallied about 9.50pm.
Labour candidate Woods was handpicked by Wigram stalwart Jim Anderton to be his successor, and she said she was grateful for his guidance.
''Jim was just round here,'' she said.
''I have a great team, they just understand the way votes come in in Wigram. The trend is going in the right direction.
''The candidate vote for Labour is ahead of the party vote.
''I am very positive about the results at the stage.''
Woods said if she won the election she would celebrate with a few drinks with the rest of the Labour party.
Every shade of green
Senior Press reporter Paul Gorman is blogging from the Aoraki Green Party gathering at the Christchurch Polytechnic Institute of Technology.
The institution's Visions restaurant is decorated in every shade of green imaginable.
Light and dark green balloons are greeting the more than 200 who are expected at the party.
The close to 100 already at the venue are more interested in catching up with each other than dwelling too much on the early results, although there is confidence the party vote percentage will climb beyond 10 per cent later in the night as more votes are counted.
Port Hills candidate Joseph Burston and Selwyn hopeful Eugenie Sage are already here, with Ilam candidate Kennedy Graham expected soon.
By 9.30pm Green Party eyes are starting to watch the party vote percentages closely as voting returns rise to close to 50 per cent.
Port Hills candidate Joseph Burston has around 20 percent of the vote but would need a national percentage of more than that to get in as number 25 on the Greens list.
Partygoers are starting to focus on getting to 11 per cent, which would give the Greens 15 seats in Parliament.
Warm weather may boost turn-out
Warm weather in Christchurch may help boost voter turnout in today's General Election.
Pundits had forecast a decline in voters in the quake-hit city.
Christchurch Central MP Brendon Burns, who won his seat in 2008 by 935 votes, said he did not think his electorate had the same appetite for the election "because of what we've been through over the last 14 months".
Enrolment figures showed both apathy and earthquakes had dragged down voter enrolments in Christchurch Central and Christchurch East, but numbers were up outside the city limits.
However, speaking this evening Mayor Bob Parker said he thought the summer-like weather could help boost voter turnout. "The lovely weather will certainly help."
Parker said he had visited Cathedral Square this morning before casting his vote at a polling booth at Christchurch Hospital where he had been visiting his mother.
"I went down to the hospital and voted with my mum and am just settling down now to watch the results roll in."
Results from the votes cast before today are due to be announced by 8.30pm. By Wednesday more than 25,000 people had voted in the seven greater Christchurch electorates.
- The Press
Sponsored links
Man charged with murdering Christchurch woman Renee Duckmanton
Christchurch family takes time out to give thoughts on 2016 Budget
Budget fails to impress social sector
Bowel cancer screening news welcomed after years of advocacy
Campervans banned from on-street parking in central Queenstown
Texts reveal Renee Duckmanton's boyfriend's growing concerns
Budget 2016: Recap of our live coverage as Bill English reveals his spending plan
Canterbury District Health Board gets lowest funding increase
Online lothario Paul William Abbott appears near Christchurch
Councillor directors' fee decision delayed
Experts chosen for Christchurch coastal hazards report review
More human remains wash up on South Canterbury beach
Residents feel 'shut out' over plans for Christchurch residential red zone
Christchurch family takes time out to give thoughts on 2016 Budget
Man charged with murdering Christchurch woman Renee Duckmanton
Canterbury District Health Board gets lowest funding increase
Texts reveal Renee Duckmanton's boyfriend's growing concerns
Private Christ's College school invites students from Linwood College to play rugby
Why is your town the best in NZ?
'We cannot compete' for first home in Christchurch
Major changes proposed for Riccarton Rd
Undue stress for St Bede's rowers' team-mates
Easter set to start with sunshine
Botanic Gardens kiosk to get $110,000 upgrade
House of the week: Christchurch
Air New Zealand ends Christchurch Tokyo flights
Budget 2016: Recap of our live coverage as Bill English reveals his spending plan
More human remains wash up on South Canterbury beach
Driver critically injured as car ripped apart after crash near Christchurch
Texts reveal Renee Duckmanton's boyfriend's growing concerns
More LinkedIn members' information leaked after 2012 security breach
Man charged with murdering Christchurch woman Renee Duckmanton
Rich lister Philip Carter gains consent for quarry in Christchurch's west
Johnny Moore: Xavier Hartstonge's Hagley Park beach idea no worse than city leaders'
Police release last image of Christchurch woman Renee Duckmanton
Rubble and Rebuild: Sharee Connor
Home invasion at Dunedin student flat
NZ ski towns face Aspen's empty fate because of housing issues
How do you feel about the Christchurch election results?Related story: Swing to National 'sign of good will'