<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description></description><title>Coderspiel</title><generator>Tumblr (3.0; @coderspiel)</generator><link>http://code.technically.us/</link><item><title>Help us demo Acro beta at #hackdisrupt by playing it now</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_m4buv80cyJ1qb6dplo1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Help us demo Acro beta at #hackdisrupt by &lt;a href="https://play.google.com/store/apps/details?id=com.happytap.acro"&gt;playing it now&lt;/a&gt;&lt;/p&gt;</description><link>http://code.technically.us/post/23416693416</link><guid>http://code.technically.us/post/23416693416</guid><pubDate>Sun, 20 May 2012 11:28:32 -0400</pubDate></item><item><title>Disrupt 2012 begins</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_m4a5pkz1XO1qb6dplo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Disrupt 2012 begins&lt;/p&gt;</description><link>http://code.technically.us/post/23358674083</link><guid>http://code.technically.us/post/23358674083</guid><pubDate>Sat, 19 May 2012 13:21:27 -0400</pubDate></item><item><title>implicit.ly: herald 0.5.0</title><description>&lt;a href="http://notes.implicit.ly/post/23142790192/herald-0-5-0"&gt;implicit.ly: herald 0.5.0&lt;/a&gt;: &lt;p&gt;&lt;a href="http://notes.implicit.ly/post/23142790192/herald-0-5-0" class="tumblr_blog"&gt;implicitly-notes&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;h2&gt;Tumblr Integration&lt;/h2&gt;
&lt;p&gt;This version of Herald is ported to use the Tumblr API for posting and
is configured to publish to &lt;a href="http://notes.implicit.ly/"&gt;notes.implicit.ly&lt;/a&gt; by default. The
“notes” subdomain is the new home of implicit.ly release notes and
redirects are in place.
&lt;/p&gt;
&lt;h2&gt;Upgrade and Authorization&lt;/h2&gt;
&lt;p&gt;You can upgrade Herald…&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The old switcheroo.&lt;/p&gt;</description><link>http://code.technically.us/post/23143148147</link><guid>http://code.technically.us/post/23143148147</guid><pubDate>Tue, 15 May 2012 22:16:21 -0400</pubDate></item><item><title>Light Table - a new IDE (by Chris Granger)</title><description>&lt;iframe src="http://player.vimeo.com/video/40281991" width="400" height="225" frameborder="0"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Light Table - a new IDE (by &lt;a href="https://vimeo.com/40281991"&gt;Chris Granger&lt;/a&gt;)&lt;/p&gt;</description><link>http://code.technically.us/post/23100839184</link><guid>http://code.technically.us/post/23100839184</guid><pubDate>Tue, 15 May 2012 08:41:23 -0400</pubDate></item><item><title>Adam Hinz &amp; George Adams: Dispatch, Unfiltered, Blue Eyes, &amp; Play: A Comparison - PHASE: Philly Area Scala Enthusiasts (Philadelphia, PA) - Meetup</title><description>&lt;a href="http://www.meetup.com/scala-phase/events/60768832/"&gt;Adam Hinz &amp; George Adams: Dispatch, Unfiltered, Blue Eyes, &amp; Play: A Comparison - PHASE: Philly Area Scala Enthusiasts (Philadelphia, PA) - Meetup&lt;/a&gt;</description><link>http://code.technically.us/post/22589348888</link><guid>http://code.technically.us/post/22589348888</guid><pubDate>Mon, 07 May 2012 11:18:21 -0400</pubDate><category>Philly</category><category>Scala</category><category>Unfiltered</category><category>Dispatch</category><category>Blueeyes</category><category>Play</category></item><item><title>"A good developer has a natural, almost visceral aversion to complexity."</title><description>“A good developer has a natural, almost visceral aversion to complexity.”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;a href="http://sigpwned.com/content/complication-what-happens-when-you-try-solve-problem-you-dont-understand"&gt;Complication is What Happens When You Try to Solve a Problem You Don’t Understand&lt;/a&gt; (via &lt;a href="http://bdarfler.com/" class="tumblr_blog"&gt;bdarfler&lt;/a&gt;)&lt;/em&gt;</description><link>http://code.technically.us/post/22587077158</link><guid>http://code.technically.us/post/22587077158</guid><pubDate>Mon, 07 May 2012 10:11:16 -0400</pubDate></item><item><title>flatMap Oslo  (May 15, 16) is Norway’s first Scala...</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_m3lvb2zfkJ1qb6dplo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://flatmap.no/"&gt;flatMap Oslo &lt;/a&gt; (May 15, 16) is Norway’s first Scala conference, and the first anywhere to have such exciting light fixtures. (Good &lt;a href="http://flatmap.no/#foredragsholdere"&gt;speaker lineup&lt;/a&gt;, too.)&lt;/p&gt;</description><link>http://code.technically.us/post/22516441219</link><guid>http://code.technically.us/post/22516441219</guid><pubDate>Sun, 06 May 2012 10:39:54 -0400</pubDate><category>Scala</category><category>Conferences</category><category>Europe</category><category>Lamps</category></item><item><title>How to get to the Scalathon.</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_m3avpmqBlC1qb6dplo1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;How to get to the &lt;a href="http://www.meetup.com/scala-phase/events/62752272/"&gt;Scalathon&lt;/a&gt;.&lt;/p&gt;</description><link>http://code.technically.us/post/22126925118</link><guid>http://code.technically.us/post/22126925118</guid><pubDate>Mon, 30 Apr 2012 12:12:58 -0400</pubDate><category>Scala</category><category>Philly</category><category>Transit</category></item><item><title>@jorgeO Parachuted into into enemy territory</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_m2qmcqb0cF1qb6dplo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;@jorgeO Parachuted into into enemy territory&lt;/p&gt;</description><link>http://code.technically.us/post/21387202149</link><guid>http://code.technically.us/post/21387202149</guid><pubDate>Thu, 19 Apr 2012 13:36:10 -0400</pubDate></item><item><title>We need to teach our kids to code</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_m2mkhyAKNf1qb6dplo1_400.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;We need to teach our kids to code&lt;/p&gt;</description><link>http://code.technically.us/post/21266069969</link><guid>http://code.technically.us/post/21266069969</guid><pubDate>Tue, 17 Apr 2012 09:06:34 -0400</pubDate></item><item><title>At first I was worried Viktor did not have a funny t-shirt but...</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_m2mdqkkayx1qb6dplo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;At first I was worried Viktor did not have a funny t-shirt but then he took off his Akka hoodie.&lt;/p&gt;</description><link>http://code.technically.us/post/21262966275</link><guid>http://code.technically.us/post/21262966275</guid><pubDate>Tue, 17 Apr 2012 06:38:47 -0400</pubDate></item><item><title>@marius not talking about Futures</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_m2mbi2WrkK1qb6dplo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;@marius not talking about Futures&lt;/p&gt;</description><link>http://code.technically.us/post/21262148041</link><guid>http://code.technically.us/post/21262148041</guid><pubDate>Tue, 17 Apr 2012 05:50:39 -0400</pubDate></item><item><title>DataExpress talk</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_m2m9tz5NNc1qb6dplo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;DataExpress talk&lt;/p&gt;</description><link>http://code.technically.us/post/21261593455</link><guid>http://code.technically.us/post/21261593455</guid><pubDate>Tue, 17 Apr 2012 05:06:38 -0400</pubDate></item><item><title>robot-vision 0.0.1 - implicit.ly</title><description>&lt;a href="http://implicit.ly/robot-vision-001"&gt;robot-vision 0.0.1 - implicit.ly&lt;/a&gt;: &lt;blockquote&gt;
  &lt;p&gt;Robot Vision Control (RVC) is an embedded unfiltered web server allowing remote control over the host machine similar to RDP and VNC, except control is handled at the http transport layer.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The client is a Chrome extension. This is rad.&lt;/p&gt;</description><link>http://code.technically.us/post/21121440058</link><guid>http://code.technically.us/post/21121440058</guid><pubDate>Sat, 14 Apr 2012 22:18:55 -0400</pubDate><category>Scala</category><category>Web</category><category>Unfiltered</category><category>Remote Desktop</category></item><item><title>Making Meetup: Meetup Futurism</title><description>&lt;a href="http://making.meetup.com/post/20595493065/meetup-futurism"&gt;Making Meetup: Meetup Futurism&lt;/a&gt;: &lt;p&gt;&lt;a href="http://making.meetup.com/post/20595493065/meetup-futurism" class="tumblr_blog"&gt;makingmeetup&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;There are some features on Meetup that, while valuable, are
