Peter - just out of curiosity: How did you split those 8000 LOC up? Did you 
go for a structured component/react type splitup, or did you split 
"organically" when the need occurred?


On Monday, September 19, 2016 at 3:08:43 PM UTC+2, Peter Damoc wrote:
>
> I keep postponing this for a few weeks but today my partner decided to 
> stop the collaboration and I'll take advantage of this moment to write this 
> post mortem. 
>
> *Context*
>
> I was approached by a friend few months ago about a B2B project that was 
> supposed to help small businesses issue beautiful invoices. It was suppose 
> to be a free product that would synergize with some other products that his 
> business was already delivering. I was supposed to implement it and he 
> would do all the marketing and promotion.
>
> Having total freedom, I decided to use Elm to implement the platform in 
> cooperation with another part-time programmer that would do a JSON backend 
> in PHP. 
>
> The product required that the interface would be modern, responsive, 
> dynamic and look great. 
>
> *Beginning Phase*
>
> The first phase of the development was dominated by personal attempts at 
> reimplementing reactive design elements such as drawers that show on big 
> screens and hide on small devices. After a few buggy attempts I ended up 
> trowing everything away and switching to elm-mdl. 
>
> A considerable amount of time was also invested at this point to set up 
> some kind of automatic build environment. I ended up with a solution based 
> on gulp. 
>
> *Middle Phase *
>
> Once the build environment was set up, things started to move a little 
> faster. I then ended up needing CSS and after playing a little bit with 
> elm-css and hitting several missing properties I decided to implement my 
> own library, taking inspiration from all 3 libraries that were dealing with 
> style (rtfeldman/elm-css, elm-style and massung/elm-css). In hindsight this 
> might have been a rather bad idea for productivity reasons but I have 
> learned a lot. 
>
> *Ending Phase *
>
> After I passed the 5000 LOC mark, things really started to crumble around 
> me. My mind could no longer deal with the complexity I have created. 
> Most of the brain cyles in this phase have been wasted trying to use the 
> little JS I know to try and somehow add to my Elm UI some widgets that I 
> needed. I have failed.
>
> I have spent an inordinate amount of time trying to add some Dropdowns to 
> some forms I had, ending up reimplementing part of them in Elm and using 
> some CSS form the Semantic UI project. 
>
> Another large amount of time was spent trying to integrate a carousel. I 
> ended up reimplementing a bare bone version in pure Elm. 
>
> By the end, the code grew to about 8000 LOC of Elm. 
>
> *Conclusions *
>
> - *Elm is an amazing language.* I've had countless moments of sheer 
> pleasure programing in Elm for this app. 
> - *Elm lacks the full story. *My main hope was that I could implement the 
> app even if I had very little CSS or JS knowledge. I could not do this. Elm 
> does not have yet something that would allow someone to stop touching CSS. 
> -* I would not recommend webdev beginners to take the approach I took.* 
> It is better for now to stay the tried and proven path and just use Elm to 
> implement smaller components in another web framework. 
> - *The tooling around producing a deliverable elm webapp are simply not 
> ready yet.* 
>
>
> Thank you for taking the time to read this. 
> If any of you has curiosities around this experience, feel free to ask me 
> anything. :) 
>
>
>
>
>
> -- 
> There is NO FATE, we are the creators.
> blog: http://damoc.ro/
>

-- 
You received this message because you are subscribed to the Google Groups "Elm 
Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elm-discuss+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to