<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2740216681747553327</id><updated>2026-05-17T23:37:52.347-07:00</updated><category term="Scala"/><category term="Twitter"/><category term="TalkingPuffin"/><category term="teaching"/><category term="Java"/><category term="Python"/><category term="Alice"/><category term="College for Kids"/><category term="Scratch"/><category term="Google"/><category term="Swing"/><category term="Java Posse"/><category term="Lift"/><category term="Kojo"/><category term="Twitter API"/><category term="assessment"/><category term="computer history"/><category term="jpr09"/><category term="Android"/><category term="DBSchools"/><category term="Java Posse Roundup"/><category term="Pygame"/><category term="QuickQuiz"/><category term="actors"/><category term="music"/><category term="programming"/><category term="API"/><category term="HTTP"/><category term="Ruby"/><category term="SuperHappyDevHouse"/><category term="TCP/IP"/><category term="graphics"/><category term="javaone"/><category term="robotics"/><category term="tutorial"/><category term="140tc"/><category term="AI class"/><category term="Akka"/><category term="Arduino"/><category term="BASIC"/><category term="Digg"/><category term="FriendFeed"/><category term="Google App Engine"/><category term="Hibernate"/><category term="Hyperic HQ"/><category term="IO2008"/><category term="JGroups"/><category term="JMX"/><category term="JPA"/><category term="Java EE"/><category term="JavaFX"/><category term="JavaOne2009"/><category term="JavaScript"/><category term="Netbeans"/><category term="Seesmic"/><category term="SpamAssassin"/><category term="Squeak"/><category term="StumbleUpon"/><category term="TA"/><category term="UML"/><category term="VMware"/><category term="XML"/><category term="adventure"/><category term="annotations"/><category term="email"/><category term="firewall"/><category term="flask"/><category term="git"/><category term="hackthefuture"/><category term="io2009"/><category term="jQuery"/><category term="javaone2008"/><category term="math"/><category term="matplotlib"/><category term="network"/><category term="probability"/><category term="redirection"/><category term="scratch sensor"/><category term="sendmail"/><category term="shdh"/><category term="spam"/><category term="webapp"/><title type='text'>Dave Briccetti’s Blog</title><subtitle type='html'>I write mostly about my experiences programming and teaching programming to kids. I program with Scala, Java and Python, and I teach with Scratch, Python and Kojo (Scala).</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://briccetti.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://briccetti.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Dave Briccetti</name><uri>http://www.blogger.com/profile/13886920025636517841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>118</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2740216681747553327.post-3892352913380821604</id><published>2016-07-06T16:25:00.002-07:00</published><updated>2016-07-06T16:25:57.098-07:00</updated><title type='text'>Blog Moved to davebsoft.com</title><content type='html'>Hi all. I’ve moved my blog to &lt;a href=&quot;http://davebsoft.com/&quot;&gt;davebsoft.com&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://briccetti.blogspot.com/feeds/3892352913380821604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2740216681747553327/3892352913380821604' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/3892352913380821604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/3892352913380821604'/><link rel='alternate' type='text/html' href='http://briccetti.blogspot.com/2016/07/blog-moved-to-davebsoftcom.html' title='Blog Moved to davebsoft.com'/><author><name>Dave Briccetti</name><uri>http://www.blogger.com/profile/13886920025636517841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2740216681747553327.post-8262392971883906775</id><published>2015-08-08T13:56:00.000-07:00</published><updated>2015-08-08T14:19:22.837-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="adventure"/><category scheme="http://www.blogger.com/atom/ns#" term="flask"/><category scheme="http://www.blogger.com/atom/ns#" term="graphics"/><category scheme="http://www.blogger.com/atom/ns#" term="matplotlib"/><category scheme="http://www.blogger.com/atom/ns#" term="network"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="TCP/IP"/><category scheme="http://www.blogger.com/atom/ns#" term="teaching"/><category scheme="http://www.blogger.com/atom/ns#" term="webapp"/><title type='text'>One of My Best Classes Ever</title><content type='html'>What a great class we just had! Five kids ages 12–14, all of whom had studied some Python (programming language) with me before, met for five mornings for a class called Intermediate Python II. We learned a lot, and had our share of fun and silliness. During breaks, in my front yard, we threw water balloons or fired them with a slingshot, and played funny animal videos, like a sheep that screams like a human. Here are some of the things we learned.&lt;br /&gt;
&lt;h3&gt;
Simple Webapps and Clients&lt;/h3&gt;
&lt;div&gt;
Using two Python packages, Flask and Requests, we made webapps and client programs to access those webapps (in addition to using a web browser as a client). Some of the kids wrote joke servers—webapps that deliver a random joke when someone connects to, for example,&amp;nbsp;http://192.168.1.128:8080/joke. With our client programs we fetched jokes from each other’s computers. Then we added loops to fetch jokes as fast as possible, learning about denial of service (DOS) attacks in the process, as well as countermeasures like delaying after each request, and blocking requests from specific users and returning messages like “Access denied!”. The kids really enjoyed this! (I made it very clear that DOS attacks were to be done only in isolated environments among willing participants, and not on the Internet.)&lt;/div&gt;
&lt;h3&gt;
Networking Tools&lt;/h3&gt;
&lt;div&gt;
We learned how to use tools like ping, netstat, ifconfig/ipconfig, traceroute/tracert, and telnet. We watched parts of a hilarious 1.5 million hits video by an enthusiastic but clueless young man who made the incredible claim that traceroute (tracert on Windows), which he called “tracer-tee”, could give you the IP addresses of everyone connected to Google right now. One of my students read the comments and saw one like, “If you represent the next generation of network attackers, the next generation of security experts can chill.”&lt;/div&gt;
&lt;h3&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwlW6pEKT7sJTCQVJD1SWgolhPPbcLzCtUBtr5jbN87HGHB1_YtZI_JXPVMXJyv5gxd5RDe9vNScrADTgS-tC9OyFFcMwkwZlo2Sj_pBDXs68bwpjPpwBaVJJ0j46v1-v5BjEBe4Bq5-qM/s1600/heightsweights.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;247&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwlW6pEKT7sJTCQVJD1SWgolhPPbcLzCtUBtr5jbN87HGHB1_YtZI_JXPVMXJyv5gxd5RDe9vNScrADTgS-tC9OyFFcMwkwZlo2Sj_pBDXs68bwpjPpwBaVJJ0j46v1-v5BjEBe4Bq5-qM/s320/heightsweights.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;Scatter Plot with matplotlib&lt;/h3&gt;
There’s a package for Python called matplotlib that makes nice plots like this surface plot of heights and weights by age. We made ours with the kids’ actual data, and later I changed it to use the made-up data you see here. You can see &lt;a href=&quot;https://github.com/dcbriccetti/python-lessons/blob/master/Plotting/heightage.py&quot;&gt;the program&lt;/a&gt; if you like.&lt;br /&gt;
&lt;h3&gt;
Stroop Test in Processing&lt;/h3&gt;
&lt;div&gt;
Processing[.org] is a great tool for making animated art and graphics with a program. We did quite a bit with it, including making a Stroop Test. The Stroop Test presents words, like red, green, and blue, drawn in a different color from the color the word spells. Here’s an example: &lt;span style=&quot;color: lime;&quot;&gt;Red&lt;/span&gt;. You’re supposed to say “green” when you see that.&lt;/div&gt;
&lt;h3&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFeWL5dsvnv3Go4DZahoFxe7bhvlNhl3_qg1lznGRFBU5Y8bG0u8CqpWkQBd5_QJI4XY-rlGsXyWFAi6dLXwCsgtBvsy0Ae8Wov51m7P-dS0WNYY0EycfZVtdrqAEdA52RyXpzg7HzwcxO/s1600/weatherplot.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;155&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFeWL5dsvnv3Go4DZahoFxe7bhvlNhl3_qg1lznGRFBU5Y8bG0u8CqpWkQBd5_QJI4XY-rlGsXyWFAi6dLXwCsgtBvsy0Ae8Wov51m7P-dS0WNYY0EycfZVtdrqAEdA52RyXpzg7HzwcxO/s200/weatherplot.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;Plotting Current Weather&lt;/h3&gt;
&lt;div&gt;
We learned to make web services requests from our Python programs to places like openweathermap.org, and then plot the results.&amp;nbsp;&lt;/div&gt;
&lt;h3&gt;
Spelling Checker&lt;/h3&gt;
&lt;div&gt;
We downloaded a file of over 50,000 correctly spelled words and wrote a program to read the file, load the words into a set, and use the set to identify misspelled words in text entered by the user.&lt;/div&gt;
&lt;h3&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-QQg4dKjen65kSKDKpD47ICjopPGDzShNAhih_9FjvtkjEvHdUQfAu7yjoVW_pVbAC6jUMNzoDF9XklQn5uBTAAKypAA67KaJT2QCxaOVvMWLMw6-8GfosENHXHKsL4bdceZ64H-7yf_Q/s1600/webadvent.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-QQg4dKjen65kSKDKpD47ICjopPGDzShNAhih_9FjvtkjEvHdUQfAu7yjoVW_pVbAC6jUMNzoDF9XklQn5uBTAAKypAA67KaJT2QCxaOVvMWLMw6-8GfosENHXHKsL4bdceZ64H-7yf_Q/s200/webadvent.png&quot; width=&quot;154&quot; /&gt;&lt;/a&gt;Adventure Game in a Webapp&lt;/h3&gt;
&lt;div&gt;
I gave the kids an &lt;a href=&quot;https://github.com/dcbriccetti/python-lessons/tree/master/Web/adventweb&quot;&gt;example&lt;/a&gt; adventure game in a webapp, and they set to work adding their own places and pictures. I recommended that if they weren’t creating their own images, they go to&amp;nbsp;search.creativecommons.org to find Creative Commons–licensed images. We ran out of time before we could add audio. One of the students wants to add a cliff to the game, and when the player falls off the cliff, the game plays the sheep scream.&amp;nbsp;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://briccetti.blogspot.com/feeds/8262392971883906775/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2740216681747553327/8262392971883906775' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/8262392971883906775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/8262392971883906775'/><link rel='alternate' type='text/html' href='http://briccetti.blogspot.com/2015/08/one-of-my-best-classes-ever.html' title='One of My Best Classes Ever'/><author><name>Dave Briccetti</name><uri>http://www.blogger.com/profile/13886920025636517841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwlW6pEKT7sJTCQVJD1SWgolhPPbcLzCtUBtr5jbN87HGHB1_YtZI_JXPVMXJyv5gxd5RDe9vNScrADTgS-tC9OyFFcMwkwZlo2Sj_pBDXs68bwpjPpwBaVJJ0j46v1-v5BjEBe4Bq5-qM/s72-c/heightsweights.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2740216681747553327.post-445620272469996652</id><published>2015-02-12T22:30:00.001-08:00</published><updated>2015-02-12T23:17:55.053-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="College for Kids"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="teaching"/><title type='text'>23 Summers at DVC College for Kids</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsI1hJE6wZF9usIBx6wKpFPIqIjkE2uRGArJVJViC_bZ4AcRAPfHCTPaWJatc53j2U1yFIbPJYdhZKezl6-pvTHDSHmLy9nVRwhRvbjZkUe601TjG4f11jxD-Rt90rmT6bvFVpH4mkfMbA/s1600/Screen+Shot+2015-02-12+at+11.15.36+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsI1hJE6wZF9usIBx6wKpFPIqIjkE2uRGArJVJViC_bZ4AcRAPfHCTPaWJatc53j2U1yFIbPJYdhZKezl6-pvTHDSHmLy9nVRwhRvbjZkUe601TjG4f11jxD-Rt90rmT6bvFVpH4mkfMbA/s1600/Screen+Shot+2015-02-12+at+11.15.36+PM.png&quot; height=&quot;356&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
This chart shows the highlights of my 23 summers teaching programming at College for Kids at Diablo Valley College. &lt;b&gt;2014 was my last&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
It shows what I taught, who my assistants were (please let me know of any mistakes), and who some of the special guests were.&lt;br /&gt;
&lt;br /&gt;
During all but one of these summers, I had the pleasure of working with Director Helen Sinclair. She was wonderful. She left the program after 2013.&lt;br /&gt;
&lt;br /&gt;
I have many fond memories of wonderful students, assistants and guests.&lt;br /&gt;
&lt;br /&gt;
Now I’m focusing entirely on &lt;a href=&quot;http://davebsoft.com/programming-for-kids&quot;&gt;classes through my own company&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://briccetti.blogspot.com/feeds/445620272469996652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2740216681747553327/445620272469996652' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/445620272469996652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/445620272469996652'/><link rel='alternate' type='text/html' href='http://briccetti.blogspot.com/2015/02/23-summers-at-dvc-college-for-kids.html' title='23 Summers at DVC College for Kids'/><author><name>Dave Briccetti</name><uri>http://www.blogger.com/profile/13886920025636517841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsI1hJE6wZF9usIBx6wKpFPIqIjkE2uRGArJVJViC_bZ4AcRAPfHCTPaWJatc53j2U1yFIbPJYdhZKezl6-pvTHDSHmLy9nVRwhRvbjZkUe601TjG4f11jxD-Rt90rmT6bvFVpH4mkfMbA/s72-c/Screen+Shot+2015-02-12+at+11.15.36+PM.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2740216681747553327.post-7351711671678840827</id><published>2014-11-10T10:46:00.000-08:00</published><updated>2014-11-10T10:47:41.356-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Arduino"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="teaching"/><title type='text'>Teaching Arduino to Kids</title><content type='html'>I’ve taught programming to kids for decades, and recently I’ve gotten interested in learning and teaching about &lt;a href=&quot;http://arduino.cc/&quot;&gt;Arduinos&lt;/a&gt;. My students and I love having our computer programs sense and change the real world, using temperature, light, sound, pressure, distance, and infrared energy sensors; and with visual, audio, and mechanical outputs. We recently did a &lt;a href=&quot;http://www.meetup.com/Young-Programmers/events/215328912/&quot;&gt;project with pumpkins&lt;/a&gt; that blink their lights faster as trick-or-treaters approach. (I took some &lt;a href=&quot;https://secure.flickr.com/photos/dcbriccetti/sets/72157649086409581/&quot;&gt;pictures and video&lt;/a&gt;.)&lt;br /&gt;
&lt;br /&gt;
Yesterday I discovered that there are many problems that I don’t know how to solve. I had a class of three students. One boy had a Lenovo computer running Windows 8, and we couldn’t get the Arduino software to let us select the serial port to use. The Tools -&amp;gt; Serial Port menu item was disabled. I don’t know enough about that hardware and OS to solve such a problem, and my web searches yielded nothing useful.&lt;br /&gt;
&lt;br /&gt;
Another student brought “Arduino” hardware in the form of a &lt;a href=&quot;http://littlebits.cc/bits/arduino&quot;&gt;LittleBits&lt;/a&gt; device, which I had never heard of. When trying to send a program to it, first we kept getting messages about the serial port being in use. Somehow we got past that, but then didn’t know what board settings to use (which type of Arduino the LittleBits device is compatible with). Under the pressure of the classroom environment, the student, his dad and I searched but couldn’t find the setting.&lt;br /&gt;
&lt;br /&gt;
The first student was stuck and frustrated and went home early. Eventually I loaned one of my Arduino Unos to the second student and he became productive and happy. Everything went smoothly for the third boy, who made two projects from an Arduino &lt;a href=&quot;http://arduino.cc/en/Main/ArduinoStarterKit&quot;&gt;starter kit&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I’m tempted to stick with what I know best, software: Scratch, Tynker, Python, Kojo, Scala, JavaScript, etc. But eventually I hope to learn the things that can go wrong and how to fix them, because interfacing with the real world is great fun.</content><link rel='replies' type='application/atom+xml' href='http://briccetti.blogspot.com/feeds/7351711671678840827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2740216681747553327/7351711671678840827' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/7351711671678840827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/7351711671678840827'/><link rel='alternate' type='text/html' href='http://briccetti.blogspot.com/2014/11/teaching-arduino-to-kids.html' title='Teaching Arduino to Kids'/><author><name>Dave Briccetti</name><uri>http://www.blogger.com/profile/13886920025636517841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2740216681747553327.post-5393531853688875862</id><published>2013-01-24T09:56:00.000-08:00</published><updated>2013-01-24T09:56:03.115-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="actors"/><category scheme="http://www.blogger.com/atom/ns#" term="Akka"/><category scheme="http://www.blogger.com/atom/ns#" term="Scala"/><title type='text'>Actors, Exceptions and Either[failure, success]</title><content type='html'>Slowly but surely, I am learning the best functional Scala practices. For example, &lt;a href=&quot;https://twitter.com/@psnively&quot;&gt;Paul Snively&lt;/a&gt; taught me to have functions return Either[failure, success] rather than throw exceptions.&lt;br /&gt;
&lt;br /&gt;
Last night, at &lt;a href=&quot;http://typesafe.com/&quot;&gt;Typesafe&lt;/a&gt;’s &lt;a href=&quot;https://twitter.com/@jamie_allen&quot;&gt;Jamie Allen&lt;/a&gt;’s &lt;a href=&quot;http://www.meetup.com/eastbayjug/events/93403162/&quot;&gt;Effective Actors talk&lt;/a&gt; at East Bay Java User Group, Jamie said that the &lt;a href=&quot;http://akka.io/&quot;&gt;Akka&lt;/a&gt; actor framework communicates errors with exceptions. I raised my hand and told everyone that Paul Snively had encouraged me to use Either to communicate errors, and that I was surprised that Akka didn’t do it this way. Jamie explained why, and I sort of understand, and we were both wondering what Paul would say about it.&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://briccetti.blogspot.com/feeds/5393531853688875862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2740216681747553327/5393531853688875862' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/5393531853688875862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/5393531853688875862'/><link rel='alternate' type='text/html' href='http://briccetti.blogspot.com/2013/01/actors-exceptions-and-eitherfailure.html' title='Actors, Exceptions and Either[failure, success]'/><author><name>Dave Briccetti</name><uri>http://www.blogger.com/profile/13886920025636517841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2740216681747553327.post-8406535033484560134</id><published>2013-01-15T22:27:00.000-08:00</published><updated>2013-01-15T22:27:38.466-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="computer history"/><category scheme="http://www.blogger.com/atom/ns#" term="hackthefuture"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="robotics"/><category scheme="http://www.blogger.com/atom/ns#" term="Scratch"/><category scheme="http://www.blogger.com/atom/ns#" term="teaching"/><title type='text'>Hack the Future 6</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4CHXSxDz-P-F7pN5P5i9MeWnSpflBMgG7geIAAo7kiBT4Vvoal7UKTJsPHgR8-FkMlNDrQZwceCe7_aHyiJsk5Zm0B5hvRvHvgP81m_QFfUG1Tc9_GqmOMootviku0-omFzts6sS4VHzQ/s1600/hf1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4CHXSxDz-P-F7pN5P5i9MeWnSpflBMgG7geIAAo7kiBT4Vvoal7UKTJsPHgR8-FkMlNDrQZwceCe7_aHyiJsk5Zm0B5hvRvHvgP81m_QFfUG1Tc9_GqmOMootviku0-omFzts6sS4VHzQ/s320/hf1.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
I’ve discovered something really great! &lt;a href=&quot;http://www.hackthefuture.org/&quot;&gt;Hack the Future&lt;/a&gt;. It’s like a &lt;a href=&quot;http://www.devhouse.org/&quot;&gt;SuperHappyDevHouse&lt;/a&gt; for kids!&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://hackthefuture6.eventbrite.com/&quot;&gt;Hack the Future 6&lt;/a&gt;&amp;nbsp;just happened, at&amp;nbsp;&lt;a href=&quot;http://www.thetech.org/&quot;&gt;The Tech Museum of Innovation&lt;/a&gt;&amp;nbsp;in San Jose.&lt;br /&gt;
&lt;br /&gt;
Most of my work with kids is either in a classroom and computer lab setting, or one on one with private students. This was a whole new experience for me.&lt;br /&gt;
&lt;br /&gt;
In the picture you see groups of kids sitting at stations with mentors, learning things like:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;making a web page&lt;/li&gt;
&lt;li&gt;multiuser dungeon programming&lt;/li&gt;
&lt;li&gt;soldering&lt;/li&gt;
&lt;li&gt;programming large robots&lt;/li&gt;
&lt;li&gt;3d printing&lt;/li&gt;
&lt;li&gt;3d game programming&lt;/li&gt;
&lt;li&gt;entrepreneurism&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
The mentors are a mix of young and old, all eager to share their enthusiasm for programming and hacking. Atari Pong creator &lt;a href=&quot;http://en.wikipedia.org/wiki/Al_Alcorn&quot;&gt;Al Alcorn&lt;/a&gt; himself teaches soldering. Personal computer pioneer &lt;a href=&quot;http://en.wikipedia.org/wiki/Lee_Felsenstein&quot;&gt;Lee Felselstein&lt;/a&gt; teaches electronics.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7dhVA53F3QDhv3-xjaTybPVtVMdCJAuG330oqdpBa3OJDOimqMKNMZjJdD5g030VJpUfveh3rXyrroIRkzS93No-oRbacSy3d2weVEoIimSulq0mssNbiWo1NJbGYgS-3D5qWN-k1NAYF/s1600/hf2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;215&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7dhVA53F3QDhv3-xjaTybPVtVMdCJAuG330oqdpBa3OJDOimqMKNMZjJdD5g030VJpUfveh3rXyrroIRkzS93No-oRbacSy3d2weVEoIimSulq0mssNbiWo1NJbGYgS-3D5qWN-k1NAYF/s320/hf2.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
I was a mentor as well. I had planned to float around and get the hang of things, but as it turned out I filled in for someone teaching Scratch. I’m here in this picture on the right.&lt;br /&gt;
&lt;br /&gt;
This was a really well-run event, and the kids clearly had a great time. Count me in for next time!</content><link rel='replies' type='application/atom+xml' href='http://briccetti.blogspot.com/feeds/8406535033484560134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2740216681747553327/8406535033484560134' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/8406535033484560134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/8406535033484560134'/><link rel='alternate' type='text/html' href='http://briccetti.blogspot.com/2013/01/hack-future-6.html' title='Hack the Future 6'/><author><name>Dave Briccetti</name><uri>http://www.blogger.com/profile/13886920025636517841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4CHXSxDz-P-F7pN5P5i9MeWnSpflBMgG7geIAAo7kiBT4Vvoal7UKTJsPHgR8-FkMlNDrQZwceCe7_aHyiJsk5Zm0B5hvRvHvgP81m_QFfUG1Tc9_GqmOMootviku0-omFzts6sS4VHzQ/s72-c/hf1.jpg" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>The Tech Museum, 201 South Market Street, San Jose, CA 95113, USA</georss:featurename><georss:point>37.331629 -121.89012639999999</georss:point><georss:box>11.8095945 -163.19872039999998 62.853663499999996 -80.581532399999986</georss:box></entry><entry><id>tag:blogger.com,1999:blog-2740216681747553327.post-4071559122959166273</id><published>2011-11-22T00:34:00.000-08:00</published><updated>2011-11-22T00:41:38.467-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AI class"/><category scheme="http://www.blogger.com/atom/ns#" term="Scala"/><title type='text'>AI Class Hidden Markov Chain Scala Solution</title><content type='html'>I just took my Stanford Artificial Intelligence class midterm and got 98%. I missed one part of one problem. The problems we do are somewhat complicated and there are many opportunities to make mistakes. I was astounded that I got over 80%, doing all the problems by hand, with a calculator and a spreadsheet.&lt;br /&gt;
&lt;br /&gt;
It took me many hours to review the material and take the test. I realized while taking the test that I should have encoded the procedures for solving the various types of problems (probability, Bayes Networks, Markov Decision Processes and the like) into computer programs. Then I could have simply run those programs given the data values in the test and produced very likely correct results. I will do this from now on. Let me start with a solution for solving a Hidden Markov Chain problem.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguj_7grE3WYn5ezi_JEeBEJcn-IqcRNOK8YzfFYiz9oPKoRo8krj_pezEqw91ZHMpLQ8MySjTcI2ABvEsicYuguC90H6bvgW9wA0G9J2-6tekQZiqNeE8O97h5Pqy0FWqABNHBID3I1rVB/s1600/hidden+markov+chain.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguj_7grE3WYn5ezi_JEeBEJcn-IqcRNOK8YzfFYiz9oPKoRo8krj_pezEqw91ZHMpLQ8MySjTcI2ABvEsicYuguC90H6bvgW9wA0G9J2-6tekQZiqNeE8O97h5Pqy0FWqABNHBID3I1rVB/s1600/hidden+markov+chain.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Given probabilities that a rainy day will follow a sunny day and vice versa, and the starting state, this program produces the correct probabilities that it will rain on the next three days.</content><link rel='replies' type='application/atom+xml' href='http://briccetti.blogspot.com/feeds/4071559122959166273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2740216681747553327/4071559122959166273' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/4071559122959166273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/4071559122959166273'/><link rel='alternate' type='text/html' href='http://briccetti.blogspot.com/2011/11/ai-class-hidden-markov-chain-scala.html' title='AI Class Hidden Markov Chain Scala Solution'/><author><name>Dave Briccetti</name><uri>http://www.blogger.com/profile/13886920025636517841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguj_7grE3WYn5ezi_JEeBEJcn-IqcRNOK8YzfFYiz9oPKoRo8krj_pezEqw91ZHMpLQ8MySjTcI2ABvEsicYuguC90H6bvgW9wA0G9J2-6tekQZiqNeE8O97h5Pqy0FWqABNHBID3I1rVB/s72-c/hidden+markov+chain.png" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2740216681747553327.post-6862253790187673315</id><published>2011-10-09T21:56:00.000-07:00</published><updated>2011-10-09T21:56:44.125-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Kojo"/><category scheme="http://www.blogger.com/atom/ns#" term="Lift"/><category scheme="http://www.blogger.com/atom/ns#" term="teaching"/><title type='text'>Thanks for the Help Today, Indrajit (Silicon Valley Code Camp, Working on Lift)</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhr3iEp20tCA-R-aw1JYLCHsfqK1yjCxSgCiMp75ZYhiffs6cUL2EgTy0k3TkGJsxWp-VP8n1sBziRzytAFEWZ1PBc7vRKvA_gT0g5RmE2vvfn0RE8mx5NNLqTKZVCgQMpGf9FXvM3zdnpj/s1600/Indrajit+and+Bric.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;191&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhr3iEp20tCA-R-aw1JYLCHsfqK1yjCxSgCiMp75ZYhiffs6cUL2EgTy0k3TkGJsxWp-VP8n1sBziRzytAFEWZ1PBc7vRKvA_gT0g5RmE2vvfn0RE8mx5NNLqTKZVCgQMpGf9FXvM3zdnpj/s320/Indrajit+and+Bric.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
I spent the day today at Silicon Valley Code Camp with Lift developer &lt;b&gt;Indrajit Raychaudhuri&lt;/b&gt;. First he helped me teach Kojo to a small group of kids. Then we did a talk together on Scala, Lift and TalkingPuffin Web. Then came the best part: We spent the next several hours as you see us here in the picture, with him teaching me how to be a Lift committer. As I took careful notes, he walked me through all the pulling, building, branching, pushing, ticket creating, diffing, and Review Board creating needed to make a change to Lift.</content><link rel='replies' type='application/atom+xml' href='http://briccetti.blogspot.com/feeds/6862253790187673315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2740216681747553327/6862253790187673315' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/6862253790187673315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/6862253790187673315'/><link rel='alternate' type='text/html' href='http://briccetti.blogspot.com/2011/10/thanks-for-help-today-indrajit-silicon.html' title='Thanks for the Help Today, Indrajit (Silicon Valley Code Camp, Working on Lift)'/><author><name>Dave Briccetti</name><uri>http://www.blogger.com/profile/13886920025636517841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhr3iEp20tCA-R-aw1JYLCHsfqK1yjCxSgCiMp75ZYhiffs6cUL2EgTy0k3TkGJsxWp-VP8n1sBziRzytAFEWZ1PBc7vRKvA_gT0g5RmE2vvfn0RE8mx5NNLqTKZVCgQMpGf9FXvM3zdnpj/s72-c/Indrajit+and+Bric.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2740216681747553327.post-658372859205247916</id><published>2011-10-08T13:18:00.000-07:00</published><updated>2011-10-08T13:18:54.891-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Kojo"/><category scheme="http://www.blogger.com/atom/ns#" term="Scala"/><title type='text'>Interesting Scala/Kojo/Lift People Join Me at Silicon Valley Code Camp</title><content type='html'>What fun it is to be in the Scala community, and to know many nice and interesting people!&lt;br /&gt;
&lt;br /&gt;
At the last minute, while preparing for my Kojo talk for kids at Silicon Valley Code Camp, I emailed Kojo creator &lt;b&gt;Lalit Pant&lt;/b&gt; to see if he wanted to say hello from India to my classroom of 4th to 12th graders by videoconference, and he wrote back with an enthusiastic “Yes!”&lt;br /&gt;
&lt;br /&gt;
Once again, &lt;b&gt;Ramnivas Laddad&lt;/b&gt; and his talented programming son &lt;b&gt;Shadaj&lt;/b&gt; will help me teach the kids. &lt;br /&gt;
&lt;br /&gt;
While planning my “Talking Puffin Web: A Scala/Lift Webapp” talk, I thought, why not ask super Lift committer &lt;b&gt;Indrajit Raychaudhuri&lt;/b&gt;, who is in the Bay Area for JavaOne, to share the stage with me and introduce Scala and Lift. He was very pleased to accept!&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.siliconvalley-codecamp.com/Sessions.aspx?ForceSortBySessionTime=true&amp;amp;AttendeeId=1078&quot;&gt;Both classes&lt;/a&gt; are Sunday, October 9th, 2011.</content><link rel='replies' type='application/atom+xml' href='http://briccetti.blogspot.com/feeds/658372859205247916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2740216681747553327/658372859205247916' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/658372859205247916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/658372859205247916'/><link rel='alternate' type='text/html' href='http://briccetti.blogspot.com/2011/10/interesting-scalakojolift-people-join.html' title='Interesting Scala/Kojo/Lift People Join Me at Silicon Valley Code Camp'/><author><name>Dave Briccetti</name><uri>http://www.blogger.com/profile/13886920025636517841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2740216681747553327.post-8399941897174106394</id><published>2011-09-26T17:47:00.000-07:00</published><updated>2011-09-26T17:51:01.571-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="math"/><category scheme="http://www.blogger.com/atom/ns#" term="Scala"/><title type='text'>Practicing Math (Regression Line) with Scala</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.youtube.com/watch?v=nXFL8IZZJcg&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;229&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDWAhL8Zmf3qVpDjg8WWf-dLRZyXa9RiuTvD9Rd9mcpylOb0-SiAfMXEfXFwQaiF3w99MjsnO8dtuCc5SMiT04nlbhi_0onzD1wGxwNiTr36tWk9OMVqtm9D8FTtOrLD-SBBu2S6nNvV2x/s320/Regression+Line+Calculation+in+Scala+-+YouTube.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
As you may know, I am taking Stanford’s online &lt;a href=&quot;http://www.ai-class.com/&quot;&gt;Artificial Intelligence Course&lt;/a&gt; taught by Sebastian Thrun and Peter Norvig. To prepare myself I am learning more math. The &lt;a href=&quot;http://www.khanacademy.org/&quot;&gt;Khan Academy&lt;/a&gt; videos have been a huge help. I learned how to find the straight line that best fits a set of given points, and then played around with the calculation in Scala. I made a &lt;a href=&quot;http://www.youtube.com/watch?v=nXFL8IZZJcg&quot;&gt;video showing what I did&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://briccetti.blogspot.com/feeds/8399941897174106394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2740216681747553327/8399941897174106394' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/8399941897174106394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/8399941897174106394'/><link rel='alternate' type='text/html' href='http://briccetti.blogspot.com/2011/09/as-you-may-know-i-am-taking-stanfords.html' title='Practicing Math (Regression Line) with Scala'/><author><name>Dave Briccetti</name><uri>http://www.blogger.com/profile/13886920025636517841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDWAhL8Zmf3qVpDjg8WWf-dLRZyXa9RiuTvD9Rd9mcpylOb0-SiAfMXEfXFwQaiF3w99MjsnO8dtuCc5SMiT04nlbhi_0onzD1wGxwNiTr36tWk9OMVqtm9D8FTtOrLD-SBBu2S6nNvV2x/s72-c/Regression+Line+Calculation+in+Scala+-+YouTube.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2740216681747553327.post-6559348559661547813</id><published>2011-09-16T17:19:00.000-07:00</published><updated>2011-09-16T17:21:26.704-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Scala"/><title type='text'>Visualizing List.scala’s Reverse Method</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW-WSinpU1RX4lIkyTeORUfSA2_8lUEvemZPUgV8FngpP1RVFN7VRohAPUhRLohxXgDw7uJ2C2TOscM41qHIAx4InOYPzTQLt3wuLmagcPqG5znLeCkvX5fabPTInfVZgn01WiIIzdRsAb/s1600/reverse-list.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW-WSinpU1RX4lIkyTeORUfSA2_8lUEvemZPUgV8FngpP1RVFN7VRohAPUhRLohxXgDw7uJ2C2TOscM41qHIAx4InOYPzTQLt3wuLmagcPqG5znLeCkvX5fabPTInfVZgn01WiIIzdRsAb/s1600/reverse-list.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
I encountered a list.reverse in one of my Scala projects, and was curious as to how that method in the Scala library worked. So I opened the source code (seen at the top left of the picture) and worked through it in the REPL (Scala interactive environment), diagramming it as I went along. I thought it might be interesting to others.</content><link rel='replies' type='application/atom+xml' href='http://briccetti.blogspot.com/feeds/6559348559661547813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2740216681747553327/6559348559661547813' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/6559348559661547813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/6559348559661547813'/><link rel='alternate' type='text/html' href='http://briccetti.blogspot.com/2011/09/visualizing-listscalas-reverse-method.html' title='Visualizing List.scala’s Reverse Method'/><author><name>Dave Briccetti</name><uri>http://www.blogger.com/profile/13886920025636517841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW-WSinpU1RX4lIkyTeORUfSA2_8lUEvemZPUgV8FngpP1RVFN7VRohAPUhRLohxXgDw7uJ2C2TOscM41qHIAx4InOYPzTQLt3wuLmagcPqG5znLeCkvX5fabPTInfVZgn01WiIIzdRsAb/s72-c/reverse-list.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2740216681747553327.post-2851888030789335390</id><published>2011-07-17T12:14:00.000-07:00</published><updated>2011-07-17T12:14:25.795-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="College for Kids"/><category scheme="http://www.blogger.com/atom/ns#" term="Kojo"/><category scheme="http://www.blogger.com/atom/ns#" term="Scala"/><category scheme="http://www.blogger.com/atom/ns#" term="teaching"/><title type='text'>Kojo Creator Lalit Pant Visited My Classes</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.youtube.com/playlist?list=PLC784DDEA72506602&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;165&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEz3XY5l9FJ_zsZXNzoheUn4Iajxz2R700SXNqWE9GJYB8BQof_RHyYTHXZYTq3rfARpv4TYtZBs_a4BkPF_bNWIxkmZp1PJPyc3-49xlN_wZa5447pWn-9FRvilRju16wXTrgRh7T6v6w/s320/YouTube+-+Broadcast+Yourself..png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;I started teaching with &lt;a href=&quot;http://kogics.net/sf:kojo&quot;&gt;Kojo&lt;/a&gt; this summer, and it has gone very well. Kojo’s creator Lalit Pant was visiting the Bay Area, and he spent an afternoon with my grade 4–10 programming classes at DVC College for Kids. We published a two-part video of one of his presentations, which you can find in my &lt;a href=&quot;http://www.youtube.com/playlist?list=PLC784DDEA72506602&quot;&gt;Kojo playlist&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://briccetti.blogspot.com/feeds/2851888030789335390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2740216681747553327/2851888030789335390' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/2851888030789335390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/2851888030789335390'/><link rel='alternate' type='text/html' href='http://briccetti.blogspot.com/2011/07/kojo-creator-lalit-pant-visited-my.html' title='Kojo Creator Lalit Pant Visited My Classes'/><author><name>Dave Briccetti</name><uri>http://www.blogger.com/profile/13886920025636517841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEz3XY5l9FJ_zsZXNzoheUn4Iajxz2R700SXNqWE9GJYB8BQof_RHyYTHXZYTq3rfARpv4TYtZBs_a4BkPF_bNWIxkmZp1PJPyc3-49xlN_wZa5447pWn-9FRvilRju16wXTrgRh7T6v6w/s72-c/YouTube+-+Broadcast+Yourself..png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2740216681747553327.post-2079719166238278009</id><published>2011-07-12T08:43:00.000-07:00</published><updated>2011-07-12T08:43:05.671-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Scala"/><title type='text'>Using Implicit Conversions to Simplify Using Java APIs</title><content type='html'>At last night’s Bay Area Scala Enthusiasts meeting, Dick Wall shared many excellent tips for effective Scala programming. One that especially interested me was using implicit conversions to simplify the use of Java API calls that require an object that implements an interface such as Runnable, with its single run method. In the Java way, one might write code like this:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; new Timer().schedule(new TimerTask {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; def run() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; println(&quot;Hello&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp; }, 100L)&lt;br /&gt;
&lt;br /&gt;
Wouldn’t it be nicer to supply the code for the TimerTask to run without wrapping it in a run method?&lt;br /&gt;
&lt;br /&gt;
I wrote &lt;a href=&quot;https://gist.github.com/1078092&quot;&gt;an example&lt;/a&gt; based on what I learned from Dick, and then Kris Nuttycombe suggested a refinement in response to &lt;a href=&quot;http://twitter.com/#%21/dcbriccetti/statuses/90791799840444416&quot;&gt;a post of mine&lt;/a&gt; on Twitter.</content><link rel='replies' type='application/atom+xml' href='http://briccetti.blogspot.com/feeds/2079719166238278009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2740216681747553327/2079719166238278009' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/2079719166238278009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/2079719166238278009'/><link rel='alternate' type='text/html' href='http://briccetti.blogspot.com/2011/07/using-implicit-conversions-to-simplify.html' title='Using Implicit Conversions to Simplify Using Java APIs'/><author><name>Dave Briccetti</name><uri>http://www.blogger.com/profile/13886920025636517841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2740216681747553327.post-1310553805929143468</id><published>2011-05-17T00:50:00.000-07:00</published><updated>2011-05-17T08:43:45.189-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="College for Kids"/><category scheme="http://www.blogger.com/atom/ns#" term="Kojo"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="Scala"/><category scheme="http://www.blogger.com/atom/ns#" term="Scratch"/><category scheme="http://www.blogger.com/atom/ns#" term="teaching"/><title type='text'>Kojo (Scala), Python and Scratch for summer teaching</title><content type='html'>This summer at Diablo Valley College &lt;a href=&quot;http://www.dvc.edu/business/parents/college4kids/index.htm&quot;&gt;College for Kids &lt;/a&gt;I will be teaching:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://kogics.net/sf:kojo&quot;&gt;Kojo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://python.org/&quot;&gt;Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://scratch.mit.edu/&quot;&gt;Scratch&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;I am dropping Alice, at least for the time being. Its progress is glacially slow, and I wonder if version 3 will ever release (it’s been several years).&lt;br /&gt;
&lt;br /&gt;
Being in the Scala community I have been aware of Kojo, but hadn’t made plans to teach it until my teaching assistant Ethan Kuefner said he really wanted to use it.&lt;br /&gt;
&lt;br /&gt;
For the Python course I think we’ll drop Pygame, xturtle and the like, and concentrate on Python 3 basics, and steer those students interested in graphics to Kojo.&lt;br /&gt;
&lt;br /&gt;
Scratch will continue as usual, along with GIMP, Google Sketch Up and Inkscape for graphics, and Audacity for sound generation.</content><link rel='replies' type='application/atom+xml' href='http://briccetti.blogspot.com/feeds/1310553805929143468/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2740216681747553327/1310553805929143468' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/1310553805929143468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/1310553805929143468'/><link rel='alternate' type='text/html' href='http://briccetti.blogspot.com/2011/05/koja-scala-python-and-scratch-for.html' title='Kojo (Scala), Python and Scratch for summer teaching'/><author><name>Dave Briccetti</name><uri>http://www.blogger.com/profile/13886920025636517841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2740216681747553327.post-7739084585187068081</id><published>2011-03-18T19:02:00.000-07:00</published><updated>2011-03-18T19:02:55.947-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Scala"/><category scheme="http://www.blogger.com/atom/ns#" term="TalkingPuffin"/><category scheme="http://www.blogger.com/atom/ns#" term="Twitter"/><title type='text'>TalkingPuffin Demo and Code Walkthrough of Link Indirection</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=QQ1MPXuiZzo&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;225&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB0VcJAQCIzUTFAICSfkkG7X-7M6RToyY4y7Hi3zDfYAcNAAEs7jKGqJpfDIqf2DIQK2zNh3rgw7k5Oimq4Lgf8RzawGGLcy_gLQ6qu1t4W3PtouC9FPSPua9UIcrCNmKazNHosQgHARbh/s400/tpuf+unindirection.png&quot; width=&quot;400&quot; /&gt;&lt;span id=&quot;goog_1940752683&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;span id=&quot;goog_1940752684&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;a href=&quot;http://talkingpuffin.org/&quot;&gt;TalkingPuffin&lt;/a&gt; can automatically move past intermediate pages like DZone’s, taking you to the ultimate target of a link you find in a tweet. Here is a video demonstration of the feature, and a walkthrough of the Scala code that implements it.</content><link rel='replies' type='application/atom+xml' href='http://briccetti.blogspot.com/feeds/7739084585187068081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2740216681747553327/7739084585187068081' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/7739084585187068081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/7739084585187068081'/><link rel='alternate' type='text/html' href='http://briccetti.blogspot.com/2011/03/talkingpuffin-demo-and-code-walkthrough.html' title='TalkingPuffin Demo and Code Walkthrough of Link Indirection'/><author><name>Dave Briccetti</name><uri>http://www.blogger.com/profile/13886920025636517841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB0VcJAQCIzUTFAICSfkkG7X-7M6RToyY4y7Hi3zDfYAcNAAEs7jKGqJpfDIqf2DIQK2zNh3rgw7k5Oimq4Lgf8RzawGGLcy_gLQ6qu1t4W3PtouC9FPSPua9UIcrCNmKazNHosQgHARbh/s72-c/tpuf+unindirection.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2740216681747553327.post-4951753268906035000</id><published>2011-03-18T00:47:00.000-07:00</published><updated>2011-03-18T00:47:28.891-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="TalkingPuffin"/><category scheme="http://www.blogger.com/atom/ns#" term="Twitter"/><title type='text'>TalkingPuffin Web Hashtags Analysis</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-3OpqiTd1GR-2ASAwojVINssfdrXZtFsKmnXGxT5oDKCpzytWGMnQFpMk8ZUkhzNwnipHWGeZurHesjbTKJncV-Rr3dRTDM8417zqRAAEdyMUO0PEms6b8yd37B55xQG6zFTn5OEEpHQA/s1600/TalkingPuffin+Hashtag+Frequencies.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;176&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-3OpqiTd1GR-2ASAwojVINssfdrXZtFsKmnXGxT5oDKCpzytWGMnQFpMk8ZUkhzNwnipHWGeZurHesjbTKJncV-Rr3dRTDM8417zqRAAEdyMUO0PEms6b8yd37B55xQG6zFTn5OEEpHQA/s400/TalkingPuffin+Hashtag+Frequencies.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;http://talkingpuffin.org/&quot;&gt;TalkingPuffin Web&lt;/a&gt; now shows hashtags and the number of times each occurs in the set of tweets analyzed.</content><link rel='replies' type='application/atom+xml' href='http://briccetti.blogspot.com/feeds/4951753268906035000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2740216681747553327/4951753268906035000' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/4951753268906035000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/4951753268906035000'/><link rel='alternate' type='text/html' href='http://briccetti.blogspot.com/2011/03/talkingpuffin-web-hashtags-analysis.html' title='TalkingPuffin Web Hashtags Analysis'/><author><name>Dave Briccetti</name><uri>http://www.blogger.com/profile/13886920025636517841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-3OpqiTd1GR-2ASAwojVINssfdrXZtFsKmnXGxT5oDKCpzytWGMnQFpMk8ZUkhzNwnipHWGeZurHesjbTKJncV-Rr3dRTDM8417zqRAAEdyMUO0PEms6b8yd37B55xQG6zFTn5OEEpHQA/s72-c/TalkingPuffin+Hashtag+Frequencies.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2740216681747553327.post-1960294321795672192</id><published>2011-03-15T02:58:00.000-07:00</published><updated>2011-03-15T02:58:28.874-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Scala"/><category scheme="http://www.blogger.com/atom/ns#" term="TalkingPuffin"/><category scheme="http://www.blogger.com/atom/ns#" term="Twitter"/><title type='text'>Screencast from TalkingPuffin Talk at BASE</title><content type='html'>We had a great session at Bay Area Scala Enthusiasts Monday. I presented TalkingPuffin Web, and got some great feedback and code improvements from the audience. I published an &lt;a href=&quot;http://www.youtube.com/view_play_list?p=65817342043EE809&quot;&gt;edited recording&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://briccetti.blogspot.com/feeds/1960294321795672192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2740216681747553327/1960294321795672192' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/1960294321795672192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/1960294321795672192'/><link rel='alternate' type='text/html' href='http://briccetti.blogspot.com/2011/03/screencast-from-talkingpuffin-talk-at.html' title='Screencast from TalkingPuffin Talk at BASE'/><author><name>Dave Briccetti</name><uri>http://www.blogger.com/profile/13886920025636517841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2740216681747553327.post-9000746179883911250</id><published>2011-03-13T20:58:00.000-07:00</published><updated>2011-03-13T20:58:14.280-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Lift"/><category scheme="http://www.blogger.com/atom/ns#" term="Scala"/><category scheme="http://www.blogger.com/atom/ns#" term="TalkingPuffin"/><category scheme="http://www.blogger.com/atom/ns#" term="Twitter"/><title type='text'>Showing TalkingPuffin Web at Bay Area Scala Enthusiasts</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtgEdiH9191ZrtQTw_3vckdfSmLUrQJSDIlafVChB-vQTZsVLvfBJ1l99i8-C_Y6UejHEjDekMT8NSyDfvIrl2O9f8RKXJbXr0r_TJa1Zy0MYsvziP4Bz9NoYyNOaof1R1RzPTm3ahucc3/s1600/TalkingPuffin+Web-1.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;280&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtgEdiH9191ZrtQTw_3vckdfSmLUrQJSDIlafVChB-vQTZsVLvfBJ1l99i8-C_Y6UejHEjDekMT8NSyDfvIrl2O9f8RKXJbXr0r_TJa1Zy0MYsvziP4Bz9NoYyNOaof1R1RzPTm3ahucc3/s400/TalkingPuffin+Web-1.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;On Monday, March 14th, I will show the Scala and Lift code behind &lt;a href=&quot;http://talkingpuffin.org/&quot;&gt;TalkingPuffin Web&lt;/a&gt; (pictured), at &lt;a href=&quot;http://groups.google.com/group/scala-base/browse_frm/thread/3ddcc3d1420d4bf3&quot;&gt;Bay Area Scala Enthusiasts&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://briccetti.blogspot.com/feeds/9000746179883911250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2740216681747553327/9000746179883911250' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/9000746179883911250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/9000746179883911250'/><link rel='alternate' type='text/html' href='http://briccetti.blogspot.com/2011/03/showing-talkingpuffin-web-at-bay-area.html' title='Showing TalkingPuffin Web at Bay Area Scala Enthusiasts'/><author><name>Dave Briccetti</name><uri>http://www.blogger.com/profile/13886920025636517841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtgEdiH9191ZrtQTw_3vckdfSmLUrQJSDIlafVChB-vQTZsVLvfBJ1l99i8-C_Y6UejHEjDekMT8NSyDfvIrl2O9f8RKXJbXr0r_TJa1Zy0MYsvziP4Bz9NoYyNOaof1R1RzPTm3ahucc3/s72-c/TalkingPuffin+Web-1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2740216681747553327.post-4696051695181702599</id><published>2011-03-06T19:22:00.000-08:00</published><updated>2011-03-06T19:22:27.994-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Scala"/><category scheme="http://www.blogger.com/atom/ns#" term="Swing"/><category scheme="http://www.blogger.com/atom/ns#" term="TalkingPuffin"/><category scheme="http://www.blogger.com/atom/ns#" term="Twitter"/><title type='text'>TalkingPuffin Version 1.0 Released</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5MoqzR1KHq5ZrJx-NiIJj_cllSNDiQLUcCrWZ6jVH3JNe9wlZcoLfh6ShAJyM6dbhurewi1UpXhnHURUYriaa0hIAPUSQ41-W0ASXPrjq4CYiAn21slnaB0A6IrzKH3KMojVKVQGB845X/s1600/TalkingPuffin.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5MoqzR1KHq5ZrJx-NiIJj_cllSNDiQLUcCrWZ6jVH3JNe9wlZcoLfh6ShAJyM6dbhurewi1UpXhnHURUYriaa0hIAPUSQ41-W0ASXPrjq4CYiAn21slnaB0A6IrzKH3KMojVKVQGB845X/s1600/TalkingPuffin.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Congratulations and thanks to everyone who has helped with the project. We have a 1.0 release of &lt;a href=&quot;http://talkingpuffin.org/&quot;&gt;TalkingPuffin&lt;/a&gt;!&lt;br /&gt;
&lt;br /&gt;
TalkingPuffin is an open source Twitter client written in the Scala programming language, and running on Java. The desktop application is built with Swing, and the Web application runs on &lt;a href=&quot;http://liftweb.net/&quot;&gt;Lift&lt;/a&gt;. Two of its strengths are filtering and user analysis.</content><link rel='replies' type='application/atom+xml' href='http://briccetti.blogspot.com/feeds/4696051695181702599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2740216681747553327/4696051695181702599' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/4696051695181702599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/4696051695181702599'/><link rel='alternate' type='text/html' href='http://briccetti.blogspot.com/2011/03/talkingpuffin-version-10-released.html' title='TalkingPuffin Version 1.0 Released'/><author><name>Dave Briccetti</name><uri>http://www.blogger.com/profile/13886920025636517841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5MoqzR1KHq5ZrJx-NiIJj_cllSNDiQLUcCrWZ6jVH3JNe9wlZcoLfh6ShAJyM6dbhurewi1UpXhnHURUYriaa0hIAPUSQ41-W0ASXPrjq4CYiAn21slnaB0A6IrzKH3KMojVKVQGB845X/s72-c/TalkingPuffin.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2740216681747553327.post-5218568051921708989</id><published>2011-03-02T01:51:00.000-08:00</published><updated>2011-03-02T01:51:23.109-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><category scheme="http://www.blogger.com/atom/ns#" term="Scala"/><category scheme="http://www.blogger.com/atom/ns#" term="TalkingPuffin"/><category scheme="http://www.blogger.com/atom/ns#" term="Twitter API"/><title type='text'>New TalkingPuffin Web Feature: Tweets Timeline</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheDL9NiTd5bgnKPxi-3EDIjRvW8Yk_ckNv6Ph9Qkx9KqRrWSYW5-fM9gti6M3H-ZZCEMwwYalc0gpBgIXFkTuQZ-oTMkqhz2qDXMH-MJ-7OdymKD03GfuyQL-n-It1cB9NSnWd16D8bbno/s1600/havent+been+on+here+in+forever-1.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;230&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheDL9NiTd5bgnKPxi-3EDIjRvW8Yk_ckNv6Ph9Qkx9KqRrWSYW5-fM9gti6M3H-ZZCEMwwYalc0gpBgIXFkTuQZ-oTMkqhz2qDXMH-MJ-7OdymKD03GfuyQL-n-It1cB9NSnWd16D8bbno/s400/havent+been+on+here+in+forever-1.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;The new &lt;a href=&quot;http://talkingpuffin.org/&quot;&gt;TalkingPuffin&lt;/a&gt; Web app is coming along nicely. The latest feature shows a user’s tweets on a timeline, and lets you move the mouse over them and read them. My motivation for creating the feature was to make it easier to decide whether I want to follow someone I discover. If their tweet density is not too high, and the content is good, I may follow.&lt;br /&gt;
&lt;br /&gt;
The timeline is JavaScript based, using the Flot jQuery plugin. The Web app is created with Scala and Lift, and uses Lift’s Flot widget.&lt;br /&gt;
&lt;br /&gt;
TalkingPuffin is now 6,827 lines of Scala code, in &lt;a href=&quot;https://github.com/dcbriccetti/talking-puffin&quot;&gt;134 source files&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://briccetti.blogspot.com/feeds/5218568051921708989/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2740216681747553327/5218568051921708989' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/5218568051921708989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/5218568051921708989'/><link rel='alternate' type='text/html' href='http://briccetti.blogspot.com/2011/03/new-talkingpuffin-web-feature-tweets.html' title='New TalkingPuffin Web Feature: Tweets Timeline'/><author><name>Dave Briccetti</name><uri>http://www.blogger.com/profile/13886920025636517841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheDL9NiTd5bgnKPxi-3EDIjRvW8Yk_ckNv6Ph9Qkx9KqRrWSYW5-fM9gti6M3H-ZZCEMwwYalc0gpBgIXFkTuQZ-oTMkqhz2qDXMH-MJ-7OdymKD03GfuyQL-n-It1cB9NSnWd16D8bbno/s72-c/havent+been+on+here+in+forever-1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2740216681747553327.post-6799254925400055035</id><published>2011-02-21T18:39:00.000-08:00</published><updated>2011-02-21T18:39:09.660-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Scala"/><category scheme="http://www.blogger.com/atom/ns#" term="TalkingPuffin"/><category scheme="http://www.blogger.com/atom/ns#" term="Twitter"/><title type='text'>TalkingPuffin Version 1.0 Release Candidate 1</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://talkingpuffin.org/&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;366&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhwUrfzv_buz69kwcDs2zR7sDE0qbr0_dXyUK4LYzo9wwFolXhVKi5Bvv5QEoqxAssogNF1vR0OuoHyAcXnQkM3fKCJnVRVdfJyo4kv3maRp5dLCkcrSz-bBNQcCl4OlqFdOo9Y9B_7B1Q/s400/tabbed+pane+ui-2.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Two years ago I created a “Simple Twitter Client” (that was actually the name of it for awhile). I wanted a project for learning Scala, and I wanted to have a Twitter client that I could enhance any way I wanted. Along the way many people helped, and some even contributed code. Some of their Twitter names appear on Github with the &lt;a href=&quot;https://github.com/dcbriccetti/talking-puffin&quot;&gt;source code&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
At long last, I think this project is ready for release, so I now announce &lt;a href=&quot;http://talkingpuffin.org/&quot;&gt;TalkingPuffin&lt;/a&gt; Version 1.0 Release Candidate 1.</content><link rel='replies' type='application/atom+xml' href='http://briccetti.blogspot.com/feeds/6799254925400055035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2740216681747553327/6799254925400055035' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/6799254925400055035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/6799254925400055035'/><link rel='alternate' type='text/html' href='http://briccetti.blogspot.com/2011/02/talkingpuffin-version-10-release.html' title='TalkingPuffin Version 1.0 Release Candidate 1'/><author><name>Dave Briccetti</name><uri>http://www.blogger.com/profile/13886920025636517841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhwUrfzv_buz69kwcDs2zR7sDE0qbr0_dXyUK4LYzo9wwFolXhVKi5Bvv5QEoqxAssogNF1vR0OuoHyAcXnQkM3fKCJnVRVdfJyo4kv3maRp5dLCkcrSz-bBNQcCl4OlqFdOo9Y9B_7B1Q/s72-c/tabbed+pane+ui-2.png" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2740216681747553327.post-4737262806915803875</id><published>2011-02-20T10:48:00.000-08:00</published><updated>2011-02-20T10:48:17.343-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Scala"/><category scheme="http://www.blogger.com/atom/ns#" term="TalkingPuffin"/><category scheme="http://www.blogger.com/atom/ns#" term="Twitter"/><category scheme="http://www.blogger.com/atom/ns#" term="Twitter API"/><title type='text'>TalkingPuffin Code Changes Overview for Twitter4J Conversion</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=BsRkPBtBpok&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;130&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8UVXzmKX7PV__e_5TbWU30KMlBY1RaxWMrbm9l_6YlLOpT92LSvpgvknNzxQHpg66_cbK5nWKDVmNeS4dLNReaO9S91S9scQ4PXteTHK0SvgsRPRRAiUMYnoeSOVoAM4qibPdIEfZD6FX/s200/tpuf-twitter4j.png&quot; width=&quot;200&quot; /&gt;&lt;span id=&quot;goog_1755747806&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;span id=&quot;goog_1755747807&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;a href=&quot;http://talkingpuffin.org/&quot;&gt;TalkingPuffin&lt;/a&gt; now uses &lt;a href=&quot;http://twitter4j.org/&quot;&gt;Twitter4J&lt;/a&gt; to access the Twitter API. &lt;a href=&quot;http://www.youtube.com/watch?v=BsRkPBtBpok&quot;&gt;This video&lt;/a&gt; shows some of the coding changes I made in order to use it.</content><link rel='replies' type='application/atom+xml' href='http://briccetti.blogspot.com/feeds/4737262806915803875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2740216681747553327/4737262806915803875' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/4737262806915803875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/4737262806915803875'/><link rel='alternate' type='text/html' href='http://briccetti.blogspot.com/2011/02/talkingpuffin-code-changes-overview-for.html' title='TalkingPuffin Code Changes Overview for Twitter4J Conversion'/><author><name>Dave Briccetti</name><uri>http://www.blogger.com/profile/13886920025636517841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8UVXzmKX7PV__e_5TbWU30KMlBY1RaxWMrbm9l_6YlLOpT92LSvpgvknNzxQHpg66_cbK5nWKDVmNeS4dLNReaO9S91S9scQ4PXteTHK0SvgsRPRRAiUMYnoeSOVoAM4qibPdIEfZD6FX/s72-c/tpuf-twitter4j.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2740216681747553327.post-607701154980224212</id><published>2011-02-16T14:39:00.000-08:00</published><updated>2011-02-16T14:39:04.938-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Scala"/><category scheme="http://www.blogger.com/atom/ns#" term="TalkingPuffin"/><category scheme="http://www.blogger.com/atom/ns#" term="Twitter"/><title type='text'>TalkingPuffin Coming Back After OAuth Conversion</title><content type='html'>TalkingPuffin, the open source Twitter client written in Scala, is making its way back into service following a delayed conversion to OAuth (the new way that Twitter does client authentication).&lt;br /&gt;
&lt;br /&gt;
Today we made Version 0.80d Development Version (not quite a release candidate) &lt;a href=&quot;http://talkingpuffin.org/&quot;&gt;available online&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I am very excited to be using TalkingPuffin again, as those of you who follow &lt;a href=&quot;http://twitter.com/dcbriccetti&quot;&gt;@dcbriccetti&lt;/a&gt; may have already read. Despite its unrefined—some would say ugly—appearance, it is an extremely powerful tool for filtering and reading tweets in a variety of ways.&lt;br /&gt;
&lt;br /&gt;
As always, I invite other interested Scala developers to contribute to the project, and again thank those now helping and those who have helped in the past.</content><link rel='replies' type='application/atom+xml' href='http://briccetti.blogspot.com/feeds/607701154980224212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2740216681747553327/607701154980224212' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/607701154980224212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/607701154980224212'/><link rel='alternate' type='text/html' href='http://briccetti.blogspot.com/2011/02/talkingpuffin-coming-back-after-oauth.html' title='TalkingPuffin Coming Back After OAuth Conversion'/><author><name>Dave Briccetti</name><uri>http://www.blogger.com/profile/13886920025636517841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2740216681747553327.post-278829620800082496</id><published>2011-01-24T21:46:00.000-08:00</published><updated>2011-01-24T21:46:01.952-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Scala"/><category scheme="http://www.blogger.com/atom/ns#" term="VMware"/><title type='text'>Using the VI Java API from Scala</title><content type='html'>My primary client these days is VMware. Recently my team has been using the VI Java API to fetch information about running virtual machines in &lt;a href=&quot;http://www.vmware.com/products/vsphere/&quot;&gt;vSphere&lt;/a&gt;. Steve Jin, the author of VI Java, asked me to write a “Hello VM” (sort of a “Hello World” for a virtualized environment) program in Scala.&lt;br /&gt;
&lt;br /&gt;
I sent him some code and he wrote &lt;a href=&quot;http://www.doublecloud.org/2011/01/how-you-can-use-vi-java-api-in-scala-a-quick-sample/&quot;&gt;a blog post&lt;/a&gt; about it. You can find the code in his post. Here it is, formatted nicely. Some smart folks on the #scala channel on IRC reviewed it for me and made some great suggestions. One challenge was wrapping the searchManagedEntities call (line 31)—which can return either null, or an array of zero or more ManagedEntity elements—into something more Scala-like, a List of VirtualMachines.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPzm7dtkgZPBMnrGrFZlpfyjlBJEH_JfAMuQvot_69MD0_OiF_K-gsXhnTYiSvGK_vA7K2hTPG-Pmo9MsjxWWk1M084Kjv4ZmXjxkqBhGpvZTx_GRIXeE8f3n2liFGJPD691D0LeSqecRi/s1600/HelloVM.scala.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;387&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPzm7dtkgZPBMnrGrFZlpfyjlBJEH_JfAMuQvot_69MD0_OiF_K-gsXhnTYiSvGK_vA7K2hTPG-Pmo9MsjxWWk1M084Kjv4ZmXjxkqBhGpvZTx_GRIXeE8f3n2liFGJPD691D0LeSqecRi/s400/HelloVM.scala.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://briccetti.blogspot.com/feeds/278829620800082496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2740216681747553327/278829620800082496' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/278829620800082496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/278829620800082496'/><link rel='alternate' type='text/html' href='http://briccetti.blogspot.com/2011/01/using-vi-java-api-from-scala.html' title='Using the VI Java API from Scala'/><author><name>Dave Briccetti</name><uri>http://www.blogger.com/profile/13886920025636517841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPzm7dtkgZPBMnrGrFZlpfyjlBJEH_JfAMuQvot_69MD0_OiF_K-gsXhnTYiSvGK_vA7K2hTPG-Pmo9MsjxWWk1M084Kjv4ZmXjxkqBhGpvZTx_GRIXeE8f3n2liFGJPD691D0LeSqecRi/s72-c/HelloVM.scala.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2740216681747553327.post-9042087714769570228</id><published>2011-01-23T22:32:00.000-08:00</published><updated>2011-01-24T09:35:22.876-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="probability"/><category scheme="http://www.blogger.com/atom/ns#" term="Scala"/><title type='text'>Dice Throw Simulation in Java and Scala</title><content type='html'>It’s fun from time to time to see what Java programs look like when converted to Scala. This program simulates throwing two six-sided dice 200 times, and creates a crude histogram of the results, like this:&lt;br /&gt;
&lt;br /&gt;
2: XXXX&lt;br /&gt;
3: XXXXXXXXXX&lt;br /&gt;
4: XXXXXXXXXXXXXXXXXXXXXX&lt;br /&gt;
5: XXXXXXXXXXXXXXXXXXXXX&lt;br /&gt;
6: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&lt;br /&gt;
7: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&lt;br /&gt;
8: XXXXXXXXXXXXXXXXXXXXXXXXXX&lt;br /&gt;
9: XXXXXXXXXXXXXXXXXXXXX&lt;br /&gt;
10: XXXXXXXXXXXXXX&lt;br /&gt;
11: XXXXXXXXXXXX&lt;br /&gt;
12: XXXX&lt;br /&gt;
&lt;br /&gt;
The Java version is 31 lines, and the Scala version, 18. Some things I notice that make the Scala version shorter:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Methods with only one line can skip the braces, and in fact, can take up just one line (lines 6, and 16–17).&lt;/li&gt;
&lt;li&gt;The histogram bars can be created with the multiplication method (*) (line 17).&lt;/li&gt;
&lt;/ul&gt;[Update: see the comments for much shorter versions of both the Java and the Scala versions.] &lt;br /&gt;
&lt;ul&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtVkFzG3u2EDvwP5v4LKmPJXBINMUuEFfI9c-aWfrsu5J0c9dlCnoPnANDyyZDIN9IZZYJx0b43cDqDE8oUAAy-Nisk0zkRUHM1Uy5ByWoK28YR1sAx_69Wvd3bH5EjMpMgRIhR1VRO7bJ/s1600/throws.java.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtVkFzG3u2EDvwP5v4LKmPJXBINMUuEFfI9c-aWfrsu5J0c9dlCnoPnANDyyZDIN9IZZYJx0b43cDqDE8oUAAy-Nisk0zkRUHM1Uy5ByWoK28YR1sAx_69Wvd3bH5EjMpMgRIhR1VRO7bJ/s400/throws.java.png&quot; width=&quot;322&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo87zlsyhg0uVCIeVtviznMGhdz-eGZq6bcU2iUKEK5P8N0eZzy_DL0P4owmvvpcj2i4w_-hNkfnCi0TLdFYLRIKkDY54zqUdXyvdeRx-gbNTyemG0XISYMRMrn1tioa9GvSPS5YoWXtYv/s1600/throws.scala.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;206&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo87zlsyhg0uVCIeVtviznMGhdz-eGZq6bcU2iUKEK5P8N0eZzy_DL0P4owmvvpcj2i4w_-hNkfnCi0TLdFYLRIKkDY54zqUdXyvdeRx-gbNTyemG0XISYMRMrn1tioa9GvSPS5YoWXtYv/s400/throws.scala.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://briccetti.blogspot.com/feeds/9042087714769570228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2740216681747553327/9042087714769570228' title='22 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/9042087714769570228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2740216681747553327/posts/default/9042087714769570228'/><link rel='alternate' type='text/html' href='http://briccetti.blogspot.com/2011/01/dice-throw-simulation-in-java-and-scala.html' title='Dice Throw Simulation in Java and Scala'/><author><name>Dave Briccetti</name><uri>http://www.blogger.com/profile/13886920025636517841</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtVkFzG3u2EDvwP5v4LKmPJXBINMUuEFfI9c-aWfrsu5J0c9dlCnoPnANDyyZDIN9IZZYJx0b43cDqDE8oUAAy-Nisk0zkRUHM1Uy5ByWoK28YR1sAx_69Wvd3bH5EjMpMgRIhR1VRO7bJ/s72-c/throws.java.png" height="72" width="72"/><thr:total>22</thr:total></entry></feed>