enhancements to the core experience. We wouldn’t want these sometimes
memory- and processor-intensive features to prevent someone from doing
something as important as RSVPing to a Meetup. Because of this, these
features have been…&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Everybody&lt;/em&gt; needs a &lt;code&gt;ListenableFuture&lt;/code&gt; interface.&lt;/p&gt;</description><link>http://code.technically.us/post/20786447507</link><guid>http://code.technically.us/post/20786447507</guid><pubDate>Mon, 09 Apr 2012 13:28:48 -0400</pubDate><category>Java</category><category>Futures</category><category>Interfaces</category><category>Meetup</category></item><item><title>giter8 0.4.2 - implicit.ly</title><description>&lt;a href="http://implicit.ly/giter8-042"&gt;giter8 0.4.2 - implicit.ly&lt;/a&gt;: &lt;blockquote&gt;
  &lt;p&gt;Because github is terminating its v2 APIs on May 1, 2012 and these are used by all earlier versions of giter8, you must upgrade in order to continue using the software.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Go ahead and upgrade now, before you forget and github terminates the APIs and you open a bug against giter8 and I get even more annoyed about this whole situation.&lt;/p&gt;</description><link>http://code.technically.us/post/20758893194</link><guid>http://code.technically.us/post/20758893194</guid><pubDate>Sun, 08 Apr 2012 23:24:37 -0400</pubDate><category>Giter8</category><category>Scala</category><category>Github</category><category>APIs</category><category>Worst Practices</category></item><item><title>Testing Scala Libraries</title><description>&lt;p&gt;In the course of developing some Scala libraries that have stuck around, 
