Full-time Position in Pure Haskell
ZALORA was founded in early 2012, offering clothes and accessories online in 7 Southeast Asian countries. It has grown steadily, reaching its millionth order in May 2013. We're now looking to double the size of our Haskell team.
The Haskell team works in parallel to our existing PHP developers. Your job will be to disassemble our legacy LAMP architecture (PHP, MySQL, Memcache, Solr) and build a Haskell-based service-oriented architecture in its place. This means working across the full stack, from system-level tools to web-based interfaces, depending on your expertise and area of interest.
Most of the team is here in Singapore. We help with relocation but allow remote work as well.
Our Development Philosophy
- Build modular and simple systems.
- Apply purely functional principles, even outside of Haskell code.
- Build properly, however long it takes (no deadlines).
- No regular hours, no dress code, no status report meetings.
- Freedom to make technical choices and influence the architecture.
- Release your code as Open Source—if you can generalize it.
We will hire almost purely based on your code quality and experience. Experience with functional programming is a must.
- Your Github profile or code samples AND/OR
- The code for the selection task below. We promise feedback within 72 hours.
Write a FastCGI or HTTP server in Haskell that provides a restful API for managing an inventory of shoes:
- GET a shoe as an HTML page listing the shoe details, where the photo is served as an <img> tag with "src" pointing to a path on the local filesystem (i.e. the photo must be accessible as a local file, not as a data URI).
- GET a list of shoes as an HTML page with hyperlinks to all available shoes.
Get information on how to apply for this position.
My somewhat elliptic title refers, of course, to the programmer; so much you may have guessed. What, in all probability, you could not have guessed, is that I have chosen to use the words "craftsman" and "scientist" in a very specific meaning: they have been chosen to characterize the results of two extreme techniques of education, and this luncheon speech will be devoted to a (be it short) discussion of their role in the education of programmers, in the teaching of programming. For the transmission of knowledge and skills both techniques have been used side by side since many centuries.
Colleagues from outside the state (still!) often wonder how I can survive in a place like Austin, Texas, automatically assuming that Texas’s solid conservatism guarantees equally solid mediocrity. My usual answer is something like “Don’t worry. The CS Department is quite an enlightened place, for instance for introductory programming we introduce our freshmen to Haskell”; they react first almost with disbelief, and then with envy —usually it turns out that their undergraduate curriculum has not recovered from the transition from Pascal to something like C++ or Java.
Zak Ziebell, then a 17-year-old San Antonio senior, challenged 30 people to sketch a map of the world, then combined them into a vague smudge. Then he produced this unnervingly realistic map of the alternative Earth lurking in his subjects' collective memories.
I'm having a problem with an application I'm working on where sClose in Network.Socket blocks inside the call to close. Unfortunately I'm using Unix domain sockets which don't support any of the timeout socket options, at least on OS X. Functions like timeout don't work since the FFI call is unsafe. Is there anything that can be done to timeout a call like this outside of killing the entire process?submitted by swift1337
[link] [4 comments]
I'm really new to haskell and I really don't understand IO. All I want to do is read in a number from the user and print out the successor of that number. Something like this:main = do putStrLn "What number do you want to find the sqrt of? : " name <- getLine print $ succ name
I've been reading and i've found one persons explanation:prompt :: (Read a) => String -> IO a prompt s = putStr s >> getLine >>= return . read triArea :: (Fractional a) => a -> a -> a triArea base height = (base * height) / 2 main :: IO () main = do base <- prompt "The base? " height <- prompt "The height? " let area = triArea base height putStrLn $ "The area of that triangle is " ++ show (area :: Float)
Which to be completely honest doesn't make any sense to me. I looked up >> and >>= on Hoogle, but I don't understand the content.
Thanks everyone, I got it to work!prompt x = do putStrLn x number <- getLine return number main = do number <- prompt " Please input a number: " print $ succ ( read number :: Int) submitted by yyttr3
[link] [18 comments]