<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" 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" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;Dk4ERns7eCp7ImA9WhBTGUQ.&quot;"><id>tag:blogger.com,1999:blog-6469693320219923273</id><updated>2013-02-16T01:08:27.500-05:00</updated><category term="toolkit" /><category term="suite" /><category term="timhutton" /><category term="ai" /><category term="clojure" /><category term="erlang" /><category term="lipids" /><category term="elizabethwarren" /><category term="datamining" /><category term="ghostinshell" /><category term="gwt" /><category term="elizabeth warren" /><category term="war" /><category term="linesofsource" /><category term="opensocial" /><category term="iphone" /><category term="octanemech" /><category term="intelligence" /><category term="haskell" /><category term="grep" /><category term="thoughts" /><category term="gits" /><category term="javap" /><category term="ast" /><category term="missoni" /><category term="performance" /><category term="eclipse" /><category term="moron" /><category term="wikileaks" /><category term="nupic" /><category term="scheme" /><category term="scala" /><category term="cellularautomata" /><category term="molecules" /><category term="aspie" /><category term="java" /><category term="heap" /><category term="camera" /><category term="engineering" /><category term="toolchain" /><category term="jdk" /><category term="lohan" /><category term="artificialintelligence" /><category term="nks" /><category term="unittesting" /><category term="india" /><category term="lambda" /><category term="django" /><category term="game" /><category term="foxnews" /><category term="obama" /><category term="programd" /><category term="software" /><category term="libertarian" /><category term="dexter" /><category term="asperger's" /><category term="insurance" /><category term="death note" /><category term="power" /><category term="rna" /><category term="decompile" /><category term="j2ee" /><category term="hotspot" /><category term="computing" /><category term="compiler" /><category term="google" /><category term="openjdk" /><category term="numenta" /><category term="weka" /><category term="dragon tattoo" /><category term="benchmark" /><category term="tax cuts" /><category term="trolling" /><category term="alanturing" /><category term="wolfram" /><category term="find" /><category term="opengl" /><category term="mob" /><category term="python" /><category term="aiml" /><category term="artificialchemistry" /><category term="lexer" /><category term="libya" /><category term="declarative" /><category term="bots" /><category term="linux" /><category term="math" /><category term="speed" /><category term="research" /><category term="cygwin" /><category term="programming" /><category term="politics" /><category term="osama" /><category term="lisp" /><category term="googlecode" /><category term="jvm" /><category term="book" /><category term="probiotic" /><category term="dna" /><category term="turing" /><category term="cher" /><category term="euler" /><category term="servers" /><category term="botlist" /><category term="unix" /><category term="healthcare" /><category term="search" /><category term="religion" /><category term="idiot america" /><category term="alife" /><category term="gcc" /><category term="anime" /><category term="jruby" /><category term="parser" /><category term="data" /><category term="profiling" /><title>Berlin Brown and Software Development (study of software development)</title><subtitle type="html">A Blog about Software Development.  Software development is the act of developing a software product.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://berlinbrowndev.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://berlinbrowndev.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Berlin Brown</name><uri>https://plus.google.com/106721302704615680699</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-LJenpITcd6E/AAAAAAAAAAI/AAAAAAAAA3c/NkySR7_V8AI/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>264</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/BerlinBrownAndSoftwareDevelopment" /><feedburner:info uri="berlinbrownandsoftwaredevelopment" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DUQERnwyfCp7ImA9WhBTEkU.&quot;"><id>tag:blogger.com,1999:blog-6469693320219923273.post-7711510850315893960</id><published>2013-02-07T20:35:00.000-05:00</published><updated>2013-02-07T20:35:07.294-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-02-07T20:35:07.294-05:00</app:edited><title>Wolfram's Cellular Automata, A New Kind of Science and Example Squaring Rule (2)</title><content type="html">&lt;a href="http://1.bp.blogspot.com/_syI_yyzTPG8/TSv2pRqWIVI/AAAAAAAAAe8/NDvfZ7k-cis/s1600/image_snow_atlanta.JPG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5560809353895092562" src="http://1.bp.blogspot.com/_syI_yyzTPG8/TSv2pRqWIVI/AAAAAAAAAe8/NDvfZ7k-cis/s400/image_snow_atlanta.JPG" style="cursor: hand; cursor: pointer; display: block; height: 400px; margin: 0px auto 10px; text-align: center; width: 386px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Overview - Playing the Game Of Life&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
When most computer users upload a profile image from their desktop to Facebook's website they don't stop to think about the simple binary math rules that are fundamental to most digital devices.  We realize that 4 gigabytes of RAM is more memory than 512 megabytes but we don't visualize the logic chips that are involved in an &lt;span style="font-weight: bold;"&gt;xor $0x100, eax&lt;/span&gt; operation for a 32-bit CISC processor. Software developers have to consider memory management or how a computer's operating system loads their programs into memory.  They don't normally consider VHDL logic circuit designs, the data paths, arithmetic logic units or the millions of transistors that make up a modern CPU.  Those low-level details have been intentionally hidden from the user application developer.  The modern CPU may have changed dramatically over the last decade but at the heart of early digital computing were simple Boolean operations.  These simple rules were combined together and logic replicated to load programs into memory and then execute.  The rules that control most digital devices are based on elementary Boolean rules.  Cellular automata has a similar bottom-up approach, rules consist of simple programs (as Stephen Wolfram calls them) that apply to a set of cells on a grid.&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/_syI_yyzTPG8/TS0KJBfXFiI/AAAAAAAAAfc/_ViKvRZaOl8/s1600/spi_vhdl_example_output.png"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5561112265007502882" src="http://3.bp.blogspot.com/_syI_yyzTPG8/TS0KJBfXFiI/AAAAAAAAAfc/_ViKvRZaOl8/s400/spi_vhdl_example_output.png" style="cursor: hand; cursor: pointer; display: block; height: 202px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Conway's Game of Life cellular automaton is one of the most prominent examples of cellular automata theory.  The one dimensional program consists of a cell grid typically with several dozen or more rows and similar number of columns.  Each cell on the grid has an on or off Boolean state.  Every cell on the grid survives or dies to the next generation depending on the game of life rules.  If there are too many neighbors surrounding a cell then the cell dies due to overcrowding.  If there is only one neighbor cell, the base cell dies due to under-population.  Activity on a particular cell is not interesting but when you run the entire system for many generations, a group of patterns begin to form.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;More on Conway's Game of Life&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/_syI_yyzTPG8/TSvw3gvLd-I/AAAAAAAAAes/4MitZvmuaL8/s1600/game_of_life_image1.png"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5560803001390299106" src="http://3.bp.blogspot.com/_syI_yyzTPG8/TSvw3gvLd-I/AAAAAAAAAes/4MitZvmuaL8/s400/game_of_life_image1.png" style="cursor: hand; cursor: pointer; display: block; height: 245px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;
&lt;span style="font-size: 11px; font-style: italic;"&gt;Figure: Game of Life Output&lt;/span&gt;&lt;/center&gt;
&lt;br /&gt;
You may notice some common patterns in the figure.  After so many iterations through the game of life rules, only a few cells tend to stay alive.  We started with a large random number of alive cells and over time those cells died off.   In a controlled environment you may begin with carefully placed live cells and monitor the patterns that emerge to model some other natural phenomena.&lt;br /&gt;
&lt;a href="http://4.bp.blogspot.com/_syI_yyzTPG8/TSvx4MjmQCI/AAAAAAAAAe0/bcDZeff1N6Y/s1600/game_of_life_rules.png"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5560804112664510498" src="http://4.bp.blogspot.com/_syI_yyzTPG8/TSvx4MjmQCI/AAAAAAAAAe0/bcDZeff1N6Y/s400/game_of_life_rules.png" style="cursor: hand; cursor: pointer; display: block; height: 295px; margin: 0px auto 10px; text-align: center; width: 395px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;
&lt;span style="font-size: 11px; font-style: italic;"&gt;Figure: Common Game of Life Surviving and Oscillating Patterns&lt;/span&gt;&lt;/center&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;A New Kind of Science&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
The name Stephan Wolfram has been mentioned several times in this post.  He is the founder of Wolfram|Research, his company is known for the popular Mathematica software suite and Wolfram|Alpha knowledge engine.  He did not initially discover cellular automata but recently he has been a prominent figure in its advocacy.  He spent 10 years working on his book, A New Kind of Science.  In the 1300 page tome, he discusses how cellular automata can be applied to every field of science from biology to physics.  NKA is a detailed study of cellular automata programs.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Basic Cellular Automata&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://2.bp.blogspot.com/_syI_yyzTPG8/TSv5J-_9lNI/AAAAAAAAAfM/DKgwmLwnQOA/s1600/ElementaryCA30Rules_750.gif"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5560812114844423378" src="http://2.bp.blogspot.com/_syI_yyzTPG8/TSv5J-_9lNI/AAAAAAAAAfM/DKgwmLwnQOA/s400/ElementaryCA30Rules_750.gif" style="cursor: hand; cursor: pointer; display: block; height: 57px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;
&lt;span style="font-size: 11px; font-style: italic;"&gt;Figure: Wolfram's Elementary CA Rule 30.  Look at 3 bit input and 1 bit output.&lt;/span&gt;&lt;/center&gt;
&lt;br /&gt;
&lt;br /&gt;
The diagram above depicts the rule 30 program (or rule 30 elementary cellular automaton).  There are 8 input states (2 ^ 3) and an output state of one or zero.  If you look at the diagram from left to right.  The first sequence of blocks on the left depict an input state of { 1 1 1 } with an output of 0.  Given input of cells { 1 1 1}, the output will be set to 0.  Subsequently, the next set of blocks consist of an input state of { 1 1 0 } with an output of 0.&lt;br /&gt;
&lt;br /&gt;
Here is python pseudo code for processing rule30 input:&lt;br /&gt;
&lt;pre style="background-color: #f3e9f3; font-size: 11px;"&gt;def rule30(inputCell_0, inputCell_1, inputCell_1): {
  if inputCell_0 == 1 and inputCell_1 == 1 and inputCell_2 == 1
    return 0:
  else if inputCell_0 == 1 and inputCell_1 == 1 and inputCell_2 == 0:
    return 0:
  ...
}
grid = new Grid(100, 100)
grid[row0, col50] = 1 # Enable first cell on row zero
for j until 100:
  for i until 100:
    valsForNextRow[i] = rule30(inputLastRow[i - 1], inputLastRow[i], inputLastRow[i + 1])&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-color: #f3e9f3; font-size: 11px;"&gt;Example of first three cases using a boolean notation:
{ 1 1 1 } -&amp;gt; 0
{ 1 1 0 } -&amp;gt; 0
{ 1 0 1 } -&amp;gt; 0
...
Example of first few cases with Scala programming language:

class CellularAutomataRule extends Rule {
 def rule(inputState:(Int, Int, Int)) : Rules.Output = 
   inputState match {
  case (1, 1, 1) =&amp;gt; 0
  case (1, 1, 0) =&amp;gt; 0
                case (1, 0, 1) =&amp;gt; 0
                case (1, 0, 0) =&amp;gt; 1
                ...                
 }
} // End of Rule&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;
&lt;span style="font-size: 11px; font-style: italic;"&gt;Figure: Scala Example with pattern matching&lt;/span&gt;&lt;/center&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://2.bp.blogspot.com/_syI_yyzTPG8/TSz_BBVz7GI/AAAAAAAAAfU/ZMZmUPpCeio/s1600/input_rules_2.png"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5561100032900590690" src="http://2.bp.blogspot.com/_syI_yyzTPG8/TSz_BBVz7GI/AAAAAAAAAfU/ZMZmUPpCeio/s400/input_rules_2.png" style="cursor: hand; cursor: pointer; display: block; height: 168px; margin: 0px auto 10px; text-align: center; width: 300px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;
&lt;span style="font-size: 11px; font-style: italic;"&gt;Figure: Elementary Automata Grid after several iterations, look at image from top to bottom&lt;/span&gt;&lt;/center&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Cellular Automata and Squaring Application&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;How do you square two numbers?&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
With most popular programming languages you could use infix notation providing an input parameter on the left and an input parameter on the right side of some arithmetic function.  With Java, you might write the following code:&lt;br /&gt;
&lt;pre&gt;int x = 4 * 4;
Output : 16&lt;/pre&gt;
&lt;br /&gt;
The above snippet is valid code used to multiply four times four with a result of sixteen but it does not say much about the native implementation of the multiplication operator.  There are many layers involved with that particular function but they aren't visible to the developer.  Is the function implemented and optimized by the compiler or implemented by the runtime environment?  It is possible that the operating system may cache the result or build an implementation for the arithmetic operation.  Ultimately for most basic integer multiplication or addition, those operations are performed at the hardware level.  So how then does the hardware do it?&lt;br /&gt;
&lt;br /&gt;
In the figure depicted below is an AND gate and truth table, the gate takes two Boolean input values and returns the output AND operation.  If one is entered in input A and zero is entered into input B, then the output C returned by the AND gate is one.  An arithmetic logic unit may perform basic Boolean operations or possibly some form of basic arithmetic.  An ALU may consist of AND, XOR and other similar simple gates combined to ultimately perform basic arithmetic, increment, decrement or jump operations. (Most of my comments focus on older generation basic circuits, modern circuit design may not use such techniques or basic components)&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://1.bp.blogspot.com/_syI_yyzTPG8/TSvgqJWDstI/AAAAAAAAAeM/VjJaQXtTq8I/s1600/and_gate_example.JPG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5560785179586573010" src="http://1.bp.blogspot.com/_syI_yyzTPG8/TSvgqJWDstI/AAAAAAAAAeM/VjJaQXtTq8I/s320/and_gate_example.JPG" style="cursor: hand; cursor: pointer; display: block; height: 115px; margin: 0px auto 10px; text-align: center; width: 246px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;
&lt;span style="font-size: 11px; font-style: italic;"&gt;Figure: Boolean AND Gate, InputA, B and Output&lt;/span&gt;&lt;/center&gt;
&lt;br /&gt;
&lt;br /&gt;
If you start from that basic piece of Java code 4 * 4, there are many levels of software and hardware layers that are involved to implement that operation and then return a result.&lt;br /&gt;
&lt;br /&gt;
I wanted to present basic Boolean arithmetic so that you can see how basic rules can lead to more complex patterns and behavior.  One two input AND gate will generate a Boolean result.  Several million logic circuits may be used to build a complete CPU.  You may already be familiar with the Conway's game of life, an initial grid is created with a random number of initial live cells.  We can use a simple cellular automata program to square two integers use the rules described in Wolfram's A New Kind of Science.  After so many iterations, a common pattern will emerge and that pattern holds the result of N * N.  In our squaring example we started with the input number of enabled cells (N = 4) and after so many iterations a pattern emerged that contained the squaring of the input.  In many of Wolfram's Elementary rules, a binary sequence is used for input and output.  With the general CA squaring rule, an input and output number ranging from 0 to 7 are defined for each cell.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Squaring Rule&lt;/span&gt;&lt;br /&gt;
&lt;a href="http://2.bp.blogspot.com/_syI_yyzTPG8/TSvoIPYQXWI/AAAAAAAAAec/rs5HE89DPY0/s1600/cellular_squaring_automata.png"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5560793393183874402" src="http://2.bp.blogspot.com/_syI_yyzTPG8/TSvoIPYQXWI/AAAAAAAAAec/rs5HE89DPY0/s320/cellular_squaring_automata.png" style="cursor: hand; cursor: pointer; display: block; height: 320px; margin: 0px auto 10px; text-align: center; width: 220px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;
&lt;span style="font-size: 11px; font-style: italic;"&gt;Figure: Applet Visual Output Grid for Squaring Cellular Automata&lt;/span&gt;&lt;/center&gt;
&lt;br /&gt;
&lt;pre style="background-color: #f3f3d1; font-size: 11px;"&gt;CellularAutomaton[{ 
 { 0, Blank[], 3} -&amp;gt; 0, 
 { Blank[], 2, 3} -&amp;gt; 3, 
 { 1, 1, 3 }   -&amp;gt; 4, 
 { Blank[], 1, 4} -&amp;gt; 4, 
 { Alternatives[1, 2], 3, Blank[]} -&amp;gt; 5, 
 { Pattern[$`p, Alternatives[0, 1]], 4, Blank[]} -&amp;gt; 7 - $`p,
 { 7, 2, 6} -&amp;gt; 3, 
 { 7, Blank[], Blank[]} -&amp;gt; 7,  
 { Blank[], 7, Pattern[$`p, Alternatives[1, 2]]} -&amp;gt; $`p,
 { Blank[], Pattern[$`p, Alternatives[5, 6]], Blank[]} -&amp;gt; 7 - $`p,  
 { Alternatives[5, 6], Pattern[$`p, Alternatives[1, 2]], Blank[]} -&amp;gt; 7 - $`p,
 { Alternatives[5, 6], 0, 0} -&amp;gt; 1, 
 { Blank[], Pattern[$`p, Alternatives[1, 2]], Blank[]} -&amp;gt; $`p,
 { Blank[],  Blank[], Blank[]} -&amp;gt; 0}, {
 ...
 Append[Table[1, {$CellContext`n$$}], 3], 0}, 
 Table -&amp;gt; Expression to N
 Append -&amp;gt; Table to 3&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;
&lt;span style="font-size: 11px; font-style: italic;"&gt;Figure: Notebook Source File For Mathematica, General CA Rule for Squaring Automaton&lt;/span&gt;&lt;/center&gt;
&lt;br /&gt;
&lt;br /&gt;
The general rules for the squaring automaton are similar to the rules that were mentioned for the elementary rule30 program. Integer values (range 0 - 7) are used instead of binary inputs and outputs.  The initial row and initial number of cells are represented by the input parameter (N = 4 in our example).&lt;br /&gt;
&lt;pre style="background-color: #f3e9f3; font-size: 11px;"&gt;Example Row: 0 0 0 0 0 3 3 3 3 1 0 0 0 0 &lt;/pre&gt;
&lt;br /&gt;
Besides the first row, the initial grid contains all zeros.  On the next sequence, the CA rule for squaring is run against each cell on the second row.  On the sequence after that, the CA rule is run against the third row and so on until the last row in the grid has been reached.  With a 100 x 100 grid, the output pattern will emerge before row 100 is reached.&lt;br /&gt;
&lt;pre style="background-color: #f3e9f3; font-size: 11px;"&gt;class SquaringRule extends Rules.GeneralRule {
 def ruleId() = 132
 def rule(inputState:Rules.RuleInput) : Rules.Output = 
   inputState match {
  case (0, _, 3) =&amp;gt; 0
  case (_, 2, 3) =&amp;gt; 3
  case (1, 1, 3) =&amp;gt; 4
  case (_, 1, 4) =&amp;gt; 4
  case (1 | 2, 3, _) =&amp;gt; 5
  case (0 | 1, 4, _) =&amp;gt; 7 - inputState._1
  case (7, 2, 6) =&amp;gt; 3
  case (7, _, _) =&amp;gt; 7           
  case (_, 7, 1 | 2) =&amp;gt; inputState._3
  case (_, 5 | 6, _) =&amp;gt; 7 - inputState._2
  case (5 | 6, 1 | 2, _) =&amp;gt; 7 - inputState._2
  case (5 | 6, 0, 0) =&amp;gt; 1
  case (_, 1 | 2, _) =&amp;gt; inputState._2
  case _   =&amp;gt; 0            
 }
} // End of Rule&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;
&lt;span style="font-size: 11px; font-style: italic;"&gt;Figure: Scala Source for Squaring Rule uses Pattern Matching&lt;/span&gt;&lt;/center&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Applied Cellular Automata&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Cellular automata is often used with data compression, cryptography, artificial intelligence, urban planning, financial market modeling, music generation, and 3D terrain generation.  If you are a software engineer, you may have to step back and consider how cellular automata patterns emerge and understand the nature of the dynamic system before looking for a typical software library.  CA is not normally seen in everyday applications.  Consider this when you look at some random pattern, don't think of the phenomenon as a random sequence of events that cannot be replicated, think of the event in terms of a cellular automaton.  Try to imagine the rules that could model that natural behavior.  Modeling seemingly random patterns is an area where cellular automata is being widely used.  Urban planning departments are integrating geographic information systems (GIS) with cellular automata in an attempt to predict growth in an area of a city.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Summary&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
The simple squaring example mentioned in this post merely gives you an overview of a basic cellular automata system.  Scientists, biologists, computer scientists and software engineers want to find better ways to observe relationships and patterns that occur in our world.  Review Stephen Wolfram's A New Kind of Science to give you an idea for what is possible with seemingly simple rules.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Source Code and Applet&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
1. &lt;a href="http://code.google.com/p/doingitwrongnotebook/wiki/CelluarAutomataSquaringApplet"&gt;doingitwrongnotebook/wiki/CelluarAutomataSquaringApplet&lt;/a&gt;&lt;br /&gt;
2. &lt;a href="http://doingitwrongnotebook.googlecode.com/svn/trunk/doingitwrong_phase2/scala2/GameOfLife/src/main/java/org/berlin/automata/squaring/"&gt;SVN source repository directory&lt;/a&gt;&lt;br /&gt;
3. &lt;a href="http://code.google.com/p/ainotebook/wiki/CelluarAutomataApplet"&gt;CelluarAutomataApplet - Test of Elementary Rules&lt;/a&gt;&lt;br /&gt;
4. &lt;a href="http://code.google.com/p/doingitwrongnotebook/wiki/GameOfLifeAppletScala"&gt;Game of Life Applet&lt;/a&gt;&lt;br /&gt;
5. &lt;a href="http://ainotebook.googlecode.com/files/automata_scala1.zip"&gt;Full Download Applet Examples (keywords: Scala, Rule30, Rule190, GameOfLife, Wolfram Squaring Rule)&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/_syI_yyzTPG8/TSv4cdz4MmI/AAAAAAAAAfE/xz7w05JbENU/s1600/cellular_squaring_automata3.png"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5560811332841255522" src="http://3.bp.blogspot.com/_syI_yyzTPG8/TSv4cdz4MmI/AAAAAAAAAfE/xz7w05JbENU/s400/cellular_squaring_automata3.png" style="cursor: hand; cursor: pointer; display: block; height: 400px; margin: 0px auto 10px; text-align: center; width: 255px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;
&lt;span style="font-size: 11px; font-style: italic;"&gt;Figure: Squaring Cellular Automaton Output, Input = 4 (top of grid), Output = 16 (pattern towards the bottom)&lt;/span&gt;&lt;/center&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Resources&lt;/span&gt;&lt;br /&gt;
1. &lt;a href="http://www.wolframscience.com/"&gt;http://www.wolframscience.com/&lt;/a&gt;&lt;br /&gt;
2. &lt;a href="http://www.scala-lang.org/"&gt;http://www.scala-lang.org/ - Scala Programming Language&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
--- Berlin Brown (2012)&lt;img src="http://feeds.feedburner.com/~r/BerlinBrownAndSoftwareDevelopment/~4/QkrLN7Gizls" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://berlinbrowndev.blogspot.com/feeds/7711510850315893960/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6469693320219923273&amp;postID=7711510850315893960" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/7711510850315893960?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/7711510850315893960?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BerlinBrownAndSoftwareDevelopment/~3/QkrLN7Gizls/wolframs-cellular-automata-new-kind-of.html" title="Wolfram's Cellular Automata, A New Kind of Science and Example Squaring Rule (2)" /><author><name>Berlin Brown</name><uri>https://plus.google.com/106721302704615680699</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-LJenpITcd6E/AAAAAAAAAAI/AAAAAAAAA3c/NkySR7_V8AI/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_syI_yyzTPG8/TSv2pRqWIVI/AAAAAAAAAe8/NDvfZ7k-cis/s72-c/image_snow_atlanta.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://berlinbrowndev.blogspot.com/2013/02/wolframs-cellular-automata-new-kind-of.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04NQXk6cSp7ImA9WhNaFU0.&quot;"><id>tag:blogger.com,1999:blog-6469693320219923273.post-472120973938070490</id><published>2013-01-29T18:26:00.002-05:00</published><updated>2013-01-29T18:26:30.719-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-29T18:26:30.719-05:00</app:edited><title>Internals of the OpenJDK - HashMap</title><content type="html">Here is the implementation of HashMap from OpenJDK 6. &amp;nbsp;It is interesting how simple it truly is. &amp;nbsp;Essentially HashMap consists of an array called 'table'. &amp;nbsp;On the 'put' call, we use the hashcode of the key and then call another hash function, then convert that into an index into the array. &amp;nbsp;Place the 'value' object at the index array position.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-u_jpjN-xTIc/UQhacZnMxpI/AAAAAAAAA54/bByMg1wiWdU/s1600/screenshot_hashmap_jdk.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="640" src="http://4.bp.blogspot.com/-u_jpjN-xTIc/UQhacZnMxpI/AAAAAAAAA54/bByMg1wiWdU/s640/screenshot_hashmap_jdk.png" width="606" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;OpenJDK HashMap Implementation&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/BerlinBrownAndSoftwareDevelopment/~4/BhTvzpxGUr4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://berlinbrowndev.blogspot.com/feeds/472120973938070490/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6469693320219923273&amp;postID=472120973938070490" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/472120973938070490?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/472120973938070490?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BerlinBrownAndSoftwareDevelopment/~3/BhTvzpxGUr4/internals-of-openjdk-hashmap.html" title="Internals of the OpenJDK - HashMap" /><author><name>Berlin Brown</name><uri>https://plus.google.com/106721302704615680699</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-LJenpITcd6E/AAAAAAAAAAI/AAAAAAAAA3c/NkySR7_V8AI/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-u_jpjN-xTIc/UQhacZnMxpI/AAAAAAAAA54/bByMg1wiWdU/s72-c/screenshot_hashmap_jdk.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://berlinbrowndev.blogspot.com/2013/01/internals-of-openjdk-hashmap.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkAGSH0yfip7ImA9WhNVEU0.&quot;"><id>tag:blogger.com,1999:blog-6469693320219923273.post-3477124005905677135</id><published>2012-12-21T09:05:00.001-05:00</published><updated>2012-12-21T09:38:49.396-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-12-21T09:38:49.396-05:00</app:edited><title>Basic word frequency analysis</title><content type="html">Here are some interesting terms in the Democratic presidential debate from 2008:&lt;br /&gt;
&lt;br /&gt;
I believe we're at a defining moment in our history. Our nation is at war; our planet is in peril....&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-Xr0UYd7T8jE/UNRsnNPKfAI/AAAAAAAAA4g/WTovu1AbAiQ/s1600/dem_debate_hist.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://3.bp.blogspot.com/-Xr0UYd7T8jE/UNRsnNPKfAI/AAAAAAAAA4g/WTovu1AbAiQ/s640/dem_debate_hist.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
-------------------------------&lt;br /&gt;
&lt;br /&gt;
Total Count of most terms : 9125&lt;br /&gt;
Interesting Word Freq Count: 1952&lt;br /&gt;
-------------------------------&lt;br /&gt;
id=1 ct=112(39.16%) term=think&lt;br /&gt;
id=2 ct=101(35.31%) term=applause&lt;br /&gt;
id=3 ct=97(33.92%) term=clinton&lt;br /&gt;
id=4 ct=97(33.92%) term=people&lt;br /&gt;
id=5 ct=85(29.72%) term=senator&lt;br /&gt;
id=6 ct=66(23.08%) term=health&lt;br /&gt;
id=7 ct=62(21.68%) term=obama&lt;br /&gt;
id=8 ct=56(19.58%) term=care&lt;br /&gt;
id=9 ct=56(19.58%) term=blitzer&lt;br /&gt;
id=10 ct=47(16.43%) term=right&lt;br /&gt;
id=11 ct=44(15.38%) term=president&lt;br /&gt;
id=12 ct=40(13.99%) term=country&lt;br /&gt;
id=13 ct=35(12.24%) term=make&lt;br /&gt;
id=14 ct=34(11.89%) term=plan&lt;br /&gt;
id=15 ct=32(11.19%) term=question&lt;br /&gt;
id=16 ct=30(10.49%) term=believe&lt;br /&gt;
id=17 ct=30(10.49%) term=important&lt;br /&gt;
id=18 ct=28(9.79%) term=issue&lt;br /&gt;
id=19 ct=28(9.79%) term=take&lt;br /&gt;
id=20 ct=27(9.44%) term=time&lt;br /&gt;
id=21 ct=26(9.09%) term=years&lt;br /&gt;
id=22 ct=26(9.09%) term=american&lt;br /&gt;
id=23 ct=25(8.74%) term=first&lt;br /&gt;
id=24 ct=24(8.39%) term=insurance&lt;br /&gt;
id=25 ct=23(8.04%) term=bush&lt;br /&gt;
id=26 ct=23(8.04%) term=part&lt;br /&gt;
id=27 ct=21(7.34%) term=iraq&lt;br /&gt;
id=28 ct=20(6.99%) term=year&lt;br /&gt;
id=29 ct=20(6.99%) term=million&lt;br /&gt;
id=30 ct=19(6.64%) term=need&lt;br /&gt;
id=31 ct=19(6.64%) term=united&lt;br /&gt;
id=32 ct=19(6.64%) term=states&lt;br /&gt;
id=33 ct=18(6.29%) term=over&lt;br /&gt;
id=34 ct=18(6.29%) term=able&lt;br /&gt;
id=35 ct=17(5.94%) term=change&lt;br /&gt;
id=36 ct=17(5.94%) term=immigration&lt;br /&gt;
id=37 ct=17(5.94%) term=trying&lt;br /&gt;
id=38 ct=17(5.94%) term=work&lt;br /&gt;
id=39 ct=17(5.94%) term=clear&lt;br /&gt;
id=40 ct=17(5.94%) term=loo&lt;br /&gt;
&lt;br /&gt;
Contrast this word frequency data with an Obama and Romney debate in 2012:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-1omLatuwbFE/UNRvIpimLSI/AAAAAAAAA44/MldOBRkhiLI/s1600/obama_romney.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://3.bp.blogspot.com/-1omLatuwbFE/UNRvIpimLSI/AAAAAAAAA44/MldOBRkhiLI/s640/obama_romney.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
-------------------------------&lt;br /&gt;
Total Count of most terms : 10361&lt;br /&gt;
Interesting Word Freq Count: 1853&lt;br /&gt;
-------------------------------&lt;br /&gt;
id=1 ct=148(40.33%) term=romney&lt;br /&gt;
id=2 ct=109(29.70%) term=people&lt;br /&gt;
id=3 ct=106(28.88%) term=governor&lt;br /&gt;
id=4 ct=102(27.79%) term=president&lt;br /&gt;
id=5 ct=101(27.52%) term=make&lt;br /&gt;
id=6 ct=89(24.25%) term=obama&lt;br /&gt;
id=7 ct=86(23.43%) term=crowley&lt;br /&gt;
id=8 ct=72(19.62%) term=jobs&lt;br /&gt;
id=9 ct=71(19.35%) term=question&lt;br /&gt;
id=10 ct=66(17.98%) term=years&lt;br /&gt;
id=11 ct=44(11.99%) term=four&lt;br /&gt;
id=12 ct=43(11.72%) term=think&lt;br /&gt;
id=13 ct=41(11.17%) term=percent&lt;br /&gt;
id=14 ct=40(10.90%) term=country&lt;br /&gt;
id=15 ct=40(10.90%) term=energy&lt;br /&gt;
id=16 ct=40(10.90%) term=last&lt;br /&gt;
id=17 ct=35(9.54%) term=economy&lt;br /&gt;
id=18 ct=34(9.26%) term=down&lt;br /&gt;
id=19 ct=31(8.45%) term=right&lt;br /&gt;
id=20 ct=31(8.45%) term=america&lt;br /&gt;
id=21 ct=30(8.17%) term=back&lt;br /&gt;
id=22 ct=28(7.63%) term=women&lt;br /&gt;
id=23 ct=27(7.36%) term=time&lt;br /&gt;
id=24 ct=26(7.08%) term=need&lt;br /&gt;
id=25 ct=26(7.08%) term=believe&lt;br /&gt;
id=26 ct=26(7.08%) term=able&lt;br /&gt;
id=27 ct=26(7.08%) term=good&lt;br /&gt;
id=28 ct=26(7.08%) term=million&lt;br /&gt;
id=29 ct=25(6.81%) term=folks&lt;br /&gt;
id=30 ct=25(6.81%) term=plan&lt;br /&gt;
id=31 ct=24(6.54%) term=year&lt;br /&gt;
id=32 ct=24(6.54%) term=number&lt;br /&gt;
id=33 ct=24(6.54%) term=work&lt;br /&gt;
id=34 ct=23(6.27%) term=cant&lt;br /&gt;
id=35 ct=23(6.27%) term=american&lt;br /&gt;
id=36 ct=23(6.27%) term=done&lt;br /&gt;
id=37 ct=23(6.27%) term=small&lt;br /&gt;
id=38 ct=23(6.27%) term=place&lt;br /&gt;
id=39 ct=23(6.27%) term=part&lt;br /&gt;
id=40 ct=22(5.99%) term=over&lt;br /&gt;
&lt;br /&gt;
And here is the GOP debate:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-fC80_-OzuL4/UNRx5mSmz5I/AAAAAAAAA5I/X7VD_UZLFvg/s1600/gop_debate.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://2.bp.blogspot.com/-fC80_-OzuL4/UNRx5mSmz5I/AAAAAAAAA5I/X7VD_UZLFvg/s640/gop_debate.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------&lt;br /&gt;
Total Count of most terms : 12322&lt;br /&gt;
Interesting Word Freq Count: 2436&lt;br /&gt;
-------------------------------&lt;br /&gt;
id=1 ct=156(35.78%) term=king&lt;br /&gt;
id=2 ct=103(23.62%) term=people&lt;br /&gt;
id=3 ct=97(22.25%) term=right&lt;br /&gt;
id=4 ct=93(21.33%) term=president&lt;br /&gt;
id=5 ct=80(18.35%) term=question&lt;br /&gt;
id=6 ct=74(16.97%) term=states&lt;br /&gt;
id=7 ct=73(16.74%) term=government&lt;br /&gt;
id=8 ct=57(13.07%) term=think&lt;br /&gt;
id=9 ct=52(11.93%) term=need&lt;br /&gt;
id=10 ct=51(11.70%) term=john&lt;br /&gt;
id=11 ct=51(11.70%) term=governor&lt;br /&gt;
id=12 ct=46(10.55%) term=country&lt;br /&gt;
id=13 ct=46(10.55%) term=back&lt;br /&gt;
id=14 ct=44(10.09%) term=united&lt;br /&gt;
id=15 ct=43(9.86%) term=cain&lt;br /&gt;
id=16 ct=43(9.86%) term=take&lt;br /&gt;
id=17 ct=43(9.86%) term=romney&lt;br /&gt;
id=18 ct=42(9.63%) term=hampshire&lt;br /&gt;
id=19 ct=42(9.63%) term=paul&lt;br /&gt;
id=20 ct=42(9.63%) term=first&lt;br /&gt;
id=21 ct=41(9.40%) term=candidates&lt;br /&gt;
id=22 ct=40(9.17%) term=jobs&lt;br /&gt;
id=23 ct=39(8.94%) term=state&lt;br /&gt;
id=24 ct=39(8.94%) term=time&lt;br /&gt;
id=25 ct=39(8.94%) term=federal&lt;br /&gt;
id=26 ct=38(8.72%) term=pawlenty&lt;br /&gt;
id=27 ct=36(8.26%) term=down&lt;br /&gt;
id=28 ct=35(8.03%) term=american&lt;br /&gt;
id=29 ct=34(7.80%) term=believe&lt;br /&gt;
id=30 ct=34(7.80%) term=america&lt;br /&gt;
id=31 ct=34(7.80%) term=economy&lt;br /&gt;
id=32 ct=33(7.57%) term=years&lt;br /&gt;
id=33 ct=32(7.34%) term=obama&lt;br /&gt;
id=34 ct=32(7.34%) term=bachmann&lt;br /&gt;
id=35 ct=32(7.34%) term=applause&lt;br /&gt;
id=36 ct=32(7.34%) term=money&lt;br /&gt;
id=37 ct=31(7.11%) term=issue&lt;br /&gt;
id=38 ct=31(7.11%) term=thank&lt;br /&gt;
id=39 ct=30(6.88%) term=over&lt;br /&gt;
id=40 ct=30(6.88%) term=santorum&lt;br /&gt;
id=41 ct=30(6.88%) term=look&lt;br /&gt;
id=42 ct=29(6.65%) term=program&lt;br /&gt;
id=43 ct=28(6.42%) term=work&lt;br /&gt;
id=44 ct=26(5.96%) term=things&lt;br /&gt;
id=45 ct=26(5.96%) term=care&lt;br /&gt;
id=46 ct=25(5.73%) term=make&lt;br /&gt;
id=47 ct=25(5.73%) term=percent&lt;br /&gt;
id=48 ct=25(5.73%) term=doing&lt;br /&gt;
id=49 ct=24(5.50%) term=obamacare&lt;br /&gt;
id=50 ct=24(5.50%) term=where&lt;br /&gt;
id=51 ct=24(5.50%) term=administration&lt;br /&gt;
id=52 ct=24(5.50%) term=national&lt;br /&gt;
id=53 ct=24(5.50%) term=private&lt;br /&gt;
id=54 ct=24(5.50%) term=other&lt;br /&gt;
id=55 ct=23(5.28%) term=republican&lt;br /&gt;
id=56 ct=23(5.28%) term=break&lt;br /&gt;
id=57 ct=23(5.28%) term=congressman&lt;br /&gt;
id=58 ct=23(5.28%) term=tonight&lt;br /&gt;
id=59 ct=23(5.28%) term=senator&lt;br /&gt;
id=60 ct=23(5.28%) term=questions&lt;br /&gt;
id=61 ct=22(5.05%) term=gingrich&lt;br /&gt;
id=62 ct=22(5.05%) term=issues&lt;br /&gt;
id=63 ct=21(4.82%) term=medicare&lt;br /&gt;
id=64 ct=20(4.59%) term=problem&lt;br /&gt;
id=65 ct=20(4.59%) term=life&lt;br /&gt;
id=66 ct=20(4.59%) term=cant&lt;br /&gt;
id=67 ct=20(4.59%) term=wrong&lt;br /&gt;
id=68 ct=20(4.59%) term=continue&lt;br /&gt;
id=69 ct=20(4.59%) term=party&lt;br /&gt;
id=70 ct=20(4.59%) term=tell&lt;br /&gt;
id=71 ct=20(4.59%) term=done&lt;br /&gt;
id=72 ct=20(4.59%) term=give&lt;br /&gt;
id=73 ct=19(4.36%) term=answer&lt;br /&gt;
id=74 ct=19(4.36%) term=start&lt;br /&gt;
id=75 ct=19(4.36%) term=policy&lt;br /&gt;
id=76 ct=19(4.36%) term=congress&lt;br /&gt;
id=77 ct=19(4.36%) term=last&lt;br /&gt;
id=78 ct=19(4.36%) term=speaker&lt;br /&gt;
id=79 ct=18(4.13%) term=thing&lt;br /&gt;
id=80 ct=18(4.13%) term=plan&lt;br /&gt;
id=81 ct=18(4.13%) term=debate&lt;br /&gt;
id=82 ct=18(4.13%) term=point&lt;br /&gt;
id=83 ct=17(3.90%) term=shouldnt&lt;br /&gt;
id=84 ct=17(3.90%) term=world&lt;br /&gt;
id=85 ct=17(3.90%) term=could&lt;br /&gt;
id=86 ct=17(3.90%) term=bill&lt;br /&gt;
id=87 ct=17(3.90%) term=home&lt;br /&gt;
id=88 ct=17(3.90%) term=little&lt;br /&gt;
id=89 ct=16(3.67%) term=conversation&lt;br /&gt;
id=90 ct=16(3.67%) term=support&lt;br /&gt;
id=91 ct=16(3.67%) term=republicans&lt;br /&gt;
id=92 ct=16(3.67%) term=didnt&lt;br /&gt;
id=93 ct=16(3.67%) term=better&lt;br /&gt;
id=94 ct=16(3.67%) term=maybe&lt;br /&gt;
id=95 ct=16(3.67%) term=keep&lt;br /&gt;
id=96 ct=15(3.44%) term=made&lt;br /&gt;
id=97 ct=15(3.44%) term=year&lt;br /&gt;
id=98 ct=15(3.44%) term=again&lt;br /&gt;
&lt;br /&gt;
Here are several job resumes:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-jPavHjw9UvQ/UNRzo0QDD_I/AAAAAAAAA5Y/14KVMbAhyt4/s1600/resume_hist.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://3.bp.blogspot.com/-jPavHjw9UvQ/UNRzo0QDD_I/AAAAAAAAA5Y/14KVMbAhyt4/s640/resume_hist.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------&lt;br /&gt;
Total Count of most terms : 1967&lt;br /&gt;
Interesting Word Freq Count: 974&lt;br /&gt;
-------------------------------&lt;br /&gt;
id=1 ct=38(50.67%) term=software&lt;br /&gt;
id=2 ct=21(28.00%) term=linux&lt;br /&gt;
id=3 ct=20(26.67%) term=developed&lt;br /&gt;
id=4 ct=20(26.67%) term=using&lt;br /&gt;
id=5 ct=19(25.33%) term=data&lt;br /&gt;
id=6 ct=16(21.33%) term=code&lt;br /&gt;
id=7 ct=14(18.67%) term=experience&lt;br /&gt;
id=8 ct=13(17.33%) term=engineer&lt;br /&gt;
id=9 ct=12(16.00%) term=image&lt;br /&gt;
id=10 ct=12(16.00%) term=computer&lt;br /&gt;
id=11 ct=11(14.67%) term=java&lt;br /&gt;
id=12 ct=10(13.33%) term=programming&lt;br /&gt;
id=13 ct=10(13.33%) term=design&lt;br /&gt;
id=14 ct=10(13.33%) term=windows&lt;br /&gt;
id=15 ct=10(13.33%) term=metrics&lt;br /&gt;
id=16 ct=10(13.33%) term=graphics&lt;br /&gt;
id=17 ct=9(12.00%) term=languages&lt;br /&gt;
id=18 ct=9(12.00%) term=realtime&lt;br /&gt;
id=19 ct=9(12.00%) term=over&lt;br /&gt;
id=20 ct=9(12.00%) term=maintained&lt;br /&gt;
id=21 ct=9(12.00%) term=development&lt;br /&gt;
id=22 ct=8(10.67%) term=developer&lt;br /&gt;
id=23 ct=8(10.67%) term=used&lt;br /&gt;
id=24 ct=8(10.67%) term=algorithms&lt;br /&gt;
id=25 ct=8(10.67%) term=machine&lt;br /&gt;
id=26 ct=7(9.33%) term=processing&lt;br /&gt;
id=27 ct=7(9.33%) term=python&lt;br /&gt;
id=28 ct=7(9.33%) term=team&lt;br /&gt;
id=29 ct=7(9.33%) term=worked&lt;br /&gt;
id=30 ct=7(9.33%) term=helped&lt;br /&gt;
id=31 ct=7(9.33%) term=years&lt;br /&gt;
id=32 ct=7(9.33%) term=university&lt;br /&gt;
id=33 ct=7(9.33%) term=game&lt;br /&gt;
id=34 ct=7(9.33%) term=perl&lt;br /&gt;
id=35 ct=7(9.33%) term=google&lt;br /&gt;
id=36 ct=6(8.00%) term=video&lt;br /&gt;
id=37 ct=6(8.00%) term=project&lt;br /&gt;
id=38 ct=6(8.00%) term=rendering&lt;br /&gt;
id=39 ct=6(8.00%) term=monica&lt;br /&gt;
id=40 ct=6(8.00%) term=learning&lt;br /&gt;
id=41 ct=6(8.00%) term=senior&lt;br /&gt;
id=42 ct=6(8.00%) term=product&lt;br /&gt;
id=43 ct=6(8.00%) term=technology&lt;br /&gt;
id=44 ct=6(8.00%) term=santa&lt;br /&gt;
id=45 ct=6(8.00%) term=application&lt;br /&gt;
id=46 ct=6(8.00%) term=engineering&lt;br /&gt;
id=47 ct=6(8.00%) term=server&lt;br /&gt;
id=48 ct=6(8.00%) term=skills&lt;br /&gt;
id=49 ct=6(8.00%) term=shiraz&lt;br /&gt;
id=50 ct=6(8.00%) term=research&lt;br /&gt;
id=51 ct=5(6.67%) term=advanced&lt;br /&gt;
id=52 ct=5(6.67%) term=animation&lt;br /&gt;
id=53 ct=5(6.67%) term=applications&lt;br /&gt;
id=54 ct=5(6.67%) term=designed&lt;br /&gt;
id=55 ct=5(6.67%) term=pipeline&lt;br /&gt;
id=56 ct=5(6.67%) term=towards&lt;br /&gt;
id=57 ct=5(6.67%) term=port&lt;br /&gt;
id=58 ct=5(6.67%) term=optimized&lt;br /&gt;
id=59 ct=5(6.67%) term=networking&lt;br /&gt;
id=60 ct=5(6.67%) term=audacity&lt;br /&gt;
id=61 ct=5(6.67%) term=microsoft&lt;br /&gt;
id=62 ct=5(6.67%) term=parallel&lt;br /&gt;
id=63 ct=5(6.67%) term=audio&lt;br /&gt;
id=64 ct=5(6.67%) term=network&lt;br /&gt;
id=65 ct=5(6.67%) term=javascript&lt;br /&gt;
id=66 ct=5(6.67%) term=aphrodite&lt;br /&gt;
id=67 ct=5(6.67%) term=wrote&lt;br /&gt;
id=68 ct=5(6.67%) term=implemented&lt;br /&gt;
id=69 ct=5(6.67%) term=technical&lt;br /&gt;
id=70 ct=5(6.67%) term=responsible&lt;br /&gt;
id=71 ct=5(6.67%) term=custom&lt;br /&gt;
id=72 ct=5(6.67%) term=systems&lt;br /&gt;
id=73 ct=5(6.67%) term=other&lt;br /&gt;
id=74 ct=5(6.67%) term=researched&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
Here is some data on job descriptions:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-TBOShREymFs/UNR0csEfBlI/AAAAAAAAA5g/ZWfJYCjnvMs/s1600/job_desc.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://4.bp.blogspot.com/-TBOShREymFs/UNR0csEfBlI/AAAAAAAAA5g/ZWfJYCjnvMs/s640/job_desc.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------------------&lt;br /&gt;
Total Count of most terms : 918&lt;br /&gt;
Interesting Word Freq Count: 479&lt;br /&gt;
-------------------------------&lt;br /&gt;
id=1 ct=23(92.00%) term=experience&lt;br /&gt;
id=2 ct=13(52.00%) term=development&lt;br /&gt;
id=3 ct=12(48.00%) term=software&lt;br /&gt;
id=4 ct=12(48.00%) term=systems&lt;br /&gt;
id=5 ct=10(40.00%) term=design&lt;br /&gt;
id=6 ct=9(36.00%) term=security&lt;br /&gt;
id=7 ct=8(32.00%) term=java&lt;br /&gt;
id=8 ct=8(32.00%) term=skills&lt;br /&gt;
id=9 ct=8(32.00%) term=plus&lt;br /&gt;
id=10 ct=7(28.00%) term=required&lt;br /&gt;
id=11 ct=7(28.00%) term=must&lt;br /&gt;
id=12 ct=6(24.00%) term=projects&lt;br /&gt;
id=13 ct=6(24.00%) term=computer&lt;br /&gt;
id=14 ct=6(24.00%) term=strong&lt;br /&gt;
id=15 ct=6(24.00%) term=network&lt;br /&gt;
id=16 ct=6(24.00%) term=work&lt;br /&gt;
id=17 ct=5(20.00%) term=netwitness&lt;br /&gt;
id=18 ct=5(20.00%) term=applications&lt;br /&gt;
id=19 ct=5(20.00%) term=team&lt;br /&gt;
id=20 ct=5(20.00%) term=requirements&lt;br /&gt;
id=21 ct=5(20.00%) term=spring&lt;br /&gt;
id=22 ct=5(20.00%) term=science&lt;br /&gt;
id=23 ct=5(20.00%) term=information&lt;br /&gt;
id=24 ct=5(20.00%) term=solutions&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/BerlinBrownAndSoftwareDevelopment/~4/wtmId5mHZ3A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://berlinbrowndev.blogspot.com/feeds/3477124005905677135/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6469693320219923273&amp;postID=3477124005905677135" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/3477124005905677135?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/3477124005905677135?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BerlinBrownAndSoftwareDevelopment/~3/wtmId5mHZ3A/basic-word-frequency-analysis.html" title="Basic word frequency analysis" /><author><name>Berlin Brown</name><uri>https://plus.google.com/106721302704615680699</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-LJenpITcd6E/AAAAAAAAAAI/AAAAAAAAA3c/NkySR7_V8AI/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-Xr0UYd7T8jE/UNRsnNPKfAI/AAAAAAAAA4g/WTovu1AbAiQ/s72-c/dem_debate_hist.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://berlinbrowndev.blogspot.com/2012/12/basic-word-frequency-analysis.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIGSHs_fyp7ImA9WhNWGUk.&quot;"><id>tag:blogger.com,1999:blog-6469693320219923273.post-4616942248081220862</id><published>2012-12-18T19:29:00.002-05:00</published><updated>2012-12-19T15:22:09.547-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-12-19T15:22:09.547-05:00</app:edited><title>Just some code</title><content type="html">&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-aqa6pyWgBYg/UNEKP4DlFYI/AAAAAAAAA3o/CLMI3lQAqZs/s1600/just_some_code1.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="284" src="http://4.bp.blogspot.com/-aqa6pyWgBYg/UNEKP4DlFYI/AAAAAAAAA3o/CLMI3lQAqZs/s640/just_some_code1.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Just some code&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/BerlinBrownAndSoftwareDevelopment/~4/DLZAe-i6lcU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://berlinbrowndev.blogspot.com/feeds/4616942248081220862/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6469693320219923273&amp;postID=4616942248081220862" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/4616942248081220862?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/4616942248081220862?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BerlinBrownAndSoftwareDevelopment/~3/DLZAe-i6lcU/just-some-code.html" title="Just some code" /><author><name>Berlin Brown</name><uri>https://plus.google.com/106721302704615680699</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-LJenpITcd6E/AAAAAAAAAAI/AAAAAAAAA3c/NkySR7_V8AI/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-aqa6pyWgBYg/UNEKP4DlFYI/AAAAAAAAA3o/CLMI3lQAqZs/s72-c/just_some_code1.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://berlinbrowndev.blogspot.com/2012/12/just-some-code.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MCR3cyeCp7ImA9WhJXEks.&quot;"><id>tag:blogger.com,1999:blog-6469693320219923273.post-4255462001497654154</id><published>2012-08-06T09:57:00.003-04:00</published><updated>2012-08-06T09:57:46.990-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-08-06T09:57:46.990-04:00</app:edited><title /><content type="html">&lt;br /&gt;
&lt;div id="pname" style="background-color: white; font-family: arial, sans-serif; font-size: 39px; margin: 0px; padding: 0px;"&gt;
&lt;a href="http://code.google.com/p/jdistprop/" style="color: #666666; text-decoration: none;"&gt;jdistprop&lt;/a&gt;&lt;/div&gt;
&lt;div id="psum" style="background-color: white; font-family: arial, sans-serif; font-size: 13px;"&gt;
&lt;a href="http://code.google.com/p/jdistprop/" id="project_summary_link" style="color: #444444; text-decoration: none;"&gt;Distributed Property Files With Java&lt;/a&gt;&lt;/div&gt;
&lt;div id="psum" style="background-color: white; font-family: arial, sans-serif; font-size: 13px;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style="background-color: white; font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em;"&gt;This project supports distributed property files for easy loading with Java projects.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: white; font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
This project is a solution to this problem:&lt;/div&gt;
&lt;div style="background-color: white; font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
In a J2EE environment, we are normally used to storing text in a property/resource file.&lt;/div&gt;
&lt;ul style="background-color: white; font-family: arial, sans-serif; font-size: 13px; max-width: 62em; padding-left: 25px;"&gt;
&lt;li style="margin-bottom: 0.3em;"&gt;firstName=First Name&lt;/li&gt;
&lt;li style="margin-bottom: 0.3em;"&gt;someOtherData=This is the data to display on screen, from property file&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="background-color: white; font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
If you are in an environment, where it is difficult to update those property files on a regular basis, what architecture are developers using to change text/label content that would normally reside in a property file? Or let's say you need to change that content before re-deploying a property file change. One solution is to store that in a database? Are developers using memcache-db? Is that usually used for caching solutions?&lt;/div&gt;
&lt;div style="background-color: white; font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
Would you use a solution outside of the java framework? Like a key/value datastore? memcachedb?&lt;/div&gt;
&lt;div style="background-color: white; font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="background-color: white; font-family: arial, sans-serif; font-size: 13px; line-height: 1.25em; max-width: 64em;"&gt;
&lt;a href="http://code.google.com/p/jdistprop/" style="font-family: 'Times New Roman'; font-size: medium; line-height: normal;"&gt;http://code.google.com/p/jdistprop/&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BerlinBrownAndSoftwareDevelopment/~4/PUtztISFAWk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://berlinbrowndev.blogspot.com/feeds/4255462001497654154/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6469693320219923273&amp;postID=4255462001497654154" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/4255462001497654154?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/4255462001497654154?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BerlinBrownAndSoftwareDevelopment/~3/PUtztISFAWk/jdistprop-distributed-property-files.html" title="" /><author><name>Berlin Brown</name><uri>https://plus.google.com/106721302704615680699</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-LJenpITcd6E/AAAAAAAAAAI/AAAAAAAAA3c/NkySR7_V8AI/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://berlinbrowndev.blogspot.com/2012/08/jdistprop-distributed-property-files.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYMQX4-eSp7ImA9WhVQGEk.&quot;"><id>tag:blogger.com,1999:blog-6469693320219923273.post-419908716277698293</id><published>2012-04-07T20:37:00.004-04:00</published><updated>2012-04-07T20:49:40.051-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-07T20:49:40.051-04:00</app:edited><title>Build a java virtual machine that is actually readable/modifiable for Win32</title><content type="html">Is it possible to build a Java virtual machine for Win32 in an sort of understandable way? &amp;nbsp;It is mostly impossible. &amp;nbsp;The OpenJDK build will take hours just to build and will take a day to prepare your environment. &amp;nbsp; If you aren't a core JVM developer, who actually is going to take several days to prep their environment so that they can hack OpenJDK. &amp;nbsp;The jikes RVM may work with cygwin/win32 but it is mostly designed for linux or some other open platform. &amp;nbsp;You are really only left with JamVM. &amp;nbsp;I was actually able to install all of the dependencies with cygwin and perform a build in 15 minutes. &amp;nbsp;And then actually edit the C source, add a log statement, rebuild and run against a bytecode class file. &amp;nbsp;JamVM is the only JVM project that is understandable (20-30 core C files) and the build actually works with a modern version of cygwin.&lt;br /&gt;
&lt;br /&gt;
I will go through some of the setup. &amp;nbsp;It helps to actually install JamVM through cygwin. &amp;nbsp;Full install.&lt;br /&gt;
&lt;br /&gt;
1. Run cygstart and use cygports as your cygwin repository. &amp;nbsp;Cygports allows you access to more software packages.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://sourceware.org/cygwinports/"&gt;http://sourceware.org/cygwinports/&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
cygstart -- /cygdrive/c/Users/bbrown/Downloads/setup.exe -K http://cygwinports.org/ports.gpg&lt;br /&gt;
&lt;br /&gt;
2. Select 'jamvm' and run through the installer.&lt;br /&gt;
&lt;br /&gt;
I am installed 'jamvm-1.5.3-5'&lt;br /&gt;
&lt;br /&gt;
3. Run&amp;nbsp;cygstart -- /cygdrive/c/Users/bbrown/Downloads/setup.exe -K http://cygwinports.org/ports.gpg&lt;br /&gt;
Again but this time select 'jamvm' source install. &amp;nbsp;Double click on the text 'Keep' near jamvm.&lt;br /&gt;
&lt;br /&gt;
4. &amp;nbsp;Change your directory to /usr/src. &amp;nbsp;The source for jamvm is located in the src directory.&lt;br /&gt;
&lt;br /&gt;
5. &amp;nbsp;Install jamvm-1.5.3-5 based on the source:&lt;br /&gt;
&lt;br /&gt;
Run cygport ./jamvm-1.5.3-5.cygport all&lt;br /&gt;
&lt;br /&gt;
6. &amp;nbsp;Then run&amp;nbsp;&amp;nbsp;cygport ./jamvm-1.5.3-5.cygport prep&lt;br /&gt;
&lt;br /&gt;
7. &amp;nbsp;Then run&amp;nbsp;&amp;nbsp;cygport ./jamvm-1.5.3-5.cygport compile&lt;br /&gt;
&lt;br /&gt;
8. Enter '/jamvm-1.5.3-5/build/src'&lt;br /&gt;
9. Type 'make' and edit a C source file.&lt;br /&gt;
&lt;br /&gt;
10.&amp;nbsp;javac -source 1.5 -target 1.5 Test.java&lt;br /&gt;
11. Run jamvm.exe Test&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Dependencies&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
autoconf2.5-2.65-1+&lt;br /&gt;
automake1.10-1.10.3-1+&lt;br /&gt;
binutils-2.20.51-2+&lt;br /&gt;
cygport-0.9.85-1+&lt;br /&gt;
gawk-3.1.7-1+&lt;br /&gt;
gcc4-core-4.3.4-3+&lt;br /&gt;
libtool-2.2.7a-15+&lt;br /&gt;
make-3.81-2+&lt;br /&gt;
sed-4.2.1-1+&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Some of the dependencies established through jamvm install:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ecj&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;(3.5.2-1)&lt;br /&gt;
gnome-icon-theme&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;(3.2.1.2-1)&lt;br /&gt;
java-classpath&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;(0.98-2)&lt;br /&gt;
java-ecj&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;(3.5.2-1)&lt;br /&gt;
libgtk2.0_0&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;(2.24.10-1)&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;br /&gt;
libjbig2&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;(2.0-11)&lt;br /&gt;
libjpeg8&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;(8b-1)&lt;br /&gt;
libpango1.0_0&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;(1.29.4-2)&lt;br /&gt;
libpng14&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;(1.4.8-1)&lt;br /&gt;
libtiff5&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;(3.9.4-1)&lt;br /&gt;
libXext6&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;(1.3.0-1)&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;br /&gt;
shared-mime-info&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;(1.0-1)&lt;br /&gt;
xcursor-themes&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;(1.0.3-1)&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Resources&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
[1]&amp;nbsp;&lt;a href="http://sourceware.org/cygwinports/"&gt;http://sourceware.org/cygwinports/&lt;/a&gt;&lt;br /&gt;
[2]&amp;nbsp;&lt;a href="http://jamvm.sourceforge.net/"&gt;http://jamvm.sourceforge.net/&lt;/a&gt;&amp;nbsp; (1.5.3)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/BerlinBrownAndSoftwareDevelopment/~4/9KzZbriidak" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://berlinbrowndev.blogspot.com/feeds/419908716277698293/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6469693320219923273&amp;postID=419908716277698293" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/419908716277698293?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/419908716277698293?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BerlinBrownAndSoftwareDevelopment/~3/9KzZbriidak/build-java-virtual-machine-that-is.html" title="Build a java virtual machine that is actually readable/modifiable for Win32" /><author><name>Berlin Brown</name><uri>https://plus.google.com/106721302704615680699</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-LJenpITcd6E/AAAAAAAAAAI/AAAAAAAAA3c/NkySR7_V8AI/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://berlinbrowndev.blogspot.com/2012/04/build-java-virtual-machine-that-is.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QHRX0-cCp7ImA9WhVQE08.&quot;"><id>tag:blogger.com,1999:blog-6469693320219923273.post-3690237391696172439</id><published>2012-04-01T18:44:00.001-04:00</published><updated>2012-04-01T19:02:14.358-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-01T19:02:14.358-04:00</app:edited><title>Code snippet of the day: Haskell for the dumb idiot lazy programmers</title><content type="html">&lt;div&gt;
&lt;div&gt;
The euler project problem reads as such, "If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.&amp;nbsp;Find the sum of all the multiples of 3 or 5 below 1000."&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
Here is one of many implementations in Haskell. &amp;nbsp;I used a verbose recursive approach, iterate up to 1000 and then build a list with the items of interest. &amp;nbsp;In this case, 'multiples of 3 or 5'. &amp;nbsp;The first implementation contains a logging utility for writing a string at each iteration.&lt;/div&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-03GB8mYJre8/T3jZn5nPNAI/AAAAAAAAAo4/5WsjcqNpJlQ/s1600/euler1_haskell_verbose.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="517" src="http://4.bp.blogspot.com/-03GB8mYJre8/T3jZn5nPNAI/AAAAAAAAAo4/5WsjcqNpJlQ/s640/euler1_haskell_verbose.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Figure 1: Euler Problem1 in Haskell&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
Here is the second source snippet, I just wanted to provide something more practical, a log parsing example that you can run against your web log files.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-DVcTXfmv8_k/T3jZpCfem5I/AAAAAAAAApA/VLzqt8xo7No/s1600/math_services1.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="516" src="http://3.bp.blogspot.com/-DVcTXfmv8_k/T3jZpCfem5I/AAAAAAAAApA/VLzqt8xo7No/s640/math_services1.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Figure 2: Applied Haskell, simply read each line of a file, find a term and output the results to another file.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;div&gt;
Source:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href="https://javanotebook.googlecode.com/svn/trunk/math/MathServices/docs/haskell"&gt;https://javanotebook.googlecode.com/svn/trunk/math/MathServices/docs/haskell&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BerlinBrownAndSoftwareDevelopment/~4/_xkObNkV9f8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://berlinbrowndev.blogspot.com/feeds/3690237391696172439/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6469693320219923273&amp;postID=3690237391696172439" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/3690237391696172439?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/3690237391696172439?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BerlinBrownAndSoftwareDevelopment/~3/_xkObNkV9f8/code-snippet-of-day-haskell-for-dumb.html" title="Code snippet of the day: Haskell for the dumb idiot lazy programmers" /><author><name>Berlin Brown</name><uri>https://plus.google.com/106721302704615680699</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-LJenpITcd6E/AAAAAAAAAAI/AAAAAAAAA3c/NkySR7_V8AI/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-03GB8mYJre8/T3jZn5nPNAI/AAAAAAAAAo4/5WsjcqNpJlQ/s72-c/euler1_haskell_verbose.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://berlinbrowndev.blogspot.com/2012/04/code-snippet-of-day-haskell-for-dumb.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYHQ3ozcSp7ImA9WhVRFU4.&quot;"><id>tag:blogger.com,1999:blog-6469693320219923273.post-6726333319213599669</id><published>2012-03-23T16:41:00.003-04:00</published><updated>2012-03-23T16:55:32.489-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-23T16:55:32.489-04:00</app:edited><title>Image and Code of the Day</title><content type="html">&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-XkvT7hmISl4/T2zf4Ps5aoI/AAAAAAAAAog/RCD9EXBB354/s1600/stats_sort_imagePow2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="480" src="http://4.bp.blogspot.com/-XkvT7hmISl4/T2zf4Ps5aoI/AAAAAAAAAog/RCD9EXBB354/s640/stats_sort_imagePow2.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig 1: Graph of a 'worse case' number of operations, n^2.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-p2k6bGoMTmQ/T2zfUA3hxQI/AAAAAAAAAoY/0NDeO2OybIY/s1600/stats_sort_image3log.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="480" src="http://3.bp.blogspot.com/-p2k6bGoMTmQ/T2zfUA3hxQI/AAAAAAAAAoY/0NDeO2OybIY/s640/stats_sort_image3log.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig 2: Quick Sort Number of Operations vs {n * log(n)} graph. &amp;nbsp; Quick Sort average case is {n * log(n)}. &amp;nbsp;During the quick sort simulation, the number of reported operations aligned with the average case {n*log(n)}.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-nPSWGFJJ5sw/T2zg4Z3UPuI/AAAAAAAAAoo/EB6YUY0038c/s1600/source_r_stats_line_plot.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-nPSWGFJJ5sw/T2zg4Z3UPuI/AAAAAAAAAoo/EB6YUY0038c/s1600/source_r_stats_line_plot.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig3: R Source for plot of &amp;nbsp;line graph. &amp;nbsp;Data consists of rows of tab delimited integer values.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-BF_Q15NXXMs/T2ze9fNGtNI/AAAAAAAAAoI/lX8zCLW6bT0/s1600/quick_sort_source_algo.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-BF_Q15NXXMs/T2ze9fNGtNI/AAAAAAAAAoI/lX8zCLW6bT0/s1600/quick_sort_source_algo.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig 4: Quick Sort Source in Java&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://feeds.feedburner.com/~r/BerlinBrownAndSoftwareDevelopment/~4/Dp3HvxivQ40" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://berlinbrowndev.blogspot.com/feeds/6726333319213599669/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6469693320219923273&amp;postID=6726333319213599669" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/6726333319213599669?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/6726333319213599669?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BerlinBrownAndSoftwareDevelopment/~3/Dp3HvxivQ40/image-and-code-of-day.html" title="Image and Code of the Day" /><author><name>Berlin Brown</name><uri>https://plus.google.com/106721302704615680699</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-LJenpITcd6E/AAAAAAAAAAI/AAAAAAAAA3c/NkySR7_V8AI/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-XkvT7hmISl4/T2zf4Ps5aoI/AAAAAAAAAog/RCD9EXBB354/s72-c/stats_sort_imagePow2.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://berlinbrowndev.blogspot.com/2012/03/image-and-code-of-day.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QHR3k6eSp7ImA9WhVSFE4.&quot;"><id>tag:blogger.com,1999:blog-6469693320219923273.post-1221679813971199658</id><published>2012-03-10T21:02:00.000-05:00</published><updated>2012-03-10T21:02:16.711-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-10T21:02:16.711-05:00</app:edited><title>New Anime Reviews by Berlin Brown</title><content type="html">&lt;br /&gt;
Anime is Japanese animation. Animation that is not necessarily targeted for kids. In fact, some Animation can be pretty rough and make a 40 year old squirm. Basically, Anime has characters and culture, stories, plots. If you like interesting stories, then you will like most of the popular Anime.&lt;br /&gt;
&lt;br /&gt;
What is the difference between Manga and Anime? I am American and usually just refer to anything that moves and is from Japan as "Anime" or Japanimation. But that isn't entirely accurate. There are some Anime TV series/movies that were Manga comic books in Japan and then made into movies. Manga to Anime. Manga is Comic Book in Japanese. If someone says, "Fullmetal Alchemist is a great Manga". I guess they could refer to the comic book version of Fullmetal or the TV adaptation. But normally they are referring to the comic book. Anime can be an animated series derived from a Manga.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Popular Adult Stuff&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
There are many genres of Anime. I like the adult themed stuff. Horror, Cyberpunk, Sci/Fi etc. With the adult themed Anime, you get similar story lines, violence and action that you would get from a Hollywood blockbuster. The difference is that the Anime is animated. When you think Cyberpunk, think Blade Runner. Cyberpunk focuses on technology, cybernetics, robotics but culture is at a lowpoint. Popular cyberpunk Anime focuses on wealth by big corporations but poverty is rampant among the lower classes. You see this with series like Ghost in the Shell, Akira and Ergo Proxy. Why cyberpunk? It is for those that like technology, sci-fi and a bit of nihilism.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;What is some popular Anime?&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Recent Updates:&lt;br /&gt;
&lt;br /&gt;
Hell Girl (7/10), Darker than Black (8/10), xxx holic (7/10),&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Ghost in the Shell (theme Cyberpunk, rating = 11/10)&lt;/span&gt;&amp;nbsp;- Ghost in the Shell is the iconic Cyberpunk series. It is cyberpunk, alongside Blade Runner. I can't even review Ghost in the Shell. It is the best of the best and you should get as many of the TV series and movies as you can. I encourage you to watch every episode. That is my review. Ghost in the Shell is a story about cyborgs and robotics fighting crime. That is the core of the series. But my short synopsis doesn't do justice to the intricate story lines. Just watch it.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Ergo Proxy (theme Cyberpunk, 10/10)&lt;/span&gt;&amp;nbsp;- Ergo Proxy is popular but not as familiar as Ghost in the Shell. It is Cyberpunk with a mix of fantasy, horror and sci/fi. It is a long series and has a solid, dark theme. Ghost in the Shell is a detective cyberpunk series. Ergo Proxy is more fantasy and dystopia. Most of the series involves the main character running from the oppressive society.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Monster (theme Detective, rating 8/10)&amp;nbsp;&lt;/span&gt;- Monster is pretty basic detective/conspiracy story. A doctor is falsely accused of murder and other crimes. He goes on the lamb and tries to find the sadistic conspirator. I gave Monster a score of 8 because the stories are pretty basic and plain. But it still is an enjoyable series.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;The Last Exile (theme Steampunk/Military/Flight?, rating 9/10)&lt;/span&gt;&amp;nbsp;- What is steampunk. Somehow in Japanese Anime world, steam and diesel? can be used to fly planes and control machines. Generally these steam punk series target a fictional time period around the early 1900s. Ironically, you have steam powered robots and other machines that seem quite advanced. Anyway, The Last Exile is a steam punk/flight series that focuses on two friends that are caught up in a war. A lot of the series focuses on their relationship and how the war tears them apart. It is solid Anime. Good story, animation. At times, there is too much a focus on the drama of their lives as opposed to the war going on.&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Pumpkin Scissors (theme Military/Detective?, rating 7/10)&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Heroic Age (theme Science Fiction)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Other Notable Shows:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Black Lagoon (8/10, part fan service, lots of bad language)&lt;br /&gt;
&lt;br /&gt;
-- From Berlin Brown&lt;br /&gt;
-- Vote Ron Paul 2012&lt;img src="http://feeds.feedburner.com/~r/BerlinBrownAndSoftwareDevelopment/~4/It5N5djIpgA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://berlinbrowndev.blogspot.com/feeds/1221679813971199658/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6469693320219923273&amp;postID=1221679813971199658" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/1221679813971199658?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/1221679813971199658?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BerlinBrownAndSoftwareDevelopment/~3/It5N5djIpgA/new-anime-reviews-by-berlin-brown.html" title="New Anime Reviews by Berlin Brown" /><author><name>Berlin Brown</name><uri>https://plus.google.com/106721302704615680699</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-LJenpITcd6E/AAAAAAAAAAI/AAAAAAAAA3c/NkySR7_V8AI/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://berlinbrowndev.blogspot.com/2012/03/new-anime-reviews-by-berlin-brown.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcEQn45fCp7ImA9WhVSFE4.&quot;"><id>tag:blogger.com,1999:blog-6469693320219923273.post-7047287242892151208</id><published>2012-03-10T20:49:00.001-05:00</published><updated>2012-03-10T22:36:43.024-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-10T22:36:43.024-05:00</app:edited><title>House MD</title><content type="html">House MD is a good TV show&lt;br /&gt;
&lt;br /&gt;
-- berlin brown&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://math-services.appspot.com/"&gt;http://math-services.appspot.com/&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/BerlinBrownAndSoftwareDevelopment/~4/foWR0wJoq4U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://berlinbrowndev.blogspot.com/feeds/7047287242892151208/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6469693320219923273&amp;postID=7047287242892151208" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/7047287242892151208?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/7047287242892151208?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BerlinBrownAndSoftwareDevelopment/~3/foWR0wJoq4U/house-md.html" title="House MD" /><author><name>Berlin Brown</name><uri>https://plus.google.com/106721302704615680699</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-LJenpITcd6E/AAAAAAAAAAI/AAAAAAAAA3c/NkySR7_V8AI/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://berlinbrowndev.blogspot.com/2012/03/house-md.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MAR3szcSp7ImA9WhVSFE4.&quot;"><id>tag:blogger.com,1999:blog-6469693320219923273.post-4775048513595077801</id><published>2012-02-07T09:10:00.001-05:00</published><updated>2012-03-10T21:04:06.589-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-10T21:04:06.589-05:00</app:edited><title>Random Technology Links</title><content type="html">Here are random technology links:&lt;br /&gt;
&lt;br /&gt;
[Jan 2012]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://nlpwp.org/book/chap-words.xhtml&lt;br /&gt;
http://www.stanford.edu/class/cs242/readings/backus.pdf&lt;br /&gt;
http://stackoverflow.com/questions/1962278/dealing-with-timestamps-in-r&lt;br /&gt;
http://math.illinoisstate.edu/dhkim/rstuff/rtutor.html&lt;br /&gt;
http://www.harding.edu/fmccown/r/&lt;br /&gt;
http://www.rforge.net/rJava/&lt;br /&gt;
http://www.rforge.net/rJava/&lt;br /&gt;
http://www.ugo.com/games/strategy-games-top-50?page=5&lt;br /&gt;
http://www.cs.uiuc.edu/~jeffe/teaching/algorithms/&lt;br /&gt;
http://www.nlp-class.org/&lt;br /&gt;
http://www.security-class.org/&lt;br /&gt;
COLT: http://acs.lbl.gov/~hoschek/colt/&lt;br /&gt;
http://weka.sourceforge.net/doc.dev/weka/classifiers/bayes/BayesNet.html&lt;br /&gt;
http://apache-wicket.1842946.n4.nabble.com/Wicket-Session-grows-too-big-real-fast-td1875816.html&lt;br /&gt;
http://www.keysbotzum.com (public)&lt;br /&gt;
http://www.cell-auto.com/&lt;br /&gt;
http://bayfiles.com/&lt;br /&gt;
http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/&lt;br /&gt;
http://linuxproblem.org/art_9.html&lt;br /&gt;
http://www.mitpressjournals.org/doi/abs/10.1162/106454606775186446&lt;br /&gt;
http://www.mitpressjournals.org/toc/artl/15/1&lt;br /&gt;
http://en.wikipedia.org/wiki/Scilab&lt;br /&gt;
http://www.it-weise.de&lt;br /&gt;
http://apache-wicket.1842946.n4.nabble.com/When-to-use-getModelObject-getConvertedInput-getInput-td1853817.html&lt;br /&gt;
http://www.cs.gsu.edu/&lt;br /&gt;
http://www.gradsource.com/Historically-Black-College-Graduate-Schools.cfm?region=6&lt;br /&gt;
http://blogs.msdn.com/b/brian_jones/archive/2005/06/27/433152.aspx&lt;br /&gt;
http://www.cooldatasoft.com/wicket-menu-demo/wicket/bookmarkable/com.cooldatasoft.page.MultiLevelCssMenuDemo?43&lt;br /&gt;
http://www.redbooks.ibm.com/abstracts/sg247672.html&lt;br /&gt;
http://seleniumhq.org/download/&lt;br /&gt;
http://www.grad.wisc.edu/education/completedegree/mguide.html&lt;br /&gt;
http://www.ibm.com/developerworks/linux/library/l-r1/index.html&lt;br /&gt;
http://nothings.org/writing/websucks.html&lt;br /&gt;
http://imgur.com/eH22I&lt;br /&gt;
http://www.mathjax.org/&lt;br /&gt;
http://shemesh.larc.nasa.gov/fm/fm-what.html&lt;br /&gt;
http://www.cse.unsw.edu.au/~pls/thesis-topics/ghcjava.html&lt;br /&gt;
http://cstheory.stackexchange.com/questions/3253/what-books-should-everyone-read&lt;br /&gt;
http://misko.hevery.com/2008/12/15/static-methods-are-death-to-testability/&lt;br /&gt;
http://www.youtube.com/watch?v=uL2D3qzHtqY&lt;br /&gt;
http://powerhouseanimation.blogspot.com/2010/12/powerhouse-animation-had-its-annual.html&lt;br /&gt;
http://www.catswhocode.com/blog/best-practices-for-modern-javascript-development&lt;br /&gt;
http://mysticweb-bucket.s3.amazonaws.com/presentations/java2days_2010/In%20depth%20with%20HTML5%20java2days%202010.pdf&lt;br /&gt;
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.&lt;br /&gt;
http://www-01.ibm.com/support/docview.wss?uid=swg21397805&lt;br /&gt;
http://www.scienceforums.net/&lt;br /&gt;
http://svn.apache.org/repos/asf/wicket/branches/wicket-1.4.13/&lt;br /&gt;
http://javatechniques.com/blog/faster-deep-copies-of-java-objects/&lt;br /&gt;
http://code.google.com/p/support/wiki/WikiSyntax&lt;br /&gt;
http://www.cs.cf.ac.uk/Dave/PERL/node56.html&lt;br /&gt;
http://weblogs.java.net/blog/2006/05/04/understanding-weak-references&lt;br /&gt;
http://codetojoy.blogspot.com/2009/05/java-methods-protected-is-new-private.html&lt;br /&gt;
http://logging.apache.org/log4j/1.2/manual.html&lt;br /&gt;
http://commons.apache.org/collections/api-release/org/apache/commons/collections/list/FixedSizeList.html&lt;br /&gt;
http://www.simplegravity.com/&lt;br /&gt;
http://wicketbyexample.com/api/wicket/1.4.6/org/apache/wicket/protocol/http/pagestore/DiskPageStore.html&lt;br /&gt;
http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html&lt;br /&gt;
http://www.jroller.com/eyallupu/entry/spring_as_a_message_provider&lt;br /&gt;
http://www.wicketframework.org/apidocs/wicket/settings/Settings.html&lt;br /&gt;
http://code.google.com/p/doingitwrongnotebook/&lt;br /&gt;
http://www.reddit.com/r/programming/comments/6nw57/.json&lt;br /&gt;
http://sed.sourceforge.net/sed1line.txt&lt;br /&gt;
http://kanji.washuu.org/&lt;br /&gt;
http://brizzled.clapper.org/id/75&lt;br /&gt;
http://jlhaslip.trap17.com/samples/tooltips/index.html&lt;br /&gt;
http://www.cs.ubc.ca/wccce/Program03/papers/Toby.html&lt;br /&gt;
http://vaultcal.jitresources.com/secure/pfs/staticweb/epntvlive.html?e=1262786369&amp;amp;h=0bdc7a4e66f207b8460a08068a569036&lt;br /&gt;
http://java.dzone.com/articles/benefits-testable-code&lt;br /&gt;
http://www.retards.org/projects/rot13/&lt;br /&gt;
http://en.wikipedia.org/wiki/Web_crawler&lt;br /&gt;
http://www.java2s.com/Code/Java/Swing-JFC/SwingworkerExample.htm&lt;br /&gt;
http://misko.hevery.com/2009/10/01/cost-of-testing/&lt;br /&gt;
http://www.slate.com/id/2181460/&lt;br /&gt;
http://www.java2s.com/Open-Source/Java-Document/6.0-JDK-Modules-sun/tools/sun.tools.javap.htm&lt;br /&gt;
http://www.physorg.com/news169998182.html&lt;br /&gt;
http://wiki.yak.net/634&lt;br /&gt;
http://www-01.ibm.com/support/docview.wss?rs=180&amp;amp;uid=swg24021527&lt;br /&gt;
http://www.eclipse.org/tptp/home/documents/conferences/eclipseCon2009/712%5FProfilingTestingTPTP.pdf&lt;br /&gt;
http://www.ibm.com/developerworks/websphere/techjournal/0403_johnson/0403_johnson.html&lt;br /&gt;
http://dev.opera.com/articles/view/timing-and-synchronization-in-javascript/&lt;br /&gt;
http://www.tobearchitect.com/tag/RAD%20Developer%20Rational%20IBM%20Java%20Performance&lt;br /&gt;
http://blog.springsource.com/2007/11/14/annotated-web-mvc-controllers-in-spring-25/&lt;br /&gt;
http://www-01.ibm.com/support/docview.wss?rs=180&amp;amp;uid=swg1PK29128&lt;br /&gt;
http://www.javaworld.com/javaworld/javatips/jw-javatip130.html?page=3&lt;br /&gt;
http://www.javaworld.com/javaworld/javatips/jw-javatip130.html?page=4&lt;br /&gt;
http://www.javaworld.com/javaworld/javatips/jw-javatip106.html?page=1&lt;br /&gt;
http://www.1t3xt.info/api/com/lowagie/text/Chunk.html&lt;br /&gt;
http://www.1t3xt.info/examples/browse/?page=example&amp;amp;id=223&lt;br /&gt;
http://www.thefrontside.net/crosscheck&lt;br /&gt;
http://common-lisp.net/project/asdf-install/tutorial/setup.html&lt;br /&gt;
http://sunsite.ualberta.ca/Documentation/Misc/htmldoc-1.8.23/htmldoc.html&lt;br /&gt;
http://www.softcomplex.com/products/tigra_menu_gold/demo/frames/&lt;br /&gt;
http://www.aptana.com/docs/index.php/Writing_to_the_Firebug_console&lt;br /&gt;
http://the.taoofmac.com/space/blog/2006/11/04&lt;br /&gt;
http://publib.boulder.ibm.com/infocenter/radhelp/v6r0m1/index.jsp?topic=/com.ibm.etools.struts.doc/topics/rstrdoc019.html&lt;br /&gt;
http://software.complete.org/hslogger&lt;br /&gt;
http://en.wikipedia.org/wiki/ASCII&lt;br /&gt;
http://siteadminstuff.com/all-text.html#2&lt;br /&gt;
http://tmate.org/svn/kb/examples/index.php&lt;br /&gt;
http://www.nedbatchelder.com/text/quicksvn.html&lt;br /&gt;
http://support.microsoft.com/kb/222064/&lt;br /&gt;
http://www.computerhope.com/shortcut.htm#4&lt;br /&gt;
http://www.yourhtmlsource.com/javascript/popupwindows.html&lt;br /&gt;
&lt;br /&gt;
--- Berlin Brown&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/BerlinBrownAndSoftwareDevelopment/~4/54Quj1vldcQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://berlinbrowndev.blogspot.com/feeds/4775048513595077801/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6469693320219923273&amp;postID=4775048513595077801" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/4775048513595077801?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/4775048513595077801?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BerlinBrownAndSoftwareDevelopment/~3/54Quj1vldcQ/random-technology-links.html" title="Random Technology Links" /><author><name>Berlin Brown</name><uri>https://plus.google.com/106721302704615680699</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-LJenpITcd6E/AAAAAAAAAAI/AAAAAAAAA3c/NkySR7_V8AI/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://berlinbrowndev.blogspot.com/2012/02/random-technology-links.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMMRHk9fip7ImA9WhRVEEs.&quot;"><id>tag:blogger.com,1999:blog-6469693320219923273.post-6533544275924240339</id><published>2012-01-08T18:14:00.001-05:00</published><updated>2012-01-08T18:14:45.766-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-08T18:14:45.766-05:00</app:edited><title>I am Zit Pomney and I am running for President</title><content type="html">I am Zit Pomney and I am running for President. &amp;nbsp;I have a vision for America. &amp;nbsp;I want to bring jobs to this country. &amp;nbsp;I know I am the front runner but I am a tough boy, I can take the attacks from the other candidates. &amp;nbsp;I will get America back to work. &amp;nbsp;I will work hard for America. &amp;nbsp;America is a great place with great people. &amp;nbsp;And we need to balance our budget&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;"I love how the current candidates don't actually say anything of substance 99.9% of the time. &amp;nbsp;So I have created my fictional characters, meet Zit Pomney"&lt;/i&gt;&lt;img src="http://feeds.feedburner.com/~r/BerlinBrownAndSoftwareDevelopment/~4/g2ziHQ-C6KI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://berlinbrowndev.blogspot.com/feeds/6533544275924240339/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6469693320219923273&amp;postID=6533544275924240339" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/6533544275924240339?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/6533544275924240339?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BerlinBrownAndSoftwareDevelopment/~3/g2ziHQ-C6KI/i-am-zit-pomney-and-i-am-running-for.html" title="I am Zit Pomney and I am running for President" /><author><name>Berlin Brown</name><uri>https://plus.google.com/106721302704615680699</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-LJenpITcd6E/AAAAAAAAAAI/AAAAAAAAA3c/NkySR7_V8AI/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://berlinbrowndev.blogspot.com/2012/01/i-am-zit-pomney-and-i-am-running-for.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIGRX0yfyp7ImA9WhRVEEs.&quot;"><id>tag:blogger.com,1999:blog-6469693320219923273.post-1572941593068776707</id><published>2012-01-08T13:36:00.002-05:00</published><updated>2012-01-08T18:15:24.397-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-08T18:15:24.397-05:00</app:edited><title>Ron Paul can't win or can he?</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://i.imgur.com/V7RJp.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://i.imgur.com/V7RJp.jpg" width="260" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://i.imgur.com/V7RJp.jpg"&gt;http://i.imgur.com/V7RJp.jpg&lt;/a&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
"One of Ron Paul's top people was just talking about this...&lt;br /&gt;
Most candidates win the White House based on their viability. You see this with Romney and Obama.&lt;br /&gt;
Ron Paul will win based on his ideas.&lt;br /&gt;
... You can vote for Obama or Romney because you think they can win, solely on the basis that they can win. You can vote the party line... solely on the basis of that person being a Democrat or Republican.&lt;br /&gt;
But you vote for Ron Paul because you like his ideas. And his ideas aren't half bad."&lt;br /&gt;
&lt;br /&gt;
"Why is the media avoiding Paul? Avoiding is the wrong word. Completely tearing apart the guy every chance they get and cozying up to other candidates.&lt;br /&gt;
On Bush 2, he clearly seemed unqualified. He didn't have a long history in Texas. Before that, his businesses seemed to be tied to his family legacy. And in office, we ended up with perpetual war based on false information. Oh yea, and we were attacked.&lt;br /&gt;
With Obama, he only had 4 years of experience in Senate and no real big agenda except for Obamacare and a message of change. And in office, we are seeing some of the worst economic times, especially for the middle-class. ...&lt;br /&gt;
What does the media expect could happen if Ron Paul were in office? We get invaded by Iran?&lt;br /&gt;
The only thing that makes sense is that Ron Paul will dismantle the sleazy private/public relationship that has existed for several decades.&lt;br /&gt;
That or they are just really scared of real changes but don't really understand why they are scared."&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/BerlinBrownAndSoftwareDevelopment/~4/Pz7ZOV55s18" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://berlinbrowndev.blogspot.com/feeds/1572941593068776707/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6469693320219923273&amp;postID=1572941593068776707" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/1572941593068776707?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/1572941593068776707?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BerlinBrownAndSoftwareDevelopment/~3/Pz7ZOV55s18/ron-paul-cant-win-or-can-he.html" title="Ron Paul can't win or can he?" /><author><name>Berlin Brown</name><uri>https://plus.google.com/106721302704615680699</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-LJenpITcd6E/AAAAAAAAAAI/AAAAAAAAA3c/NkySR7_V8AI/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://berlinbrowndev.blogspot.com/2012/01/ron-paul-cant-win-or-can-he.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4MQno9eyp7ImA9WhRWGUw.&quot;"><id>tag:blogger.com,1999:blog-6469693320219923273.post-1575559551655680857</id><published>2012-01-06T23:35:00.001-05:00</published><updated>2012-01-06T23:36:23.463-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-06T23:36:23.463-05:00</app:edited><title>Thirty second review of top modern TV shows</title><content type="html">This is a short review of about a dozen top TV shows that have appeared in the last decade or so. &amp;nbsp; I advise you purchase the DVD TV sets and watch them based on your own schedule.&lt;br /&gt;
&lt;br /&gt;
These aren't sorted in any particular order but the better shows will normally appear at the top.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;The Wire (10/10)&lt;/b&gt; - (Urban gang land violence) So far the best TV show I have seen. &amp;nbsp;It was getting predictable and dry towards the end of the series but I don't think there is any better show that feels "real". &amp;nbsp;It is dark and gritty and highly watchable.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Dexter (9.9/10)&lt;/b&gt; - (Almost comical look at a serial killer do-gooder) Dexter is the show about the serial killer that also happens to be a blood splatter analyst in the police department. &amp;nbsp;Normally he finds another bad guy or serial killer and does away with him. &amp;nbsp;It is also a dark series with lots of gore and sometimes it can be serious. &amp;nbsp;But I tend to find some of it comical. &amp;nbsp;The Wire is not comical at all, Dexter can be. &amp;nbsp;It is comical in its sense of irony. &amp;nbsp;The top serial killer just happens to work for the police. &amp;nbsp;And it is a really good show, probably one of the best ever created.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Breaking Bad (9.5/10)&lt;/b&gt; - (Chemist turned drug dealer) - Breaking Bad is the more serious version of Weeds. &amp;nbsp;Walter White, the main character, is an&amp;nbsp;obsessive, neurotic, family-loving middle-aged smart guy that is using his genius to sell drugs. &amp;nbsp;He gets away with it most of the time, the other time everyone is out to kill him or screw him over. &amp;nbsp;It is good maybe a little bit too stylized. &amp;nbsp;There are too many moments of someone or something just sitting out in the dessert and we are supposed to appreciate the moment.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;The Mentalist (9.1/10)&lt;/b&gt; - (Really observant showman solves crimes) - You may disagree but I think this is the most complex show I have watched. &amp;nbsp;Each episode is like a puzzle you have to figure. &amp;nbsp;It is a smart program if you are into smart programs. &amp;nbsp;Some of the characters are a bit dry and the later episodes are becoming too easy to figure out.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;The Shield (9.3/10)&lt;/b&gt; - (Bad but also Good cops try to get away mayhem) - If you google "The Shield", some consider it the "Cops version of the Wire" or the "White version of the Wire". &amp;nbsp;That is basically what it is, a different look at urban warfare through the eyes of the cops. &amp;nbsp;And also appears on network TV so it is less gritty than the Wire.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Star Trek TNG&lt;/b&gt; (10/10) - Still the best sci-fi TV series out there.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Numb3rs&lt;/b&gt; - (8.5/10) - Standard TV fare, predictable &amp;nbsp;crime drama where they throw in math problems in solving the crime.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;&lt;img src="http://feeds.feedburner.com/~r/BerlinBrownAndSoftwareDevelopment/~4/wpbaUqrheOY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://berlinbrowndev.blogspot.com/feeds/1575559551655680857/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6469693320219923273&amp;postID=1575559551655680857" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/1575559551655680857?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/1575559551655680857?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BerlinBrownAndSoftwareDevelopment/~3/wpbaUqrheOY/thirty-second-review-of-top-modern-tv.html" title="Thirty second review of top modern TV shows" /><author><name>Berlin Brown</name><uri>https://plus.google.com/106721302704615680699</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-LJenpITcd6E/AAAAAAAAAAI/AAAAAAAAA3c/NkySR7_V8AI/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://berlinbrowndev.blogspot.com/2012/01/thirty-second-review-of-top-modern-tv.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4ERns6cCp7ImA9WhBTGUQ.&quot;"><id>tag:blogger.com,1999:blog-6469693320219923273.post-1736629821022020812</id><published>2012-01-06T13:23:00.001-05:00</published><updated>2013-02-16T01:08:27.518-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-02-16T01:08:27.518-05:00</app:edited><title>Python matplotlib plotting setup for cygwin</title><content type="html">Matplotlib&amp;nbsp;is a popular python library for generating plot graphics. &amp;nbsp; It works with cygwin win32 but some non-intuitive steps are required.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Install cygwin:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
CYGWIN_NT-5.1 1.7.9(0.237/5/3) 2011-03-29 10:10 i686 Cygwin&lt;br /&gt;
I am using cygwin with setup 2.7.3&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Install python through cygwin:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
This document describes installing python and matplot with cygwin. &amp;nbsp;For most windows users and cygwin users, normally you would use the external python executable. &amp;nbsp;I tend to prefer all of my script oriented applications running through cygwin including python.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Python 2.6.5 (r265:79063, Jun 12 2010, 17:07:01)&lt;br /&gt;
[GCC 4.3.4 20090804 (release) 1] on cygwin&lt;br /&gt;
&lt;br /&gt;
In the cygwin setup.exe installer, install:&lt;br /&gt;
&lt;br /&gt;
The freetype libs, python-gtk, python-tk, libpng&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Download matplotlib from sourceforge:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
I am using the latest version&amp;nbsp;matplotlib-1.1.0 as of 1/2012.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Issues with standard python install and cygwin:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The typical 'python setup.py install' will not work with cygwin. &amp;nbsp;You need to modify a configuration file and run some other additional commands.&lt;br /&gt;
&lt;br /&gt;
In the root directory of the expanded matplotlib directory, edit the&amp;nbsp;setup.cfg.template configuration file.&lt;br /&gt;
&lt;br /&gt;
Around line 70 in the file is a commented line, uncomment the line such that you have:&lt;br /&gt;
&lt;br /&gt;
tkagg = False&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Run install and watch it fail&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
Try running 'python setup.py install'&lt;br /&gt;
&lt;br /&gt;
It should fail with an error like the following:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-color: white; font-size: 12px; max-width: 80em; padding-left: 0.7em; white-space: pre-wrap;"&gt;&lt;i&gt;2 [main] python 2796 C:\cygwin\bin\python.exe: *** fatal error - unable to remap C:\cygwin\bin\cyggfortran-3.dll to same address as parent: 0x18660000 != 0x69780000
Stack trace:&lt;/i&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Run the rebase command OUTSIDE OF THE TYPICAL CYGWIN ENV&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
Exit cygwin and close all cygwin instances including the one you are working with. &amp;nbsp;You won't be using the typical &amp;nbsp;cygwin prompt for the next command.&lt;br /&gt;
&lt;br /&gt;
In windows explorer, open the cmd.exe or windows command&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You will need to run rebaseall. &amp;nbsp;First, shut down any long running processes like sshd, close all Cygwin prompts and so on.&lt;br /&gt;
&lt;br /&gt;
Type the following commands:&lt;br /&gt;
&lt;br /&gt;
cd \cygwin\bin&lt;br /&gt;
ash&lt;br /&gt;
PATH=. rebaseall -v&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
And you should get several lines of output.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Run install and watch it succeed&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
Try running 'python setup.py install' command again in the matplotlib directory&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Running Example Program:&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;div style="font-weight: bold;"&gt;
# python&lt;/div&gt;
Python 2.6.5 (r265:79063, Jun 12 2010, 17:07:01)&lt;br /&gt;
[GCC 4.3.4 20090804 (release) 1] on cygwin&lt;br /&gt;
Type "help", "copyright", "credits" or "license" for more information.&lt;br /&gt;
import matplotlib.pyplot as pyplot&lt;br /&gt;
pyplot.pie([1,2,3])&lt;br /&gt;
pyplot.show()&lt;br /&gt;
&lt;div style="display: inline !important;"&gt;
pyplot.savefig('f.png')&lt;/div&gt;
pyplot.savefig('x.png')&lt;br /&gt;
pyplot.savefig('x.eps')&lt;br /&gt;
&lt;br /&gt;
About Me (Berlin Brown resume):&lt;br /&gt;
&lt;a href="http://berlin2research.com/dyna/berlinbrown_java_resume/"&gt;http://berlin2research.com/dyna/berlinbrown_java_resume/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/BerlinBrownAndSoftwareDevelopment/~4/pq_WvfQO6cI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://berlinbrowndev.blogspot.com/feeds/1736629821022020812/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6469693320219923273&amp;postID=1736629821022020812" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/1736629821022020812?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/1736629821022020812?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BerlinBrownAndSoftwareDevelopment/~3/pq_WvfQO6cI/python-matplotlib-plotting-setup-for.html" title="Python matplotlib plotting setup for cygwin" /><author><name>Berlin Brown</name><uri>https://plus.google.com/106721302704615680699</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-LJenpITcd6E/AAAAAAAAAAI/AAAAAAAAA3c/NkySR7_V8AI/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://berlinbrowndev.blogspot.com/2012/01/python-matplotlib-plotting-setup-for.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YCRX46cCp7ImA9WhRWFEU.&quot;"><id>tag:blogger.com,1999:blog-6469693320219923273.post-5421016473232883014</id><published>2012-01-02T00:12:00.004-05:00</published><updated>2012-01-02T00:12:44.018-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-02T00:12:44.018-05:00</app:edited><title>2012 Campaign, help from political science community</title><content type="html">&lt;br /&gt;
&lt;div style="background-color: white; font-family: verdana, arial, helvetica, sans-serif; font-size: small; margin-bottom: 5px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;
After this race is over, I wish a fair politic science group could look at the media's handling of this race.&lt;/div&gt;
&lt;div style="background-color: white; font-family: verdana, arial, helvetica, sans-serif; font-size: small; margin-bottom: 5px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;
Here are some BIG missteps in how the media handled this race:&lt;/div&gt;
&lt;ul style="background-color: white; font-family: verdana, arial, helvetica, sans-serif; font-size: small; list-style-image: initial; list-style-position: outside; margin-bottom: 10px; margin-left: 2em; margin-right: 2em; margin-top: 10px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;
&lt;li style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Sarah Palin, why prop her up at all?&lt;/li&gt;
&lt;li style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Rick Perry enters the race and within two weeks, he is a front runner&lt;/li&gt;
&lt;li style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Herman Cain, once again, why prop him up?&lt;/li&gt;
&lt;li style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;And then Newt's rise&lt;/li&gt;
&lt;li style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Look at the criticism against Ron Paul.&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="background-color: white; font-family: verdana, arial, helvetica, sans-serif; font-size: small; margin-bottom: 5px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;
Someone could just look at the timing and wording of discussion on the candidates. It is obvious they have their favorites.&lt;/div&gt;
&lt;div style="background-color: white; font-family: verdana, arial, helvetica, sans-serif; font-size: small; margin-bottom: 5px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;
...&lt;/div&gt;
&lt;div style="background-color: white; font-family: verdana, arial, helvetica, sans-serif; font-size: small; margin-bottom: 5px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;
CNN and Fox didn't campaign for Ron Paul 24/7 like they did with other candidates. But they did have Ron Paul on their programs. Ron Paul had to defend his own platform. But CNN, Fox did the campaigning for the other candidates.&lt;/div&gt;
&lt;div style="background-color: white; font-family: verdana, arial, helvetica, sans-serif; font-size: small; margin-bottom: 5px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;
And it is easy to spot, just look at the amount of coverage, wording and discussion.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BerlinBrownAndSoftwareDevelopment/~4/CNjSn_-kc5Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://berlinbrowndev.blogspot.com/feeds/5421016473232883014/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6469693320219923273&amp;postID=5421016473232883014" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/5421016473232883014?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/5421016473232883014?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BerlinBrownAndSoftwareDevelopment/~3/CNjSn_-kc5Q/2012-campaign-help-from-political.html" title="2012 Campaign, help from political science community" /><author><name>Berlin Brown</name><uri>https://plus.google.com/106721302704615680699</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-LJenpITcd6E/AAAAAAAAAAI/AAAAAAAAA3c/NkySR7_V8AI/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://berlinbrowndev.blogspot.com/2012/01/2012-campaign-help-from-political.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEIDRn07fCp7ImA9WhRWE08.&quot;"><id>tag:blogger.com,1999:blog-6469693320219923273.post-5896231014067362833</id><published>2011-12-31T04:04:00.003-05:00</published><updated>2011-12-31T04:09:37.304-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-31T04:09:37.304-05:00</app:edited><title>DNA seen through the eyes of a coder, my take</title><content type="html">Several years ago in 2008, a programmer researched DNA and &amp;nbsp;how the cell works. He gave a software related analogy on how it operates. &amp;nbsp;It was a great overview of the process with the biology language translated for engineers. &amp;nbsp;I constantly thought about the article and wanted to add my own spin on it. &amp;nbsp;The author didn't really do anything wrong, and it really is a great article,&amp;nbsp;but I personally wish he would have given a one paragraph software analogy. &amp;nbsp;(With the core content, I am not a scientist so I can't really refute his research).&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://ds9a.nl/amazing-dna/"&gt;http://ds9a.nl/amazing-dna/&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
I enjoyed the last view paragraphs at the end,&amp;nbsp;"Now, DNA is not like a computer programming language. It really isn't. But there are some whopping analogies. We can view each cell as a CPU, running its own kernel. Each cell has a copy of the entire kernel, but choses to activate only the relevant parts. Which modules or drivers it loads, so to speak.&amp;nbsp;If a cell needs to do something, it whips up the right piece of the genome and transcribes it into RNA. The RNA is then translated into a sequence of amino acids, which together make up a protein the DNA coded for."&lt;br /&gt;
&lt;br /&gt;
I would analogize the DNA processing of the cell like so,&amp;nbsp;DNA is a special type of hardware device and storage software. &amp;nbsp;Imagine it is like a &lt;b&gt;VMWare like virtual machine&lt;/b&gt;. &amp;nbsp;&amp;nbsp;Not only does it store important information about the cell, key blueprint information about how the cell should function. &amp;nbsp;But DNA also has special software for &lt;b&gt;dynamically running other applications&lt;/b&gt;. &amp;nbsp;VMWare virtual machine has persistent information contained within its image file. &amp;nbsp;But, the VMWare player can also execute the machine.&lt;br /&gt;
&lt;br /&gt;
The DNA virtual machine has the cron task launcher and only one cron job configured. &amp;nbsp;The cron job program launches special software that makes a "web-service call to some remote server". The web-service message might be similar to mRNA and the content is based on core DNA data stored on the virtual machine. &amp;nbsp; I used the analogy of a remote web-service call because DNA can't leave the nucleus so information and functions are sent remotely. &amp;nbsp;During transcription, RNA is copied from DNA. &amp;nbsp;Eventually, proteins are created. &amp;nbsp;RNA has message information for which protein to create.&lt;br /&gt;
&lt;br /&gt;
So, during the lifecycle of the cell, cron jobs are running every 5 minutes. &amp;nbsp;The cron job task launches an application reading information from DNA, then launches a web-service call. &amp;nbsp;At the back-end server, the data from the web-service call (mRNA) is used with data from the server-side (tRNA). &amp;nbsp;Some additional routines get kicked off on the back-end and&amp;nbsp;eventually&amp;nbsp;proteins are created. &amp;nbsp;Proteins are also molecular chains that can be used as a structural component for the cell or used to for other cell tasks. &amp;nbsp;There are sixty thousand different proteins in the human body [1].&lt;br /&gt;
&lt;br /&gt;
(Note: 5 mins is an arbitrary time period for my analogy, a cell can live several months or decades). &lt;br /&gt;
&lt;br /&gt;
[1] The Machinery of Life – Goodsell - 1993&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-nMyrgye0nlw/Tv7QQ2nGhfI/AAAAAAAAAnk/fVcN4PwLnwU/s1600/jmol_image_dna.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/-nMyrgye0nlw/Tv7QQ2nGhfI/AAAAAAAAAnk/fVcN4PwLnwU/s400/jmol_image_dna.png" width="315" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/BerlinBrownAndSoftwareDevelopment/~4/vsHdTiUAW-s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://berlinbrowndev.blogspot.com/feeds/5896231014067362833/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6469693320219923273&amp;postID=5896231014067362833" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/5896231014067362833?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/5896231014067362833?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BerlinBrownAndSoftwareDevelopment/~3/vsHdTiUAW-s/dna-seen-through-eyes-of-coder-my-take.html" title="DNA seen through the eyes of a coder, my take" /><author><name>Berlin Brown</name><uri>https://plus.google.com/106721302704615680699</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-LJenpITcd6E/AAAAAAAAAAI/AAAAAAAAA3c/NkySR7_V8AI/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-nMyrgye0nlw/Tv7QQ2nGhfI/AAAAAAAAAnk/fVcN4PwLnwU/s72-c/jmol_image_dna.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://berlinbrowndev.blogspot.com/2011/12/dna-seen-through-eyes-of-coder-my-take.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0YERHgzfSp7ImA9WhRWEU4.&quot;"><id>tag:blogger.com,1999:blog-6469693320219923273.post-8517125747457146558</id><published>2011-12-26T19:56:00.001-05:00</published><updated>2011-12-29T00:05:05.685-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-29T00:05:05.685-05:00</app:edited><title>Lorenz Attractor 3D View</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-J_LmDsWIJGo/TvkXIG-tycI/AAAAAAAAAnY/YStJ71TZwZM/s1600/LorenzImageFromJava.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="542" src="http://2.bp.blogspot.com/-J_LmDsWIJGo/TvkXIG-tycI/AAAAAAAAAnY/YStJ71TZwZM/s640/LorenzImageFromJava.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://upload.wikimedia.org/wikipedia/en/math/a/e/b/aeb53d5ef06eba4ab271069851413897.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://upload.wikimedia.org/wikipedia/en/math/a/e/b/aeb53d5ef06eba4ab271069851413897.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://upload.wikimedia.org/wikipedia/en/math/7/4/f/74fe0bb652d9a426a1f601424c7c33b2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://upload.wikimedia.org/wikipedia/en/math/7/4/f/74fe0bb652d9a426a1f601424c7c33b2.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://upload.wikimedia.org/wikipedia/en/math/a/1/9/a197663f502ba9703ca12b39669a69f7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://upload.wikimedia.org/wikipedia/en/math/a/1/9/a197663f502ba9703ca12b39669a69f7.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;b&gt;Resources:&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
[1]&amp;nbsp;&lt;a href="http://jvmnotebook.googlecode.com/svn/trunk/blog/java/Lorenz"&gt;http://jvmnotebook.googlecode.com/svn/trunk/blog/java/Lorenz&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
[2]&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Lorenz_attractor"&gt;http://en.wikipedia.org/wiki/Lorenz_attractor&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
[3]&amp;nbsp;&lt;a href="http://berlinbrown.github.com/newpages/applet2/applet2.html"&gt;http://berlinbrown.github.com/newpages/applet2/applet2.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
[4]&amp;nbsp;&lt;a href="http://berlinbrown.github.com/"&gt;http://berlinbrown.github.com/&lt;/a&gt;&amp;nbsp;- Github projects&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;span style="text-align: justify;"&gt;Human life faces the same alternatives that confront all other forms of life—of adapting itself to the conditions under which it must live or becoming extinct. You have an advantage over the sagebrush in that you can move from your city or state or country to another, but after all that is not much of an advantage. For though you may improve your situation slightly you will still find that in any civilized country the main elements of your problem are the same.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/BerlinBrownAndSoftwareDevelopment/~4/OkBGS26sJlY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://berlinbrowndev.blogspot.com/feeds/8517125747457146558/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6469693320219923273&amp;postID=8517125747457146558" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/8517125747457146558?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/8517125747457146558?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BerlinBrownAndSoftwareDevelopment/~3/OkBGS26sJlY/lorenz-attractor-3d-view.html" title="Lorenz Attractor 3D View" /><author><name>Berlin Brown</name><uri>https://plus.google.com/106721302704615680699</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-LJenpITcd6E/AAAAAAAAAAI/AAAAAAAAA3c/NkySR7_V8AI/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-J_LmDsWIJGo/TvkXIG-tycI/AAAAAAAAAnY/YStJ71TZwZM/s72-c/LorenzImageFromJava.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://berlinbrowndev.blogspot.com/2011/12/lorenz-attractor-3d-view.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4BSH4_fCp7ImA9WhRWE0w.&quot;"><id>tag:blogger.com,1999:blog-6469693320219923273.post-8848938894116082026</id><published>2011-12-23T20:05:00.002-05:00</published><updated>2011-12-31T00:55:59.044-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-31T00:55:59.044-05:00</app:edited><title>Ron Paul is the most racist candidate in 2012 by far</title><content type="html">&lt;a href="http://www.youtube.com/watch?v=eMQmInReYlI" style="background-color: white; color: purple; font-family: Georgia, 'Times New Roman', Times, serif; font-size: 15px;"&gt;http://www.youtube.com/watch?v=eMQmInReYlI&lt;/a&gt;&lt;span style="background-color: white; font-family: Georgia, 'Times New Roman', Times, serif; font-size: 15px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="background-color: white; font-family: Georgia, 'Times New Roman', Times, serif; font-size: 15px;"&gt;Summary of his remarks.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="background-color: white; font-family: Georgia, 'Times New Roman', Times, serif; font-size: 15px;"&gt;Repeal drug laws and it will be a tremendous improvement for blacks snared in an injust system.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="background-color: white; font-family: Georgia, 'Times New Roman', Times, serif; font-size: 15px;"&gt;Systems that are impartial will have no special punishments or rewards for people. Right no no one can deny blacks are punished by our justice system. That has to stop. Blacks are 14% of drug users, yet are 36% of those arrested for drugs.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="background-color: white; font-family: Georgia, 'Times New Roman', Times, serif; font-size: 15px;"&gt;We must get black men out of prison. The war on drugs is responsible for this. It cost $400 billion since the 1970s fighting drugs. Prohibition is a failure. Drug addiction is a disease and should be treated medically.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="background-color: white; font-family: Georgia, 'Times New Roman', Times, serif; font-size: 15px;"&gt;Death penalty is wrong, unjust, and racist. The rich never get it, the poor and minorities are far more likely to get the death penalty.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="background-color: white; font-family: Georgia, 'Times New Roman', Times, serif; font-size: 15px;"&gt;Rosa Parks is one of his heros for engaging in peaceful civil disobedience against injust laws.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="background-color: white; font-family: Georgia, 'Times New Roman', Times, serif; font-size: 15px;"&gt;Ron Paul has gotten the most black votes of any Republican candidate because he is against injustice.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="background-color: white; font-family: Georgia, 'Times New Roman', Times, serif; font-size: 15px;"&gt;He will issue a presidential pardon to EVERYONE, black, white and otherwise convicted of non-violent drug "crimes".&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="background-color: white; font-family: Georgia, 'Times New Roman', Times, serif; font-size: 15px;"&gt;Libertarianism is about the individual, not the color of their skin. Paul is the anti-racist because he is the ONLY candidate that will protect people against vicious drug laws.&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; font-family: Georgia, 'Times New Roman', Times, serif; font-size: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Georgia, 'Times New Roman', Times, serif;"&gt;&lt;span style="font-size: 15px;"&gt;Edit: In recent news Kelly Clarkson supports Ron Paul for 2012. &amp;nbsp;And not a bad song: Stronger.&lt;/span&gt;&lt;/span&gt;&lt;img src="http://feeds.feedburner.com/~r/BerlinBrownAndSoftwareDevelopment/~4/f5ibco4hy04" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://berlinbrowndev.blogspot.com/feeds/8848938894116082026/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6469693320219923273&amp;postID=8848938894116082026" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/8848938894116082026?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/8848938894116082026?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BerlinBrownAndSoftwareDevelopment/~3/f5ibco4hy04/ron-paul-is-most-racist-candidate-in.html" title="Ron Paul is the most racist candidate in 2012 by far" /><author><name>Berlin Brown</name><uri>https://plus.google.com/106721302704615680699</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-LJenpITcd6E/AAAAAAAAAAI/AAAAAAAAA3c/NkySR7_V8AI/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://berlinbrowndev.blogspot.com/2011/12/ron-paul-is-most-racist-candidate-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIESX84cCp7ImA9WhBTGEQ.&quot;"><id>tag:blogger.com,1999:blog-6469693320219923273.post-320413978904836825</id><published>2011-12-21T16:04:00.000-05:00</published><updated>2013-02-14T20:58:28.138-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-02-14T20:58:28.138-05:00</app:edited><title>A Physics Example in Java: A Projectile Fired from a Cannon, 2D Particle Kinematics</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Here is an example program that shows how to implement kinematic equations for projectile motion using Java and the Swing 2D graphics libraries.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-z-VFwSi3sCM/TvJH3GiS-vI/AAAAAAAAAm8/g3EGbXhc4LY/s1600/a1.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-z-VFwSi3sCM/TvJH3GiS-vI/AAAAAAAAAm8/g3EGbXhc4LY/s1600/a1.gif" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Equation used to plot projectile path along the X and Y axis&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;div&gt;
The Java code for these equations are simple, here is the current implementation of the doSimulation routine. The routine calculates the X and Y positions of the projectile over time.&amp;nbsp; The project only consists of two classes, the class for rendering the simulation and initializing the application.&amp;nbsp; The other class contains logic for calculating the X and Y positions.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-JZdNHcPI-ng/TvJLBgUAeTI/AAAAAAAAAnE/b7jqwxgAEyE/s1600/java_code_path.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="422" src="http://4.bp.blogspot.com/-JZdNHcPI-ng/TvJLBgUAeTI/AAAAAAAAAnE/b7jqwxgAEyE/s640/java_code_path.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Java code, DoSimulation routine, see s.i and s.k for the X/Y positions&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-P1XBGx-2MmI/TvJL7j7toiI/AAAAAAAAAnM/9HlcCBCpnc4/s1600/physics_cannon_draw.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="640" src="http://4.bp.blogspot.com/-P1XBGx-2MmI/TvJL7j7toiI/AAAAAAAAAnM/9HlcCBCpnc4/s640/physics_cannon_draw.png" width="616" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Java 2D Cannon Physics Simulation&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;b&gt;Java Source&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://jvmnotebook.googlecode.com/svn/trunk/blog/java/SimpleCannonPhysicsJava"&gt;https://jvmnotebook.googlecode.com/svn/trunk/blog/java/SimpleCannonPhysicsJava&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Based on code from: physics for game developers, David Bourg&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://berlin2research.com/dyna/berlinbrown_java_resume/"&gt;http://berlin2research.com/dyna/berlinbrown_java_resume/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;div style="margin-bottom: 0.75em; margin-top: 0.75em; text-align: justify;"&gt;
So today we see man a highly evolved creature who not only acts but thinks and feels. All these thoughts, feelings and emotions are interrelated.&lt;/div&gt;
&lt;div style="margin-bottom: 0.75em; margin-top: 0.75em; text-align: justify;"&gt;
The body and the mind of man are so closely bound together that whatever affects one affects the other. An instantaneous change of mind instantly changes the muscles of the face. A violent thought instantly brings violent bodily movements.&lt;/div&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/BerlinBrownAndSoftwareDevelopment/~4/Bh4kBqH-oMs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://berlinbrowndev.blogspot.com/feeds/320413978904836825/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6469693320219923273&amp;postID=320413978904836825" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/320413978904836825?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/320413978904836825?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BerlinBrownAndSoftwareDevelopment/~3/Bh4kBqH-oMs/physics-example-in-java-projectile.html" title="A Physics Example in Java: A Projectile Fired from a Cannon, 2D Particle Kinematics" /><author><name>Berlin Brown</name><uri>https://plus.google.com/106721302704615680699</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-LJenpITcd6E/AAAAAAAAAAI/AAAAAAAAA3c/NkySR7_V8AI/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-z-VFwSi3sCM/TvJH3GiS-vI/AAAAAAAAAm8/g3EGbXhc4LY/s72-c/a1.gif" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://berlinbrowndev.blogspot.com/2011/12/physics-example-in-java-projectile.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UBQnY7eCp7ImA9WhRWEU4.&quot;"><id>tag:blogger.com,1999:blog-6469693320219923273.post-5526630717349287581</id><published>2011-12-18T21:55:00.001-05:00</published><updated>2011-12-29T00:07:33.800-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-29T00:07:33.800-05:00</app:edited><title>Random Code Post of the Day (procedural haskell, parse file)</title><content type="html">This is a random code post of the day, with haskell, read a log file, search for a term and then write when the term is found to another file.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-ZLQyWHzuh7U/Tu6nFbkgRII/AAAAAAAAAms/wxMmssQVTvs/s1600/run_parse_log.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="564" src="http://3.bp.blogspot.com/-ZLQyWHzuh7U/Tu6nFbkgRII/AAAAAAAAAms/wxMmssQVTvs/s640/run_parse_log.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Haskell Source, open a file and search for a term&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;b&gt;Source&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;a href="https://jvmnotebook.googlecode.com/svn/trunk/blog/haskell/RandomParseFile"&gt;https://jvmnotebook.googlecode.com/svn/trunk/blog/haskell/RandomParseFile&lt;/a&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;----&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;span style="text-align: justify; text-indent: 16px;"&gt;It was a cloudy, sultry afternoon; the seamen were lazily lounging about the decks, or vacantly gazing over into the lead-coloured waters. Queequeg and I were mildly employed weaving what is called a sword-mat, for an additional lashing to our boat. So still and subdued and yet somehow preluding was all the scene, and such an incantation of reverie lurked in the air, that each silent sailor seemed resolved into his own invisible self.&lt;/span&gt;&lt;img src="http://feeds.feedburner.com/~r/BerlinBrownAndSoftwareDevelopment/~4/cojgMCIMjDk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://berlinbrowndev.blogspot.com/feeds/5526630717349287581/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6469693320219923273&amp;postID=5526630717349287581" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/5526630717349287581?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/5526630717349287581?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BerlinBrownAndSoftwareDevelopment/~3/cojgMCIMjDk/random-code-post-of-date-procedural.html" title="Random Code Post of the Day (procedural haskell, parse file)" /><author><name>Berlin Brown</name><uri>https://plus.google.com/106721302704615680699</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-LJenpITcd6E/AAAAAAAAAAI/AAAAAAAAA3c/NkySR7_V8AI/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-ZLQyWHzuh7U/Tu6nFbkgRII/AAAAAAAAAms/wxMmssQVTvs/s72-c/run_parse_log.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://berlinbrowndev.blogspot.com/2011/12/random-code-post-of-date-procedural.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QNQXg9fip7ImA9WhRWEU4.&quot;"><id>tag:blogger.com,1999:blog-6469693320219923273.post-1744645678766752671</id><published>2011-12-16T10:33:00.000-05:00</published><updated>2011-12-29T00:09:50.666-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-29T00:09:50.666-05:00</app:edited><title>Implementing Example One from the Machine Learning Class in Java</title><content type="html">At the end of 2011, Stanford offered a free online machine learning course. &amp;nbsp;The course covered many aspects of machine learning including linear regression, neural networks, super vector machines, and anomaly detection.&lt;br /&gt;
&lt;br /&gt;
Octave is an open software platform for numerical applications that is compatible with Matlab. &amp;nbsp;Octave was the &amp;nbsp; tool of choice for the machine learning class, all of the programming exercises required that you submit Octave source.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Overview of example one:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The first example in the course is to implement one variable linear regression. &amp;nbsp;The regression in linear regression is a regression towards a mean or moving closer towards a mean.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-o7s5srlwbfU/TuthSDrIkgI/AAAAAAAAAl0/C9NkQ0UH_Ho/s1600/eq1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-o7s5srlwbfU/TuthSDrIkgI/AAAAAAAAAl0/C9NkQ0UH_Ho/s1600/eq1.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-JrM11e0gK2Q/TuthBeX33AI/AAAAAAAAAls/7CUgnEC83M4/s1600/gradient_descent_matlab.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-JrM11e0gK2Q/TuthBeX33AI/AAAAAAAAAls/7CUgnEC83M4/s1600/gradient_descent_matlab.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Partial Approach for Gradient Descent with Octave&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-yzEAHbaSEdA/TuthezHMLQI/AAAAAAAAAl8/Dg3rJGL1VYo/s1600/b1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-yzEAHbaSEdA/TuthezHMLQI/AAAAAAAAAl8/Dg3rJGL1VYo/s1600/b1.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-ay4b_PaABFU/TuthteUQMHI/AAAAAAAAAmE/299koRPM1E0/s1600/c1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-ay4b_PaABFU/TuthteUQMHI/AAAAAAAAAmE/299koRPM1E0/s1600/c1.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
In the example, data points are read from a file and after running the example from Octave, this plot is generated.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-M0YnTDZypRA/TutjXz9OidI/AAAAAAAAAmM/OVce8eORtt4/s1600/plot_linear_line1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="388" src="http://3.bp.blogspot.com/-M0YnTDZypRA/TutjXz9OidI/AAAAAAAAAmM/OVce8eORtt4/s640/plot_linear_line1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Overview of example one in Java:&lt;/b&gt;
&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
The Java implementation as you might expect is more verbose than the Octave equivalent. &amp;nbsp;Java doesn't include a matrix library in the standard toolkit so it took 5-10 lines more code to implement basic matrix multiplication as opposed to the seamless multiplication in Octave.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-bDdCkx_bx6I/TutkI5rgF1I/AAAAAAAAAmU/DaVMn7-I01M/s1600/java_octave_example1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="484" src="http://1.bp.blogspot.com/-bDdCkx_bx6I/TutkI5rgF1I/AAAAAAAAAmU/DaVMn7-I01M/s640/java_octave_example1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-va0G9LIpuhs/TutkeolY6BI/AAAAAAAAAmc/JaITo4dQFUE/s1600/java_example_screen_ml2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="572" src="http://3.bp.blogspot.com/-va0G9LIpuhs/TutkeolY6BI/AAAAAAAAAmc/JaITo4dQFUE/s640/java_example_screen_ml2.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Java Swing Example of MlClass Ex1, regression line and data points&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;b&gt;Resources&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.gnu.org/software/octave/"&gt;http://www.gnu.org/software/octave/&lt;/a&gt;
&lt;br /&gt;
&lt;a href="http://www.ml-class.org/course/class/index"&gt;http://www.ml-class.org/course/class/index&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Note: &amp;nbsp;I tried not to provide a full matlab implementation from the machine learning course as that wouldn't be fair to the students. &amp;nbsp;Plus the implementation is in Java and really ideal for the actual course.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Source&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://jvmnotebook.googlecode.com/svn/trunk/blog/java/ConvertMachineLearningToJava/"&gt;http://jvmnotebook.googlecode.com/svn/trunk/blog/java/ConvertMachineLearningToJava/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Contact&lt;/b&gt;&lt;br /&gt;
berlin dot brown at gmail.com&lt;br /&gt;
&lt;br /&gt;
"&lt;span style="text-align: justify; text-indent: 16px;"&gt;In the tumultuous business of cutting-in and attending to a whale, there is much running backwards and forwards among the crew. Now hands are wanted here, and then again hands are wanted there. There is no staying in any one place; for at one and the same time everything has to be done everywhere. It is much the same with him who endeavors the description of the scene.&lt;/span&gt;&lt;span style="text-align: justify; text-indent: 16px;"&gt;&amp;nbsp;"&lt;/span&gt;&lt;img src="http://feeds.feedburner.com/~r/BerlinBrownAndSoftwareDevelopment/~4/CSrlvROgjdU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://berlinbrowndev.blogspot.com/feeds/1744645678766752671/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6469693320219923273&amp;postID=1744645678766752671" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/1744645678766752671?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/1744645678766752671?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BerlinBrownAndSoftwareDevelopment/~3/CSrlvROgjdU/implementing-example-one-from-machine.html" title="Implementing Example One from the Machine Learning Class in Java" /><author><name>Berlin Brown</name><uri>https://plus.google.com/106721302704615680699</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-LJenpITcd6E/AAAAAAAAAAI/AAAAAAAAA3c/NkySR7_V8AI/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-o7s5srlwbfU/TuthSDrIkgI/AAAAAAAAAl0/C9NkQ0UH_Ho/s72-c/eq1.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://berlinbrowndev.blogspot.com/2011/12/implementing-example-one-from-machine.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MMRXc6cCp7ImA9WhVSFE4.&quot;"><id>tag:blogger.com,1999:blog-6469693320219923273.post-7560695303768919696</id><published>2011-12-14T16:46:00.000-05:00</published><updated>2012-03-10T21:04:44.918-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-10T21:04:44.918-05:00</app:edited><title>Quick LaTeX Equation Examples for use by programmers on windows, convert to PNG</title><content type="html">LaTeX/TeX is a complex documenting system that is mostly used in a academic setting but can also be used by anyone to convey information. &amp;nbsp;It is a complete system but a massive system that has been in development for decades so it isn't something that you skim over and become fluent in. &amp;nbsp;But I did want to provide some full setup scripts so you can add write an equation and add an image of that equation or pseudo code to your blog or word documents.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Install Cygwin and tetex&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
You can install all of the tex software through cygwin. &amp;nbsp;Use the cygwin easy click through install wizard. &amp;nbsp;Select all of the Publishing/tetex* &amp;nbsp;applications.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-5xL6K0wPmKM/TukRCJhlIXI/AAAAAAAAAkk/xmtp_WNeZf4/s1600/install_cygwin_tex.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="452" src="http://2.bp.blogspot.com/-5xL6K0wPmKM/TukRCJhlIXI/AAAAAAAAAkk/xmtp_WNeZf4/s640/install_cygwin_tex.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;1.1 Install of tetex through Cygwin setup&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;b&gt;Install Cygwin, make and gcc and vim&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
gcc and make aren't required for tetext but I use a make script to run tex. &amp;nbsp;Install gcc and make through the cygwin installer.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Download my make script and example tex files&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://jvmnotebook.googlecode.com/svn/trunk/blog/LatexEquations/src/"&gt;http://jvmnotebook.googlecode.com/svn/trunk/blog/LatexEquations/src/&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
There are several makefiles on the Internet for running tex files into tex and then converting them into some output. &amp;nbsp;Download the Makefile that I have in my link and you can simply type 'make' in a directory that has a collection of tex files. &lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-7Fvxw8gdGN8/TukSaes6J8I/AAAAAAAAAks/k1zBvhQ50Bg/s1600/screen_at_make.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-7Fvxw8gdGN8/TukSaes6J8I/AAAAAAAAAks/k1zBvhQ50Bg/s1600/screen_at_make.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;1.2 At directory, see makefile, launch cygwin and run 'make' at a directory with tex files&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;b&gt;Write a simple equation and convert to PNG&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
You will need to follow a three step process to in order to add an equation or pseudo image to your blog; write the equation in vim, execute the provided makefile, run the dvigif command. &amp;nbsp;Enter this equation using vim.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/--z05uDS9xzo/TukUSPIhW0I/AAAAAAAAAk0/CZyN52Qc59Q/s1600/equation_tex.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/--z05uDS9xzo/TukUSPIhW0I/AAAAAAAAAk0/CZyN52Qc59Q/s1600/equation_tex.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;1.3 Equation in vim&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-NBPALudB-0s/TukU5vsYemI/AAAAAAAAAk8/Hq_vivV070E/s1600/make_command_with_dvi.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-NBPALudB-0s/TukU5vsYemI/AAAAAAAAAk8/Hq_vivV070E/s1600/make_command_with_dvi.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;1.4 Running 'make' and then dvigif command&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
dvigif --png -T'6.6in,7in' b.dvi&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-PTwvMLK8Hcc/TukV4e89DDI/AAAAAAAAAlE/dD9fnnTCy5I/s1600/z1.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-PTwvMLK8Hcc/TukV4e89DDI/AAAAAAAAAlE/dD9fnnTCy5I/s1600/z1.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;1.5 PNG image output after running make build on tex &amp;nbsp;files and the dvigif command&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-GGLKxqUVghY/TukWddvbGtI/AAAAAAAAAlM/8eQV5XmHDIk/s1600/equation_more1.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="443" src="http://1.bp.blogspot.com/-GGLKxqUVghY/TukWddvbGtI/AAAAAAAAAlM/8eQV5XmHDIk/s640/equation_more1.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;1.6.a Tex source with various equations and pseudo code&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-IRS05aGMaVo/TukW2WpHD7I/AAAAAAAAAlU/1i4Qnnm13t0/s1600/a1.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="640" src="http://4.bp.blogspot.com/-IRS05aGMaVo/TukW2WpHD7I/AAAAAAAAAlU/1i4Qnnm13t0/s640/a1.png" width="602" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;1.6.b Output PNG image from tex source defined in figure 1.6.a&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-gYsqcLr2KIc/TukXlJZ6b9I/AAAAAAAAAlc/lGZi_wLtelU/s1600/screenshot_src_tex2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="442" src="http://1.bp.blogspot.com/-gYsqcLr2KIc/TukXlJZ6b9I/AAAAAAAAAlc/lGZi_wLtelU/s640/screenshot_src_tex2.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;1.7 Source with pseudo code&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ej2aq_gqAtY/TukX1ee-h4I/AAAAAAAAAlk/lLgdfHuI-ks/s1600/b1.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/-ej2aq_gqAtY/TukX1ee-h4I/AAAAAAAAAlk/lLgdfHuI-ks/s400/b1.png" width="376" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;1.7.b Output from pseudo code&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;b&gt;Additional Resources&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
[1]. Example Source -&amp;nbsp;&lt;a href="http://jvmnotebook.googlecode.com/svn/trunk/blog/LatexEquations/src/"&gt;http://jvmnotebook.googlecode.com/svn/trunk/blog/LatexEquations/src/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
[2].&amp;nbsp;&lt;a href="http://en.wikibooks.org/wiki/LaTeX/Algorithms_and_Pseudocode"&gt;http://en.wikibooks.org/wiki/LaTeX/Algorithms_and_Pseudocode&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
[3].&amp;nbsp;&lt;a href="http://www.cs.uiuc.edu/~jeffe/teaching/algorithms/"&gt;http://www.cs.uiuc.edu/~jeffe/teaching/algorithms/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Environment&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Tested with:&lt;br /&gt;
&lt;br /&gt;
WindowsXP&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CYGWIN_NT-5.1 1.7.9(0.237/5/3) 2011-03-29 10:10 i686 Cygwin&lt;br /&gt;
&lt;br /&gt;
TeX 3.141592 (Web2C 7.5.4)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;span style="text-align: justify;"&gt;"The extreme Cerebral differs from other types chiefly in the fact that while his head is unusually large compared to the body, his alimentive, thoracic, muscular and bony systems are smaller and less developed than the average. The latter fact is due to the same law which causes the Alimentive to have a large body and a small head. Nature is a wonderful efficiency engineer. She provides only as much space as is required for the functioning of any particular organ, giving extra space only to those departments that need it."&lt;/span&gt;&lt;br /&gt;
&lt;span style="text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="text-align: justify;"&gt;&lt;span style="text-align: -webkit-auto;"&gt;--- Berlin Brown&lt;/span&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/BerlinBrownAndSoftwareDevelopment/~4/sWX4-Fen3gM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://berlinbrowndev.blogspot.com/feeds/7560695303768919696/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6469693320219923273&amp;postID=7560695303768919696" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/7560695303768919696?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/7560695303768919696?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BerlinBrownAndSoftwareDevelopment/~3/sWX4-Fen3gM/quick-latex-equation-examples-for-use.html" title="Quick LaTeX Equation Examples for use by programmers on windows, convert to PNG" /><author><name>Berlin Brown</name><uri>https://plus.google.com/106721302704615680699</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-LJenpITcd6E/AAAAAAAAAAI/AAAAAAAAA3c/NkySR7_V8AI/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-5xL6K0wPmKM/TukRCJhlIXI/AAAAAAAAAkk/xmtp_WNeZf4/s72-c/install_cygwin_tex.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://berlinbrowndev.blogspot.com/2011/12/quick-latex-equation-examples-for-use.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0YBQ3Y5eCp7ImA9WhRWEU4.&quot;"><id>tag:blogger.com,1999:blog-6469693320219923273.post-2285961192725638667</id><published>2011-11-14T18:16:00.001-05:00</published><updated>2011-12-29T00:05:52.820-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-29T00:05:52.820-05:00</app:edited><title>OpenJDK Java8 Lambda Syntax</title><content type="html">This document provides some working examples of the future OpenJDK 8 lambda syntax. &amp;nbsp; There was a lot of discussion whether the language changes would get included in the Java7 or Java8 so it looks like we will see the changes in Java8 slated for release in 2013.&lt;br /&gt;
&lt;br /&gt;
The lambda conversion uses a target SAM type or single abstract method. &lt;br /&gt;
&lt;br /&gt;
You can see the conversion in this example:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; interface F {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; void f();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; final F func = () -&amp;gt; System.out.println("Test");&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println("Function Object : " + func);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; func.f();&lt;br /&gt;
...&lt;br /&gt;
The variable type on the left is an interface of type 'F' with a single method 'f'.&lt;br /&gt;
&lt;br /&gt;
It seems that the Java lambda implementation provides a slightly more expressive syntax for code blocks&amp;nbsp;that you would normally see in an anonymous inner class. &amp;nbsp;These sections of &amp;nbsp;code are&amp;nbsp;synonymous.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;for (int i = 0; i &amp;lt; 10; i++) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; final int ii = i;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; final int res6 = ((Fx)( (final int y) -&amp;gt; y + ii )).f(10); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println("[6] Output from recent lambda call index="+i+" : " + res6);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int i = 0; i &amp;lt; 10; i++) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; final int ii = i;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // @line70, anon inner class call&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; final Fx fxx = new Fx() {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public int f(int y) { return y + ii; } &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; final int res6 = fxx.f(10); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println("[7] Output from anonymous inner call index="+i+" : " + res6);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-vsn395fASQU/TsGkGmzo7iI/AAAAAAAAAkY/lkVARBfQTys/s1600/screenshot_example_lambda_java8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="578" src="http://3.bp.blogspot.com/-vsn395fASQU/TsGkGmzo7iI/AAAAAAAAAkY/lkVARBfQTys/s640/screenshot_example_lambda_java8.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;Resources:&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
The Lambda team provided a binary build of Javac and Java for Windows and Linux. &lt;br /&gt;
&lt;br /&gt;
[1]&amp;nbsp;&lt;a href="http://jdk8.java.net/lambda/"&gt;http://jdk8.java.net/lambda/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$ ./java.bat&lt;br /&gt;
openjdk version "1.8.0-ea"&lt;br /&gt;
OpenJDK Runtime Environment (build 1.8.0-ea-b1314)&lt;br /&gt;
OpenJDK Client VM (build 23.0-b04, mixed mode)&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://github.com/berlinbrown/BuildingOpenJDKCookbook"&gt;https://github.com/berlinbrown/BuildingOpenJDKCookbook&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://github.com/berlinbrown/BuildingOpenJDKCookbook/blob/master/BuildingJDK8/ExampleLambdaProject/LambdaJava8Test.java"&gt;BuildingJDK8/ExampleLambdaProject/LambdaJava8Test.java&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://hg.openjdk.java.net/lambda/lambda/"&gt;http://hg.openjdk.java.net/lambda/lambda/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://mail.openjdk.java.net/pipermail/lambda-dev/attachments/20100122/3764c21a/attachment.txt"&gt;http://mail.openjdk.java.net/pipermail/lambda-dev/attachments/20100122/3764c21a/attachment.txt&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;span style="text-align: justify;"&gt;The Thoracic system may be compared to a great freight system, with each of its tributaries&lt;/span&gt;&lt;span class="pagenum" style="font-size: smaller; left: 92%; position: absolute; text-align: right;"&gt;&lt;a href="" id="Page_218" name="Page_218"&gt;[Pg 218]&lt;/a&gt;&lt;/span&gt;&lt;span style="text-align: justify;"&gt;—from the main trunk arteries down to the tiniest blood vessels—starting from the heart and carrying its cargo of blood to every part of the body by means of the power furnished by the lungs.&lt;/span&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/BerlinBrownAndSoftwareDevelopment/~4/G-3VdMyyJbQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://berlinbrowndev.blogspot.com/feeds/2285961192725638667/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6469693320219923273&amp;postID=2285961192725638667" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/2285961192725638667?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/2285961192725638667?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BerlinBrownAndSoftwareDevelopment/~3/G-3VdMyyJbQ/openjdk-java8-lambda-syntax.html" title="OpenJDK Java8 Lambda Syntax" /><author><name>Berlin Brown</name><uri>https://plus.google.com/106721302704615680699</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-LJenpITcd6E/AAAAAAAAAAI/AAAAAAAAA3c/NkySR7_V8AI/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-vsn395fASQU/TsGkGmzo7iI/AAAAAAAAAkY/lkVARBfQTys/s72-c/screenshot_example_lambda_java8.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://berlinbrowndev.blogspot.com/2011/11/openjdk-java8-lambda-syntax.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0EHQXo7eyp7ImA9WhVSFks.&quot;"><id>tag:blogger.com,1999:blog-6469693320219923273.post-5818959100710038604</id><published>2011-11-07T15:31:00.000-05:00</published><updated>2012-03-13T16:13:50.403-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-13T16:13:50.403-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="parser" /><category scheme="http://www.blogger.com/atom/ns#" term="lexer" /><category scheme="http://www.blogger.com/atom/ns#" term="compiler" /><category scheme="http://www.blogger.com/atom/ns#" term="ast" /><category scheme="http://www.blogger.com/atom/ns#" term="openjdk" /><category scheme="http://www.blogger.com/atom/ns#" term="jvm" /><title>Implementing a Parser and Simple Compiler for the Java Virtual Machine</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;1. Overview&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&amp;nbsp; This document covers the implementation of a simple recursive-descent parser for an infix adder language with a lexer, parser, and compiler. &amp;nbsp;The language is implemented with Java and compiles to Java Virtual Machine (JVM) bytecode. &amp;nbsp;The first implementation of the compiler is different from other implementations because it is fully implemented in one class without third party parser generator libraries. &amp;nbsp;The implementation of the language only uses the Java standard libraries. &amp;nbsp;The code for the parser does not use a parser generator so it only contains pure Java standard libraries and no references to third-party libraries.&lt;br /&gt;
&lt;br /&gt;
I wanted to discuss this particular example it helps for you to understand the nature of programming languages and their implementation. &amp;nbsp;Don't be scared about the parsing input token routines in them. &amp;nbsp;They help as a tool to the developer. &amp;nbsp;This a basic implementation but at least I provided a JVM compiler. &amp;nbsp;Actually code generator from the AST to JVM byte code.&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ppBOm4Mp7oY/Tny3bIlzjvI/AAAAAAAAAjk/K-LsNwtiUHk/s1600/output_from_language.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="119" src="http://2.bp.blogspot.com/-ppBOm4Mp7oY/Tny3bIlzjvI/AAAAAAAAAjk/K-LsNwtiUHk/s400/output_from_language.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Figure 1 : Mini adder language input (6 tokens are visible)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;span class="Apple-style-span"&gt;&amp;nbsp; The language program in the snippet above consists of a SYMBOL name token, an assignment token, NUMBER value the PLUS token and another NUMBER token. &amp;nbsp;The result of the add operation is stored in &amp;nbsp;global memory. &amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;2. Lexical Analysis&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&amp;nbsp; The lexical analysis consists of reading the character tokens from the input stream and then converting those &amp;nbsp; ASCII characters into tokens that are used by our language.&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-LEliLzgJpOE/Tnub2pJaK1I/AAAAAAAAAjI/izkanWg9O8U/s1600/screenshot_lexer_code.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/-LEliLzgJpOE/Tnub2pJaK1I/AAAAAAAAAjI/izkanWg9O8U/s400/screenshot_lexer_code.png" width="318" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Figure 2: Source code for lexer method, convert input ASCII characters into our language token types&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&amp;nbsp; If you look at the code snippet above, the lexer method mostly consists of a large case statement that checks for a particular character and then creates a wrapper token object for that character. Once the token object is created, we add start to add the token node to the abstract syntax tree.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;3. Lexer and Simple Parser with ANTLR&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
The parser example code uses only the Java standard libraries. &amp;nbsp; Most developers that write domain specific languages or other programming languages may use a parser generator. &amp;nbsp;ANTLR is a parser generator system written in Java that can output parser code in Java programming language or Python. &amp;nbsp;You provide a grammar and ANTLR generates the code that you can use for the lexer and parser. &amp;nbsp;In our case, are going to create a simple grammar and then two classes are created, the lexer and parser.&lt;br /&gt;
&lt;br /&gt;
When then feed the input tokens to our ANTLR code generated code.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-QyFrjHrsXwc/Trf1GNWbX5I/AAAAAAAAAkA/cWc6AuuYl_w/s1600/example_antlr_grammar.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="168" src="http://3.bp.blogspot.com/-QyFrjHrsXwc/Trf1GNWbX5I/AAAAAAAAAkA/cWc6AuuYl_w/s400/example_antlr_grammar.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-iGEJJ5JIdpM/Trf18qM1tgI/AAAAAAAAAkQ/NJjS05pJIQc/s1600/example_image_with_code_usage.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="208" src="http://2.bp.blogspot.com/-iGEJJ5JIdpM/Trf18qM1tgI/AAAAAAAAAkQ/NJjS05pJIQc/s640/example_image_with_code_usage.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;4. Parser Implementation and Abstract Syntax Tree (AST)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&amp;nbsp; The parser implementation converts and analyzes the tokens and coverts the tokens to an abstract syntax tree. &amp;nbsp;Once we build the AST, then we can traverse the tree and perform operations at each node.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-xuQyZTp8a7o/Tnx8iVQ5AtI/AAAAAAAAAjc/Cm7mtY2O65E/s1600/ast_parser_ll_lookahead.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="248" src="http://2.bp.blogspot.com/-xuQyZTp8a7o/Tnx8iVQ5AtI/AAAAAAAAAjc/Cm7mtY2O65E/s400/ast_parser_ll_lookahead.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Figure 3.1 : Lookahead parsing (LL(2)) and look for match errors&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&amp;nbsp; We used look ahead two parsing. &amp;nbsp; Match method.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-m39-dJ3NYH8/TnzrEFp_1-I/AAAAAAAAAjw/qG8hB_GZOdk/s1600/building_the_ast.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="162" src="http://2.bp.blogspot.com/-m39-dJ3NYH8/TnzrEFp_1-I/AAAAAAAAAjw/qG8hB_GZOdk/s400/building_the_ast.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Figure 3.2 : Output from Abstract Syntax Tree&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-2k3ivvHpVZA/Tnui04YB_0I/AAAAAAAAAjQ/j_Y9P6c_FkA/s1600/ast_builder_assignment.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="496" src="http://2.bp.blogspot.com/-2k3ivvHpVZA/Tnui04YB_0I/AAAAAAAAAjQ/j_Y9P6c_FkA/s640/ast_builder_assignment.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Figure 3: &amp;nbsp;Building the AST&lt;br /&gt;
&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;b&gt;4.1 Mini Language Functionality: Adding, Global Memory, Printing&lt;/b&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-EzUHHqrD2Ds/TnujOOSulEI/AAAAAAAAAjY/rIxzuaqznvs/s1600/screenshot_parser_visitor.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-EzUHHqrD2Ds/TnujOOSulEI/AAAAAAAAAjY/rIxzuaqznvs/s1600/screenshot_parser_visitor.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Figure 4: &amp;nbsp;Visitor implementation, visit the AST expression nodes. &amp;nbsp;Perform 'add' operation&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style="text-align: center;"&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;5. Java Bytecode&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large; font-weight: bold;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span class="Apple-style-span"&gt;The Java bytecode consists of &amp;nbsp;the magic number CAFEBABE. &amp;nbsp;After that comes the constant pool data. &amp;nbsp;After the constant pool data comes the data buffer which consists of the code block.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;b&gt;5.1 Java Tools : Javap&lt;/b&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-p7m4v6F9V04/TnyqE3XcWNI/AAAAAAAAAjg/EOVkJHux5vQ/s1600/javap_output.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="640" src="http://4.bp.blogspot.com/-p7m4v6F9V04/TnyqE3XcWNI/AAAAAAAAAjg/EOVkJHux5vQ/s640/javap_output.png" width="628" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Figure 5 : Output from Javap Disassemble/Decompile on a Java Class&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style="text-align: center;"&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;b&gt;5.2 The Constant Pool&lt;/b&gt;&lt;/div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &lt;/b&gt;The constant pool is a collection of constants that are referenced by ID in the data buffer or code section.&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;b&gt;5.3 The Data Buffer and Code Section Attributes&lt;/b&gt;&lt;br /&gt;
&lt;div style="text-align: left;"&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
The data buffer code section contains the code.&lt;/div&gt;
&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;b&gt;5.4 Analyzing the OpenJDK Java Source&lt;/b&gt;&lt;/div&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-jw6Vm_3QOTs/TnzjgfWgBTI/AAAAAAAAAjo/Vx7hMBRh3ZM/s1600/screenshot_classwriter_open_jdk.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="640" src="http://4.bp.blogspot.com/-jw6Vm_3QOTs/TnzjgfWgBTI/AAAAAAAAAjo/Vx7hMBRh3ZM/s640/screenshot_classwriter_open_jdk.png" width="523" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Figure 6 : OpenJDK Java Source ClassWriter.java, writes Java bytecode to file/stream&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;6. Mini Compiler Implementation (writing to JVM bytecode)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&amp;nbsp; When thinking about the Java programming language, think of it as a wrapper for generating Java bytecode. &amp;nbsp;You don't necessarily need a mainstream programming language. &amp;nbsp;You do need to format the bytecode input into a class file and feed that into the Java virtual machine.&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Ji6ti-eY-1U/Tnzknfp9ptI/AAAAAAAAAjs/Se74FF8_M5Y/s1600/adding_to_constant_pool.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="238" src="http://4.bp.blogspot.com/-Ji6ti-eY-1U/Tnzknfp9ptI/AAAAAAAAAjs/Se74FF8_M5Y/s640/adding_to_constant_pool.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Figure 7 : Mini adder compiler, adding constants to constant pool. Matches Javap output (see comments)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;7. Conclusion&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
This document covers the implementation of a compiler, a very basic compiler for the JVM. &amp;nbsp;We looked at the lexer, the parser, the AST, JVM bytecode and compiler.&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;A. Resources&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;B. Source Code&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a href="https://github.com/berlinbrown/ImperativeStaticCompiledLangOneFile"&gt;https://github.com/berlinbrown/ImperativeStaticCompiledLangOneFile - Github Source, see CompiledLangOneFile.java)&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Also see:&lt;br /&gt;
&lt;a href="http://math-services.appspot.com/lang2.jsp"&gt;http://math-services.appspot.com/lang2.jsp&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;C. Building the OpenJDK Java Compiler&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;D. Tools&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a href="http://www.antlr.org/"&gt;http://www.antlr.org/&lt;/a&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;E. Disclaimer&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
For this document, I included snapshot images of the source instead of the actual source because I plan on converting this document to other formats. &amp;nbsp;I wanted to keep some of the syntax highlighting from my IDE.&lt;br /&gt;
&lt;br /&gt;
-- Berlin Brown on 9/22/2011&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BerlinBrownAndSoftwareDevelopment/~4/6UTTfPaouns" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://berlinbrowndev.blogspot.com/feeds/5818959100710038604/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6469693320219923273&amp;postID=5818959100710038604" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/5818959100710038604?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6469693320219923273/posts/default/5818959100710038604?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BerlinBrownAndSoftwareDevelopment/~3/6UTTfPaouns/implementing-parser-and-simple-compiler.html" title="Implementing a Parser and Simple Compiler for the Java Virtual Machine" /><author><name>Berlin Brown</name><uri>https://plus.google.com/106721302704615680699</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-LJenpITcd6E/AAAAAAAAAAI/AAAAAAAAA3c/NkySR7_V8AI/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-ppBOm4Mp7oY/Tny3bIlzjvI/AAAAAAAAAjk/K-LsNwtiUHk/s72-c/output_from_language.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://berlinbrowndev.blogspot.com/2011/11/implementing-parser-and-simple-compiler.html</feedburner:origLink></entry></feed>