I&amp;#8217;ve generally found it helpful to users if I release artifacts compatible 
with the two most recent major versions of Scala. So at the moment 
I support everything between 2.8.0 and 2.9.1-1.&lt;/p&gt;

&lt;p&gt;Binary compatibility across minor Scala versions can lessen the burden, but
as long as the language continues to evolve there will be transition periods
where libraries must support more than one major version. Instead
of scrambling to handle multiple publishing targets every time this happens, 
it&amp;#8217;s safer and easier to
handle them always with the automation known as cross-building. This
feature of sbt runs a build against a set of Scala versions and
publishes distinctive artifacts, so that sbt can also retrieve
artifacts that are compatible with a particular version of Scala.&lt;/p&gt;

&lt;p&gt;The same is true, it would seem, for test frameworks. You
need to run tests against your own library for all the versions
of Scala you claim compatibility with. If you can&amp;#8217;t use your test
framework with a Scala version, you&amp;#8217;re out of luck&amp;#8212;and so are
your users.&lt;/p&gt;

&lt;p&gt;~~~&lt;/p&gt;

&lt;p&gt;Since I&amp;#8217;m starting fresh with Dispatch reboot I&amp;#8217;m also starting fresh
on its tests. There&amp;#8217;s a lot of interesting efforts going on in testing
Scala and I thought, surely, I could find one that is built for the
different versions of Scala I support. But that&amp;#8217;s just not the case. I
tried the usual suspects, as well as every upstart Scala testing
framework I could find, and none of them are being dependably
cross-published.&lt;/p&gt;

&lt;p&gt;I was almost ready to switch to JUnit, which I have never actually
used for anything&amp;#8212;but hey, it works for Foursquare. Then I remembered
to ask Josh Cough what to do. And he told me (as he told me a few
years ago when I wasn&amp;#8217;t ready to listen) to just use ScalaCheck.&lt;/p&gt;

&lt;p&gt;Obviously, ScalaCheck is not cross-built and published for every
version of Scala that I support but it has one big advantage: no
dependencies. You can generally build it without a lot of drama.  And
that made me realize that the answer has been there since sbt 0.10:
&lt;strong&gt;source dependencies&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In their local form, source dependencies are unarguably practical. I&amp;#8217;ve
never had a better workflow for developing both a library and client
application at the same time: you save one file in the library and all
dependent sources in both projects are recompiled.&lt;/p&gt;

&lt;p&gt;The remote form of source dependencies is more ambitious, and also
trickier. In the most common case you specify a git URL that
references a specific commit and sbt will clone that project and build
it locally. The tricky part is that although the project is okay to
build in sbt, it&amp;#8217;s in a strange new world when it comes to
distribution.&lt;/p&gt;

&lt;p&gt;You &lt;em&gt;can&amp;#8217;t&lt;/em&gt; publish the project&amp;#8217;s binaries to a Maven repository. And
if you&amp;#8217;re building a WAR or a JAR or something else, it&amp;#8217;s unlikely
that the source dependency&amp;#8217;s classes are going to end up in that archive
without some gnashing of teeth your sbt build definition. About the
only thing you can do in a straightforward way is have your project
be used as a source dependency by something else, which is neat
but unpopular.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;With test dependencies&lt;/strong&gt;, we just don&amp;#8217;t have the problem. Test
artifacts aren&amp;#8217;t meant to be distributed, they&amp;#8217;re meant to be run
locally by the project contributors. After the compiled tests pass,
you don&amp;#8217;t worry about them or their dependencies. Your work is done.&lt;/p&gt;

&lt;p&gt;So using test frameworks with a library is the perfect use case for
source dependencies, and ScalaCheck with its uncomplicated build the
perfect source dependency. I did have to fork the repo to make some superficial
changes. Incompatibilities with Scala 2.8 were introduced at some
point, so I rewound to the last version tag before that and
back-ported the sbt 0.11 build definition, which took all of five
minutes. I pushed my changes to a fork on github and that was it.&lt;/p&gt;

&lt;p&gt;But the configuration for this on the client library side is not-obvious, and I
went though a few ugly iterations of it before I came up with something
&lt;a href="https://github.com/dispatch/reboot/blob/master/project/build.scala#L23"&gt;fairly short and sweet&lt;/a&gt;. Here&amp;#8217;s the crux of it:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;lazy val ufcheck = Project(
  "ufcheck", file("ufcheck")
).dependsOn(scalacheck % "test-&amp;gt;compile")

lazy val scalacheck = RootProject(
  uri("git://github.com/n8han/scalacheck.git#1.8cc")
)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;(If it looks weird it&amp;#8217;s because it&amp;#8217;s doing something amazing that you
can&amp;#8217;t do any other way.) &lt;code&gt;ufcheck&lt;/code&gt; is some test code that I use in
other modules, but you can pretend it&amp;#8217;s a library module that just
needs to use ScalaCheck. Its &lt;code&gt;dependsOn&lt;/code&gt; clause sets a &lt;em&gt;test&lt;/em&gt;
dependency on the &lt;em&gt;compile&lt;/em&gt; classpath of ScalaCheck, which is
exactly what we need to do.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;scalacheck&lt;/code&gt; reference points to my fork and a tag &amp;#8220;1.8cc&amp;#8221;, which
is my way of saying it&amp;#8217;s version 1.8 with a build that cross-compiles.&lt;/p&gt;

&lt;p&gt;And that&amp;#8217;s it. Dispatch reboot is testable for life. No matter what
happens in the future, it can be tested against different versions of
Scala without asking anybody to publish anything.&lt;/p&gt;

&lt;p&gt;Since Scala 2.10 is right around the corner I can start thinking about
dropping support for 2.8 and updating this source dependency to a
newer tag of ScalaCheck, if I feel like it. Or I can support 2.8
through 2.10&amp;#8212;whatever! My build is flexible, that&amp;#8217;s the whole point.&lt;/p&gt;

&lt;p&gt;If only the same trick worked on everything.&lt;/p&gt;</description><link>http://code.technically.us/post/20315018195</link><guid>http://code.technically.us/post/20315018195</guid><pubDate>Sun, 01 Apr 2012 19:03:00 -0400</pubDate><category>Scala</category><category>Building</category><category>Libraries</category><category>Testing</category></item><item><title>"There’s one obvious way to define a set of named, type-safe fields: write a scala trait. Your config..."</title><description>“There’s one obvious way to define a set of named, type-safe fields: write a scala trait. Your config file can then just be a scala file that you compile and evaluate when the server starts.”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;a href="http://www.readability.com/articles/vb8ybdft"&gt;Why Config?&lt;/a&gt;&lt;/em&gt;</description><link>http://code.technically.us/post/20114535404</link><guid>http://code.technically.us/post/20114535404</guid><pubDate>Thu, 29 Mar 2012 09:10:05 -0400</pubDate><category>Scala</category><category>Configuration</category><category>Type safety</category><category>Robey</category></item><item><title>On LINQ, Standards, Databases and Fruit | stmts</title><description>&lt;a href="http://stmts.net/2012/03/25/on-linq-standards-databases-and-fruit/"&gt;On LINQ, Standards, Databases and Fruit | stmts&lt;/a&gt;: &lt;blockquote&gt;
  &lt;p&gt;What’s left seems like low-hanging fruit. I have heard nearly nothing about it, but I’ll be damned if twenty people aren’t sitting around working on it somewhere right now: There needs to be an object/node/graph database built explicitly on LINQ-like principles and in a way as to optimize for LINQ-based usage patterns. The data conforms to object patterns instead of its own designs. The kind of queries you send it informs a dynamic query analyzer, rebuilding and maintaining indexes for optimal access. You don’t have to worry, really, about primary keys, but more about references to other things.&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://code.technically.us/post/20042812208</link><guid>http://code.technically.us/post/20042812208</guid><pubDate>Tue, 27 Mar 2012 22:12:43 -0400</pubDate><category>stmts</category><category>LINQ</category><category>Databases</category><category>Graphs</category><category>Languages</category></item><item><title>"The Java Platform group is looking for an experienced, passionate and highly-motivated Software..."</title><description>“The Java Platform group is looking for an experienced, passionate and highly-motivated Software Engineer to join our world class development effort. Our team is responsible for delivering the Java Virtual Machine that is used by millions of developers.”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;a href="https://blogs.oracle.com/jrose/entry/the_openjdk_group_at_oracle"&gt;the OpenJDK group at Oracle is growing (John Rose @ Oracle)&lt;/a&gt;&lt;/em&gt;</description><link>http://code.technically.us/post/20023348025</link><guid>http://code.technically.us/post/20023348025</guid><pubDate>Tue, 27 Mar 2012 16:56:39 -0400</pubDate><category>Java</category><category>Oracle</category><category>JDK</category><category>OpenJDK</category></item></channel></rss>

