pages tagged clojurewikihttp://sept.info9.net/wiki//clojure/wikiikiwiki2016-08-10T19:54:00Zwebicahttp://sept.info9.net/wiki//tmarble/posts/webica/2016-08-10T19:54:00Z2016-08-10T19:54:00Z
<h1>webica</h1>
<p>I've just pushed the first version of my new Clojure wrapper
for <a href="http://docs.seleniumhq.org/">Selenium</a> called <a href="https://github.com/tmarble/webica">webica</a>.</p>
<p>The reason I need <strong>webica</strong> is that I want to do automated
browser testing for <a href="https://github.com/clojure/clojurescript">ClojureScript</a> based web applications.
Certainly NodeJS, PhantomJS, Nashorn and the like are useful...
but these can't quite emulate the full browser
experience. We want to test our ClojureScript web apps in browsers --
ideally via our favorite automated continuous integration tools.</p>
<p><br />
<br />
<a href="http://docs.seleniumhq.org/">
<img src="http://docs.seleniumhq.org/images/big-logo.png" alt="Selenium" />
</a>
<br /></p>
<p>My new approach with the <strong>webica</strong> library is to do full Java introspection
in the spirit that <a href="https://github.com/mcohen01/amazonica">amazonica</a> does for the AWS API. In fact I
wanted to take it a step further by actually generating Clojure source code via
introspection that can be used by Codox to generate nice API docs
(which you don't get with amazonica). That, alas, was a little
trickier than expected due to pesky <a href="https://en.wikipedia.org/wiki/Quine_%28computing%29">Quine</a>-like problems <img src="http://sept.info9.net/wiki//smileys/smile.png" alt=":)" /> .</p>
<p>If you load the library on the REPL you can get a feeling for each
namespace by calling the <code>show-functions</code> function.</p>
<p>I realize this approach of aggressive introspection, playing fast
and loose with types and application level dynamic dispatch are
crazy antipatterns. In my defense I started out playing around
to see "if I could do it". After seeing the result in the form
of a <em>shell script</em> in Clojure -- imitating <a href="https://github.com/tmarble/webica/blob/master/examples/lmgtfy">lmgtfy</a> -- perhaps
<strong>webica</strong> will actually be useful!</p>
<p>I plan to talk about <strong>webica</strong> tonight at <a href="http://www.meetup.com/clojuremn/events/232762945/">clojure.mn</a> -- hope to
see you there!</p>
Updatedhttp://sept.info9.net/wiki//tmarble/posts/Updated/2014-10-13T13:44:40Z2014-10-13T13:44:40Z
<h1>Updated</h1>
<p>Today I've made some modest changes to my CV, <a href="http://www.linkedin.com/in/tmarble">LinkedIn</a>
and <a href="https://identi.ca/tmarble">various</a> <a href="http://twitter.com/tmarble">online</a> <a href="https://github.com/tmarble">profiles</a>.
The theme has been "less is more" and I want to highlight
my interest consulting in <a href="http://info9.net/wiki/tmarble/posts/10000_Processes_in_Om/">Clojure</a>,
security and <a href="http://info9.net/wiki/tmarble/posts/USB_TRNG/">embedded hardware</a>.</p>
<p>Why corp-to-corp consulting? I regularly get asked this question
by companies that want to fill permanent, full-time positions.
Having worked for big companies, small companies and even
having founded a Silicon Valley startup from Minnesota (just think
of the miles!) I've come to realize that consulting is
a great fit for me. I can carefully chose clients projects
that have really interesting problems and at the same time
invest continually in personal development (e.g.
<a href="http://sept.info9.net/wiki//tmarble/posts/Legal_Issues_at_FOSDEM_2014/">conference organizing</a>,
working to increase the <a href="https://github.com/clojurebridge-minneapolis/organizing/blob/master/SURVEY.md">participation of women</a>
in <a href="https://wiki.debian.org/OutreachProgramForWomen">open source software</a>). One of the nice
fringe benefits for clients is I can share best practices
that I've learned in my travels with each engagement.</p>
<p>Let <a href="http://sept.info9.net/wiki//tmarble/">me</a> know if your project could use some extra hands!</p>
10000 Processes in Omhttp://sept.info9.net/wiki//tmarble/posts/10000_Processes_in_Om/2014-08-08T15:31:23Z2014-08-08T15:23:28Z
<h1>10,000 Processes in Om</h1>
<p>I have just published <a href="https://github.com/tmarble/om-processes">om-processes</a> which
is a port of David Nolen's <a href="http://swannodette.github.io/2013/08/02/100000-processes/">10,000 Processes</a>
in <a href="http://github.com/clojure/clojurescript">Clojurescript</a> to <a href="https://github.com/swannodette/om">Om</a>.</p>
<p>Clojurescript is a port of <a href="http://clojure.org">Clojure</a> to JavaScript which
is especially well suited for running in a browser. Just as
Clojure offers a pleasant LISP on the JVM Clojurescript
offers (nearly the same) LISP in the browser. The performance
of Clojurescript is outstanding due to the massive optimizations
available from the <a href="https://developers.google.com/closure/">Google Closure compiler</a>.</p>
<p>JavaScript, however, has some fundamental flaws... Top
among these are it is single threaded which leads to
an asynchronous callback style of "event programming".
Clojure's <a href="https://github.com/clojure/core.async/">core.async</a> offers a solution
in the form of <a href="http://en.wikipedia.org/wiki/Communicating_sequential_processes">CSP</a> style programming. Using core.async
one can <em>think</em> about coding in a more intuitive way.</p>
<p>In <a href="http://swannodette.github.io/2013/08/02/100000-processes/">10,000 Processes</a> Nolen demonstrates
using core.async to simulate independent "threads" despite
the fact that the underlying platform has no native
support for threads.</p>
<p>In <a href="https://github.com/swannodette/om">Om</a> Nolen leverages <a href="http://facebook.github.io/react/">Facebook's React</a> to
create a high performance, immutable model for client programming.</p>
<p>The technical study <a href="https://github.com/tmarble/om-processes">om-processes</a> is simply
the fusion of all these ideas into one demonstration.
Who knew web development could be so much fun!</p>
ClojureBridge Minnesotahttp://sept.info9.net/wiki//tmarble/posts/ClojureBridge_Minnesota/2014-07-10T17:10:08Z2014-01-14T17:08:31Z
<h1>ClojureBridge Minnesota</h1>
<p>Of course the weather being what it is -- winter came in with a bang --
our turnout last night at <a href="http://clojure.mn/">http://clojure.mn/</a> was light....</p>
<p><a href="http://clojure.org/">
<img src="http://clojure.org/file/view/clojure-icon.gif" alt="Clojure" />
</a></p>
<p>But we had a small, enthusiastic group that discussed the recent
Clojure Conj by editorializing the fine blog bost by <a href="http://loganlinn.com/blog/2013/11/18/clojureconj-2013/">Logan Linn</a>.</p>
<p>We also introduced the ClojureBridge effort to the group
and everyone sees nice synergy between this and our recent
success in November with "beginner's night" (which we plan
to repeat every other meeting).</p>
<p>As a software development consultant I often co-work
at <a href="http://cocomsp.com/">CoCoMSP</a> -- a melting pot of entrepreneurial energy.
I have introduced the idea of hosting ClojureBridge at
<a href="http://cocomsp.com/">CoCoMSP</a> with the founders and they are
considering it (fingers crossed)!</p>
<p>Now we need to recruit more volunteers to help organize our
local ClojureBridge Minnesota workshop next spring!</p>
<p>Ask <a href="http://sept.info9.net/wiki//tmarble/">me</a> how you can help!</p>
<h2>links</h2>
<ul>
<li>Presentation as PDF: <a href="http://sept.info9.net/wiki//tmarble/posts/ClojureBridge_Minnesota/clojurebridgemn.pdf">clojurebridgemn.pdf</a></li>
</ul>
Clojure Designed For Performancehttp://sept.info9.net/wiki//tmarble/posts/Clojure_Designed_For_Performance/2014-07-10T16:00:08Z2014-01-13T04:32:32Z
<h1>Clojure: Designed for Performance</h1>
<p>Yesterday I blogged about my LCA talk <a href="http://sept.info9.net/wiki//tmarble/posts/Crowdsourcing_Upstream_Refactoring/">Crowdsourcing Upstream Refactoring</a>.
Today I gave my a talk on Clojure and performance at <a href="http://linux.conf.au/">Linux Conf Australia 2013</a>.</p>
<p><a href="http://clojure.org/">
<img src="http://clojure.org/file/view/clojure-icon.gif" alt="Clojure" />
</a></p>
<p>I mixed giving an overview of why I think Clojure offers the advantages
of Common Lisp and Java without the disadvantages of either along with
live coding on the REPL. There were several great questions and I am really
pleased that many delegates told me that the were going to give
Clojure a close look!</p>
<p>Later this evening we have the Emacs BOF and I know I'll find
a number of friendly eLisp hackers.</p>
<p>If you have a chance to attend LCA I would highly recommended it...
This is among the best organized conferences I've attended
and comprises a fantastic group of enthusiastic contributors.</p>
<p>Below you will find links to the presentation. Very soon the video
of this talks (and all the talks) will be available.</p>
<h2>links</h2>
<ul>
<li>as PDF: <a href="http://sept.info9.net/wiki//tmarble/posts/Clojure_Designed_For_Performance/clojure-performance.pdf">clojure-performance.pdf</a></li>
<li>full source (<a href="https://github.com/takaxp/org-tree-slide">org-tree-slide</a>): <a href="http://sept.info9.net/wiki//tmarble/posts/Clojure_Designed_For_Performance/clojure-performance.tar.gz">clojure-performance.tar.gz</a></li>
<li>the talk was on <a href="http://linux.conf.au/programme/schedule/wednesday">Wednesday</a></li>
</ul>
Inbjuden tillbaks till hemlandet Sverigehttp://sept.info9.net/wiki//tmarble/posts/Inbjuden_tillbaks_till_hemlandet_Sverige/2014-01-13T04:33:19Z2014-01-13T04:32:32Z
<h1>Inbjuden tillbaks till hemlandet: Sverige</h1>
<p>Det är en ära för mig att ha blivit inbjuden att tala på konferensen
<a href="http://softwarepassion.se/speakers.do?name=tom-marble">Software Passion</a> i Göteborg, Sverige.
Det här är en stad med en mer än tusenårig historia och ett område
(byn Forsheda) från vilket min gammel mormor en gång utvandrade
till USA för över hundra år sedan. Jag hoppas kunna lära mig lite
svenska innan min resa.</p>
<p>This will be an exciting challenge for me because
I realize that most of my public speaking in the past few
years has been very much in a <a href="https://en.wikipedia.org/wiki/FLOSS">FLOSS</a> context.
The program at Software Passion shows quite a diversity of
technologies and topics -- including proprietary technologies
that I know little about. In my talk I will cover
some of the great fun I've had with the <a href="http://clojure.org/">Clojure</a>
programming language. Therefore I will consciously make a point to
highlight the importance of "standing on the shoulders of giants".</p>
<p>The productivity I have enjoyed would not be possible without
the stack Free Software I count on, including, but not limited to:</p>
<ul>
<li><a href="http://clojure.org/">Clojure</a></li>
<li><a href="http://dev.clojure.org/display/doc/Clojure+Contrib">Clojure Contrib</a> libraries</li>
<li>The <a href="http://webnoir.org/">noir</a> web framework</li>
<li>The <a href="https://github.com/technomancy/leiningen">leiningen</a> dependency management and build tool</li>
<li><a href="http://openjdk.java.net/">OpenJDK</a></li>
<li>The <a href="http://redis.io/">Redis</a> database</li>
<li>The <a href="http://jenkins-ci.org/">Jenkins</a> continuious integration server</li>
<li>And, of course, the bedrock of it all: <a href="http://www.debian.org">Debian GNU/Linux</a></li>
</ul>
<p>Several years ago I was able to travel to Norway on a project
I had with the electric vehicle company <a href="https://en.wikipedia.org/wiki/Think_Global">Think Global</a>.
I was able to visit my aunt in Oslo and get very close
to the border of Sweden while working at the car factory in Aurskog.
Indeed many of the engineers I worked with were Swedes who
commuted across the border each day.</p>
<p>My great-grandmother, Olga, immigrated from Sweden to the United
States around 1900. She was from a fairly well-to-do family
in Fosheda. After some careful investigation we learned that
she had fallen in love with a servant, but couldn't marry
him due to family pressure. A few years later after her
mother died she came to the USA with her "little brother"
and started a new life here. She was studying nursing in
Boston when she was asked to accompany the Minneapolis
Postmaster's wife back home on the train.</p>
<p>Much earlier than the "personal ad" era Olga mysteriously
found my great-grandfather, Andrew, within 3 days of
arriving in Minneapolis and married him soon thereafter
(the Swedish mafia? <img src="http://sept.info9.net/wiki//smileys/smile.png" alt=":)" /> ) . This is the background on my Nordic
roots in Minnesota.</p>
<p>I realize that for non-Americans the obsession with
immigration history seems a little silly. I'm proud of
my mixture of German, Danish, Swedish and Bohemian roots.
And I'm especially excited to finally set foot in Sweden!</p>
Noir is the new Blackhttp://sept.info9.net/wiki//tmarble/posts/Noir_is_the_new_Black/2014-01-13T04:33:19Z2014-01-13T04:32:32Z
<h1>Noir is the new Black</h1>
<p>Next week (Wednesday Feb 1) I will give a talk about
my experiences in <a href="http://clojure.org/">Clojure</a> and <a href="http://webnoir.org/">noir</a>.</p>
<p>Brian just sent the our local Clojure user group a
<a href="https://groups.google.com/group/clojuremn/browse_thread/thread/e1c5a5fd804f72b0?pli=1">pointer</a> about the meeting at 7pm
at <a href="http://refactr.com/contact/">Refactr</a> (Thanks Brian!).</p>
<p>I will work to post slides here on my blog (along
with other links/resources).</p>
<p><a href="http://sept.info9.net/wiki//tmarble/images/noir.png"><img src="http://sept.info9.net/wiki//tmarble/images/noir.png" width="310" height="144" alt="Noir" class="img" /></a></p>
<p>See you next week!</p>
Puissance de Clojurehttp://sept.info9.net/wiki//tmarble/posts/Puissance_de_Clojure/2014-07-10T16:00:08Z2014-01-13T04:32:32Z
<h1>Puissance de Clojure</h1>
<p>I would like to thank <a href="http://upsilon.cc/~zack/">Stephano Zacchiroli</a> and <a href="http://sylvestre.ledru.info/">Sylvestre Ledru</a> for
inviting me to talk about the <a href="http://www.irill.org/blog/puissance-de-clojure-par-tom-marble">Power of Clojure</a> yesterday at <a href="http://www.irill.org/">IRILL</a>.</p>
<p><a href="http://www.irill.org/">
<img src="http://www.irill.org/portal_css/irill/++resource++irill.images/logo.png" alt="IRILL" />
</a></p>
<p>IRILL is an unique organization comprised of computer science researchers from
several leading European universitities and organizations collaborating to
create a vibrant FLOSS ecosystem. It was an honor to present my view of how
<a href="http://clojure.org/">Clojure</a> combines the advantages of Common Lisp and Java without
the disadvantages of either. This was a tough crowd, experienced in functional
programming and very critical of dynamic typing... There were many good questions
and we had an active discussion.</p>
<p>I combined talking points with live hacking while presenting from within Emacs <img src="http://sept.info9.net/wiki//smileys/smile.png" alt=":)" />
You can download my "presentation" here:</p>
<ul>
<li>as PDF: <a href="http://sept.info9.net/wiki//tmarble/posts/Puissance_de_Clojure/puissance-de-clojure.pdf">puissance-de-clojure.pdf</a></li>
<li>full source (<a href="https://github.com/takaxp/org-tree-slide">org-tree-slide</a>): <a href="http://sept.info9.net/wiki//tmarble/posts/Puissance_de_Clojure/irill-26-juin-2012.tar.gz">irill-26-juin-2012.tar.gz</a></li>
</ul>
<p>Grazie Mille et Merci!</p>
Real World Clojurehttp://sept.info9.net/wiki//tmarble/posts/Real_World_Clojure/2014-07-10T16:00:08Z2014-01-13T04:32:32Z
<h1>Real World Clojure</h1>
<p>I just completed giving my talk at <a href="http://softwarepassion.se/speakers.do?name=tom-marble">Software Passion</a> conference
on Real World <a href="http://clojure.org/">Clojure</a>...</p>
<p><a href="http://clojure.org/">
<img src="http://clojure.org/file/view/clojure-icon.gif" alt="Clojure" />
</a></p>
<p>Here you can download my presentation:</p>
<ul>
<li>as PDF: <a href="http://sept.info9.net/wiki//tmarble/posts/Real_World_Clojure/real-world-clojure.pdf">real-world-clojure.pdf</a></li>
<li>as source (<a href="https://github.com/takaxp/org-tree-slide">org-tree-slide</a>): <a href="http://sept.info9.net/wiki//tmarble/posts/Real_World_Clojure/real-world-clojure.org">real-world-clojure.org</a></li>
<li>as source (org-tree-slide with images): <a href="http://sept.info9.net/wiki//tmarble/posts/Real_World_Clojure/software-passion.zip">software-passion.zip</a></li>
</ul>
<p>I'm very impressed at the organization and quality of the content at
Software Passion -- a first time conference. Clearly the organizers
have appealed to the innovative voices in Sweden's academic and
entreprenueal communities.</p>
<p>And, of course, the best part of any conference is the "hallway track"
and Software Passion has a lot of interesting geeks!</p>
<p>Tack!</p>
With Software Passionhttp://sept.info9.net/wiki//tmarble/posts/With_Software_Passion/2014-01-13T04:33:19Z2014-01-13T04:32:32Z
<h1>With Software Passion</h1>
<p>Today I arrived in Göteborg, Sweden to take part in
the first ever <a href="http://softwarepassion.se/speakers.do?name=tom-marble">Software Passion</a> conference.</p>
<p><a href="http://sept.info9.net/wiki//tmarble/images/gothenburg-post.jpg"><img src="http://sept.info9.net/wiki//tmarble/images/gothenburg-post.jpg" width="600" height="450" alt="Göteborg" class="img" /></a></p>
<p>I had a great time tonight at the Speaker's Dinner and
look forward to the conference tomrrow.</p>
<p>I will post slides from my talk Monday here on my blog
(along with other links/resources).</p>