Lalish-Menagh, Trevor on 13 Mar 2012 07:53:19 -0700


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: Many Thanks


Hi all,

Here is a list of links I compiled throughout the talk. There was a
lot I didn't know, and I thought a list of links could help other grok
Paul's talk as well. I how they help:

Here are some links to tools that he talked about:

Clojure and Scala: A mailing list post by the main developer on World
Singles and why they chose Clojure over Scala
(http://groups.google.com/group/clojure/browse_thread/thread/b18f9006c068f0a0?pli=1)
Hiccup: HTML Rendering in Clojure (https://github.com/weavejester/hiccup)
Chris Granger: Inventor of fetch, noir, and jayq. Tools to manipulate
the DOM in Clojure
(http://www.chris-granger.com/2012/02/20/overtone-and-clojurescript/)
Bootstrap: Twitters HTML/CSS/JS templates (http://twitter.github.com/bootstrap/)
David Nolen: Writer of "The Joy of Clojure"
(http://blog.fogus.me/2010/07/19/take-7-david-nolen/)
Uniplate: A Haskell framework for general traversals
(http://community.haskell.org/~ndm/uniplate/)
Scrap your boilerplate: A series of MS Research papers on generic
programming that Uniplate is based off of
(http://research.microsoft.com/en-us/um/people/simonpj/papers/hmap/)
core.logic: A logic programming library for Clojure
(https://github.com/clojure/core.logic)
RabbitMQ: Everyones favorite message queue (http://www.rabbitmq.com/)
(unless you are a 0MQ guy (http://www.zeromq.org/))
Uniti Testing in Clojure: 'nuff said
(http://nakkaya.com/2009/11/18/unit-testing-in-clojure/)
ClojureScript: Clojure for the browser (compiled to JavaScript
https://github.com/clojure/clojurescript)
enlive: CSS templating and transformations in Clojure
(https://github.com/cgrand/enlive)
enfocus: DOM manipulation in ClojureScript (enlive in ClojureScript
https://github.com/ckirkendall/enfocus)
How To Solve It: A great book on systematic problem solving
(http://en.wikipedia.org/wiki/How_to_Solve_It)
Try Haskell: in the browser! (http://tryhaskell.org/)
Scala levels: The levels of a Scala programmer
(http://www.scala-lang.org/node/8610)
The Art of the Metaobject Protocol: A book explaining metaobject
protocols used in lisps
(http://en.wikipedia.org/wiki/The_Art_of_the_Metaobject_Protocol)
Software Transitional Memory: What makes Clojure's (and Haskell's)
concurrency model work so well
(http://en.wikipedia.org/wiki/Software_transactional_memory)
Learn Clojure: Tutorails and videos for learning clojure
(http://learn-clojure.com/)

Yours,
Trevor

On Tue, Mar 13, 2012 at 8:08 AM, Paul <paul.degrandis@gmail.com> wrote:
> Many thanks to all that came out last night. ÂThank you so much for
> the attention, the feedback, and the great discussion. ÂYou all
> provided me with some insight on how to really hone in the focus of my
> talk.
>
> If anyone has questions specific to the slides, the discussion, or the
> Tutorspree technology pieces, follow up in this thread.
>
> I'm digging up the paper on user perceived system errors based on
> response time.
>
>
> I also wanted to fill in some details about baking that might help
> better fill-out the business case:
>
> One of my greatest risks is managing lots of physical computing
> resources with a limited number of engineers. ÂOur time is better
> spent serving our internal engineering needs, or the needs of
> customers, not the inherent complexities of scaling and maintaining
> web machines.
>
> We have a risk that the pipeline from design concept to production
> push is just too long. ÂWe'd really like to use the objective data
> from A/B tests in a tight loop, to push UI and Interaction changes a
> lot faster.
>
> Another risk is that our mobile traffic is growing faster than any
> other segment. ÂThe old architecture choice was mobile-dispatching,
> but it means that we have to double up on some of the control logic
> and also the designs. ÂGiven the second risk, this becomes a small
> hangup.
>
> Our best source of traffic comes from organic search (a lot of long
> tail stuff that we scoop up). ÂSo we optimize a lot for that sort of
> thing.
> =====
>
> The idea is simple:
> A designer builds us static HTML. ÂThey use a chopped up version of
> Bootstrap2 and HTML5boilerplate that has all the responsive/fluid
> stuff turned on (we've removed the mobile rendering concern to some
> degree. ÂWe also got semantic markup via microdata for free - great
> for SEO). ÂWe then put the page through a baking process where we're
> doing div transforms with real data from our DB.
> The pages that come out are RICH for SEO. ÂOur static content that we
> place on the CDN is the bare-minimum for humans, and the best case
> scenario for machines.
>
> We additionally push snippets of JavaScript (some actual JS, but
> mostly compiled ClojureScript) to the CDN.
>
> This JS fulfills all the dynamic needs of Tutorspree, by doing simple
> div transformations and swapping out the HTML when needed.
>
> 90% of all traffic and interaction is now being handled between the
> CDN and the client. ÂSo the scaling and system maintenance/
> administration risks are greatly reduced.
>
> What we gained is now engineers don't have to worry about taking a
> design and turning it into a template, UI/UX changes can happen in a
> tight loop, engineers get the benefit of interactive development at
> all points of the application, we don't need to worry as much about
> scaling our DB for connections, just for data and processing.
>
> Hope this helps clear some confusion for some people,
> Paul



-- 
Trevor Lalish-Menagh
trev@trevmex.com
484.868.6150 (mobile)
trevmex (AIM)