Hacker News new | comments | show | ask | jobs | submit login
Show HN: Simple Race Registration (Haskell, PostgreSQL, JS) (racemetric.com)
15 points by LukeHoersten on Jan 4, 2014 | hide | past | web | favorite | 19 comments

I'm currently thinking about dipping my toes in Haskell web development, but am having a hard time deciding which web framework to use. Could you describe why you chose Snap over the other options?

Great question.

1) Snap is super simple. It's not overdone with metaprogramming etc so it's easy to understand and debug, but it's not so simple that you have to reinvent the wheel all the time.

2) Heist, the templating engine, is super simple and powerful. It subscribes to the idea that control flow should be in Haskell and HTML/XML in the template. It's proven to scale EXTREMELY well.

3) Performance. Snap server has really performed well in production for me. Low memory and CPU usage, fast, etc. Right now I'm just running on a micro EC2 and it's not breaking a sweat under the HN load.

4) Digestive functors is a GODSEND for handling forms. It really looks like Haskell's the perfect language for form processing when you use it compared to other frameworks. It also has features like dynamic lists w/ automatic JS which many other frameworks don't support.

5) Snap is the perfect blend of simple + featureful (framework + libraries). It easily competes with microframeworks in simplicity and the heavy weight frameworks when you need the functionality.

There's a great SO post with more detail from the authors of both Snap and Yesod: http://stackoverflow.com/questions/5645168/comparing-haskell... Jump on IRC Freenode #snapframework for discussion. The community is great and really open to all frameworks and language discussion.

Yesod is more popular, faster, has more users, plugins, etc., but is indeed more like Rails than Snap. If you're looking at the simplistic end of the scale, i.e. similar to Sinatra, take a look at Scotty.

Cool site. I'm learning Haskell so it's good to see it used as a webserver. What was that experience like?

Also, could you use a different background color for the image behind "Athletic Race Management"? It was light grey, so before the blurred image loaded on my phone it was very hard to read.

Edit: you should definitely enable pinch to zoom on mobile. My dad couldn't read your site without his glasses, so the zoom would have been crucial.

Is it free for free races, or just the $1 fee/person?

Using Snap (http://snapframework.com/) has been great. It's extremely quick to develop because 1) Monads are an extremely natural way to sequence request handling 2) Heist is awesome for templating 3) I used other frameworks like Django in the past and Snap/Heist really just fits my tastes well. I'd suggest jumping on IRC freenode #snapframework to chat about it more.

Re: image: Definitely. Thanks for the feedback.

Re: Edit: Good feedback. I'll do it. Yeah it's free for free races. I'll throw that in there. Thanks so much for all the great feedback!

Cool. I showed it to my uncle who organizes a race and he said that it looks great, but he doesn't charge anyone, so it wouldn't work for him (not understanding it would work for free races).

I'm glad you brought that up. I used to say explicitly free races are free but removed it for the sake of simplicity. Would you mind putting me in contact with your uncle. It'd be great to be in contact with someone who organizes free races. luke@racemetric.com

Thanks for all your great feedback!

Racemetric is a simple athletic race registration and credit card processing app. It's all written in Haskell (Snap, Heist) and JS on top of PostgreSQL. The idea is for race organizers to accept credit card registration payments within minutes instead of having to talk to sales people, get a merchant account, build a custom web page, etc. As a runner and rower, I'd like to have all my race results in one place and one format.

Of course I'm looking for customers as well as any feedback you have to give! Feel free to contact me directly at luke@racemetric.com.

This Show HN grew out of another comment thread here: https://news.ycombinator.com/item?id=7008532

very cool, quick question, how does this integrate with tracking results of a race. I.e chip based timing?

Currently Racemetric just supports uploading the CSV/Excel file but I plan to integrate w/ the live results APIs shortly (for chip timing etc).

Nice! I've been working on PaddleGuru for some time now: https://paddleguru.com/. Similar idea, more geared toward paddling races. We're using a full-stack Clojure back end. Would love to chat sometime about your longer term goals.

sam at paddleguru dot com, btw.

Are you storing the race paths using the PostGIS extension for postgres or something else?

Nope right now I just store them as an array of tuples of points. I do plan to use more PostGIS though in the future! Any experience there?

A little experience. Enough to say at this point it's probably overkill, but if you start writing more geo-aware features (e.g. search nearby, overlapping course search, etc) it may save you some time vs implementing in application code.

I've used PostGIS in the past and what I can say is that I was pretty impressed with its performance. If you want to render the geometry, you could use geoserver... but make sure you have the RAM available.

I like the design, the drawing on the map isn't working for me though, using chrome.

What version of chrome? Can you see if there are JS errors in the console? View -> Developer -> Javascript Console?

Sorry about that!

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact