Re: [web-devel] Re: Yesod usage in the wild

On Sun, Jul 18, 2010 at 10:04 PM, Luc TAESCH
thanks for the detailed feedback Rehno ! I am sure it will help others, like it helps me. hm, one question, though... 1/ Do i understand that you developed directly on the distant hosts ? or 2/did you developed locally, and pushed it to the hosts ? or 3/ (mix of 2 then 1), developed locally, then recompile to the host ? if 1/, why that ? any constraint that is good to know and share ? -----
Haha, "reply to all"? ;-) So yes, I develop and test on my local box using darcs for versioning. Then, when I'm happy that it's stable enough I push it to the remote server over svn and build it over there. I tried copying the CGI executable directly to bluehost, but it didn't work and I'm too lazy to figure out if it's possible to cross-compile. Actually I suspect the version numbers for some shared C libraries are different on the bluehost machines. I've also gotten into the habbit of writing bash scripts to speed up the repetitive tasks like copying files, stripping the executable and so on.
Well, for the monad/ monoid , I empathize ... :-) .. and in 2000, there were no the RWH book ... :-) nor cabal or hackage, so I know the feeling :-).. <philosophical rambling on > coming from slackware 97, one just get used to it, however, the haskell way is so large and deep compared to other langage, there is quite a chance to get lost on the way , not differentiating research stuff from basic useful stuff for the newbies... (unless mentored maybe... but RWH is doing already a nice job). maybe we reach this maturity on web development soon... <philosophical rambling off/>
I love the theoretical stuff too which is why I get side-tracked so easily :). I think it just takes some practice to "internalize" the concepts and use them in practice. At least it does for me: just like calculus compared to say arithmetic :)
On Sun, Jul 18, 2010 at 8:09 PM, Rehno Lindeque
wrote: On Sun, Jul 18, 2010 at 10:09 AM, Luc TAESCH
wrote: hey congrat Rehno, Good to see real things popping up !! May I ask you two things, out of curiosity ? 1/ Do you have any idea how long it took you to do the reach this point ? how much of learning curve , versus just doing ? 2/ Style wise, it is interestingly different . how did you design it? beforehand with photoshop, or some templating ? 3/ where did you hosted it , btw ? got some good response time here in belgium...:-) just good to know hosting that works and accept haskelish deployment Well done , anyway Luc
Thank you very much for the compliments Luc. So, maybe I should try to give a short summary of the experience so far for the benefit of others trying out yesod.
Keep in mind that * I'm newish to Haskell * I'm not a professional web-dev, my day job is as a C++ programmer.
DESIGN: I started with a mock-up of the two main pages in Inkscape first. I like the vector graphics stuff because you can play around with the sizes for icons without messing up the quality. The two main tabs are loaded with ajax and stored in a client session to make browser refresh work. Doing it this way causes quite a few headaches with the browser history and search engines though, so beware.
DEVELOPMENT TIME: In all honesty it took me quite a while to get to the current point: If I had to make a rough guestimate I'd say about 5 days full-time plus another 3 weeks on-and-off in the evenings. That said, most of the time went into things that are completely unrelated to Haskell or Yesod. I've used Ruby on Rails in the past and I'd guess it probably took me roughly the same amount of time. I'm also pretty sure the second time around will be a great deal faster.
THE HOST: I'm using an excellent shared host called bluehost.com with so-called "unlimited storage space" for quite cheap. I looked quite seriously at nearlyfreespeech.com as well. Unfortunately nfs seems to be a bit costly when it comes to storage space. If you consider that only ghc with the common packages weighs in somewhere around 300 mb... well, it to adds up. Hopefully in future they'll fine-tune the pricing structure because it sounds like a very nice host. With bluehost you can also just upgrade to a dedicated server if you start generating a lot of traffic.
Obstacles I had: * There's a bit of a trick to installing haskell libraries on bluehost. Some times they fail to install and you have to go to the ~/.cabal/packages/hackage.haskell.org folder, untar the package and 'cabal install' that sucker manually. * Couldn't get darcs working on bluehost, so I had to use svn. Getting svn working was a bit annoying.
YESOD & HASKELL: Things I loved about Yesod & Haskell: * There are libraries for everything. Cabal install anything. * It scales nicely as you project grows. This is my main motivation for using Haskell in general. With rails I always worried that something I did would break something else so you have to keep building brain-dead unit tests for everything. In Haskell it's more like: "Yay it compiles! Time for a coffee." * Almost no boiler-plate code. * Type safety everywhere. I sleep soundly knowing that my hrefs are safe. * Hamlet is awesome. * Everything is in modular packages that stands alone. You've simply got to believe that this is the smart way of building software. * Michael is super quick at responding to comments and queries and takes a lot of input from the community.
Here's the few relevant things in Yesod itself that have slowed me down. Nothing major really: * Basic handler didn't work for me with CGI, I had to use Network.Wai.Handler.CGI directly. (not sure why) * Yesod was at 0.2.0 when I started, it's at 0.4.1 now and things changed a little bit. I'm still catching up on the newest changes. I wouldn't dream of complaining though! * I can't seem to get RPXnow/Janrain authentication to work (but I'm still trying :-)) * You have to write your own payment integration modules and shopping carts etc from scratch. * CSS and Javascript is, was and always will be a pain. (I haven't tried the new Yesod widgets yet though...) * The Yesod docs are good in some ways, but a little bit incomplete in others. * There's no "dreamweaver" for hamlet. * The template haskell is a bit magical if you're learning yesod in a hurry. You need to have the documentation at hand to figure out what data types are generated. This is to be expected though and the compiler helps out. Perhaps some "cheat sheets" type of documentation would help? * There's no 'yesod init' type of command-line shortcut (yet). * The yesod website is a little bit... hard on the eyes. (Sorry Michael, no offense!)
Of course there are the usual Haskell nitpicks: * I still have no idea how to debug * Compiler messages are big and nasty * I've heard about these so-called "space leak" things and I'm worried about getting one :)
And the last point I consider both a pro and a con: * I spent a great deal of time reading up on funky Haskell stuff (Applicative? Monad? Monoid?)
Overall, I've had a very positive experience. I wouldn't switch to another framework easily now.
Regards, Rehno
On Sun, Jul 18, 2010 at 9:25 AM, Rehno Lindeque
wrote: On Sat, Jul 17, 2010 at 6:29 PM, Rehno Lindeque
wrote: On Fri, Jul 16, 2010 at 11:01 AM,
wrote: Hey all,
I'm going to be putting up a "powered by Yesod" place on the Yesod homepage[1], and wanted to know if anyone had sites they'd like placed there. It can be live websites or projects that use Yesod, I'm not picky ;).
Michael
Thanks for all the amazing work Michael, Yesod is making astounding progress.
My website isn't complete yet but I felt keen to share it with other haskellers so I put it up anyway, The address is www.urbanlisting.co.za. UrbanListing is a free listing website for the South African property market. In the future it will sport some advanced features like virtual tours / walkthroughs. If you feel feel that it's good enough in its current state then please feel free to add it!
Regards, Rehno
I meant to Re: Yesod in the wild, sorry about that everyone! _______________________________________________ web-devel mailing list web-devel@haskell.org http://www.haskell.org/mailman/listinfo/web-devel
participants (1)
-
Rehno Lindeque