PAF #1 Show and Tell

Here are the results of my first PAF#1 in pictures and short words:

I learnt much, but a TL;DR:

  • It’s mind boggling how easy it is nowadays to pick up front end components and put a webapp together. Things like AngularJS lower the barrier to entry significantly, at the cost of magical complexity. Bootstrap makes everything nicer.
  • Good design is hard. You can spend hours and days tweaking how things look, it’s easy to get caught up with something small not aligning right, or CSS craziness.
  • Javascript is crazy/awesome, asynchrony is a core requirement but not built into the language. Consequently, many tools and techniques (callbacks, promises) developed to handle this. I tried to use pure callbacks throughout the project, I’m very very tempted to rewrite everything using promises because it sucked so hard.
  • It was nice only needing to work with a single language for backend and frontend. Only used Sublime throughout. That said, the cycle for frontend was still better than the nodejs backend (yes, i probably could have used nodemon but didn’t). As an added bonus of working with interpreted languages, all sources are available for the libraries you use!

Even though at the end of the day I only produced a grand total of…two pages, I’m pretty stoked that it took only two weeks. I’d like to spend much more time than I have to fix some bugs, improve the UI, clean up the code, and write about the details of setting up Express, NodeJS callback conventions, AngularJS anchorscrolling hell, but that could take another fortnight to get right. And I don’t want to break my rules too early.

It’s now available publicly at . The code in there is pretty nasty but does the job. I did feel dirty and thought long and hard about making it public, but decided to with warts and all anyway since clean code was not an express requirement 😉

The requirement of having poppler-utils installed makes it difficult to host as a demo, but ping me if you run into problems getting it working.

Leave a Reply

Your email address will not be published. Required fields are marked *