<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://aznot.com/index.php?action=history&amp;feed=atom&amp;title=OpenWest_Conference_2014</id>
	<title>OpenWest Conference 2014 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://aznot.com/index.php?action=history&amp;feed=atom&amp;title=OpenWest_Conference_2014"/>
	<link rel="alternate" type="text/html" href="https://aznot.com/index.php?title=OpenWest_Conference_2014&amp;action=history"/>
	<updated>2026-05-07T08:31:37Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://aznot.com/index.php?title=OpenWest_Conference_2014&amp;diff=1771&amp;oldid=prev</id>
		<title>Kenneth: Created page with &quot;== OpenWest Conference 2014 ==  OpenWest 2014 | Hardware • Standards • Source - http://www.openwest.org/   :OpenWest Conference 2014 :Utah Open Source :Thursday, May 8, 20...&quot;</title>
		<link rel="alternate" type="text/html" href="https://aznot.com/index.php?title=OpenWest_Conference_2014&amp;diff=1771&amp;oldid=prev"/>
		<updated>2015-02-12T23:51:06Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;== OpenWest Conference 2014 ==  OpenWest 2014 | Hardware • Standards • Source - http://www.openwest.org/   :OpenWest Conference 2014 :Utah Open Source :Thursday, May 8, 20...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== OpenWest Conference 2014 ==&lt;br /&gt;
&lt;br /&gt;
OpenWest 2014 | Hardware • Standards • Source - http://www.openwest.org/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:OpenWest Conference 2014&lt;br /&gt;
:Utah Open Source&lt;br /&gt;
:Thursday, May 8, 2014 at 8:00 AM - Saturday, May 10, 2014 at 5:00 PM (MDT)&lt;br /&gt;
:Orem, UT&lt;br /&gt;
&lt;br /&gt;
== Go ==&lt;br /&gt;
&lt;br /&gt;
Ken Thompson - Unix&lt;br /&gt;
&lt;br /&gt;
Google&lt;br /&gt;
&lt;br /&gt;
Gopher - GopherCon 2014&lt;br /&gt;
&lt;br /&gt;
Utah Go Users Group - www.utahgophers.com&lt;br /&gt;
* Tues. May 13 @ 6:30pm&lt;br /&gt;
&lt;br /&gt;
The Go Programming Language Specification - The Go Programming Language - http://golang.org/ref/spec&lt;br /&gt;
&lt;br /&gt;
Justifications:&lt;br /&gt;
* C++ too complex&lt;br /&gt;
* compilation too slow&lt;br /&gt;
* programming to difficult&lt;br /&gt;
* easy over safety and efficiency&lt;br /&gt;
&lt;br /&gt;
Comapnies:&lt;br /&gt;
* PayPal&lt;br /&gt;
* Github&lt;br /&gt;
* MongoDB&lt;br /&gt;
* Canonical&lt;br /&gt;
* Mozilla&lt;br /&gt;
* Stack Overflow&lt;br /&gt;
* Puppet Labs&lt;br /&gt;
&lt;br /&gt;
Twitter: #golang&lt;br /&gt;
 &lt;br /&gt;
Prediction: Will become dominant language for LaaS and PaaS in 24 months&lt;br /&gt;
&lt;br /&gt;
Go is...&lt;br /&gt;
* Compiled&lt;br /&gt;
* Strongly typed&lt;br /&gt;
* Statically typed&lt;br /&gt;
* Garbage collected&lt;br /&gt;
* Similar to C syntax&lt;br /&gt;
* Capable of statically verified duck typing (via interfaces)&lt;br /&gt;
* Open Source&lt;br /&gt;
&lt;br /&gt;
Hello World:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pakcage main&lt;br /&gt;
&lt;br /&gt;
import &amp;quot;fmt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
func main() {&lt;br /&gt;
    fmt.Println(&amp;quot;Hello World&amp;quot;)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: Semi colons are optional.&lt;br /&gt;
&lt;br /&gt;
Variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pakcage main&lt;br /&gt;
&lt;br /&gt;
import &amp;quot;fmt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
func main() {&lt;br /&gt;
    var i, j int = 1, 2&lt;br /&gt;
    k := 3&lt;br /&gt;
    c, python, java := true, false, &amp;quot;no!&amp;quot;&lt;br /&gt;
    fmt.Println(i, j, k, c, python, java)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When variables are first initialized, they are always set to their &amp;quot;zero&amp;quot; value.  There isn&amp;#039;t a null value?&lt;br /&gt;
&lt;br /&gt;
Comments:&lt;br /&gt;
 // comments use C&amp;#039;s syntax&lt;br /&gt;
 /* multi line comment */&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pakcage main&lt;br /&gt;
&lt;br /&gt;
import &amp;quot;fmt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
func add(x int, y int) int {&lt;br /&gt;
    return x + y&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
func main() {&lt;br /&gt;
    fmt.Println(...??&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Types:&lt;br /&gt;
* bool&lt;br /&gt;
* string&lt;br /&gt;
* int, int32, ...&lt;br /&gt;
* uint, uint8, ...&lt;br /&gt;
* byte&lt;br /&gt;
* rune alias for int32&lt;br /&gt;
* float32&lt;br /&gt;
* complex64&lt;br /&gt;
&lt;br /&gt;
Type conversions - no implicit conversions (have to manually cast)&lt;br /&gt;
&lt;br /&gt;
Looping - Go only has &amp;#039;for&amp;#039;&lt;br /&gt;
 for i := 0; i &amp;lt; MAX ; i++ { ... }&lt;br /&gt;
&lt;br /&gt;
While:&lt;br /&gt;
 for ; sum &amp;lt; 1000;  { sum += sum }&lt;br /&gt;
 for sum &amp;lt; 1000 { sum += sum }&lt;br /&gt;
&lt;br /&gt;
If/Else&lt;br /&gt;
 if x &amp;lt; 0 { ... }&lt;br /&gt;
 else if x &amp;gt; 0 { ... }&lt;br /&gt;
 else { ... }&lt;br /&gt;
&lt;br /&gt;
Don&amp;#039;t fear Go pointers&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
type Coordinate struct {&lt;br /&gt;
  X int&lt;br /&gt;
  Y int&lt;br /&gt;
  Z int&lt;br /&gt;
  name string&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
func GCP() *Coordinate {&lt;br /&gt;
  return &amp;amp;Coordinate{1, 2, 3, &amp;quot;foo&amp;quot;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
func main() {&lt;br /&gt;
 var cp *Coorindate = getCCP()&lt;br /&gt;
  fmt.Println(cp)&lt;br /&gt;
 fmt.Printf(&amp;quot;%T\n&amp;quot;, cp)&lt;br /&gt;
 ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Slices&lt;br /&gt;
&lt;br /&gt;
Range&lt;br /&gt;
 var pow = []int{1, 2, 3}&lt;br /&gt;
 func main() {&lt;br /&gt;
   for i, v := range pow {&lt;br /&gt;
     fmt.Printf(&amp;quot;%d: %d\n&amp;quot;, i, v)&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 for _, v := range pow { ... }&lt;br /&gt;
 // underscore is special&lt;br /&gt;
&lt;br /&gt;
Maps&lt;br /&gt;
&lt;br /&gt;
Access is marked public/private by the first letter of the member.  Public is capital.  Private is lowercase.&lt;br /&gt;
&lt;br /&gt;
Structs in Go - instead of classes in Object Oriented Programming&lt;br /&gt;
 type House struct { }&lt;br /&gt;
 func (h House) GetHouseName() string { } //method defined outside of struct, but works on House&lt;br /&gt;
&lt;br /&gt;
Interfaces are super important in Go.&lt;br /&gt;
 type noiser interface{&lt;br /&gt;
    GetNoise() string&lt;br /&gt;
 }&lt;br /&gt;
 type Cow struct{}   // empty structs&lt;br /&gt;
 type Fox struct{}&lt;br /&gt;
 func (f Fox) GetNoise() string { ... }&lt;br /&gt;
&lt;br /&gt;
No assertions?&lt;br /&gt;
&lt;br /&gt;
== jQuery ==&lt;br /&gt;
&lt;br /&gt;
jQuery Introduction - https://joind.in/user/main&lt;br /&gt;
&lt;br /&gt;
Expectations from lecture: Should know what a selector is and have some exposure.&lt;br /&gt;
&lt;br /&gt;
jQuery Philosophy&lt;br /&gt;
* &amp;quot;Write less, do more&amp;quot;&lt;br /&gt;
* Message Sending&lt;br /&gt;
* Chainability&lt;br /&gt;
* Normalize Browsers&lt;br /&gt;
&lt;br /&gt;
DHTML before Ajax was coined&lt;br /&gt;
&lt;br /&gt;
Terminology:&lt;br /&gt;
* jQuery object&lt;br /&gt;
** the result of $(selector) - the $() is jQuery the function&lt;br /&gt;
** acts like an array of DOM objects (not a true Javascript array) - can check length&lt;br /&gt;
** zero or more DOM objects&lt;br /&gt;
* command - methods of the jQuery object&lt;br /&gt;
** $(sel).method();&lt;br /&gt;
* utility methods - methods of $ or jQyery (like Ajax stuff)&lt;br /&gt;
** $.method();&lt;br /&gt;
** $.ajax()&lt;br /&gt;
* selector - like css selector with more stuff&lt;br /&gt;
** #id or .class or div or :focus or ...&lt;br /&gt;
* chaining - calling multiple methods in a row&lt;br /&gt;
** $(sel).method1().method2();&lt;br /&gt;
** helps avoiding a lot of temporary variables&lt;br /&gt;
** helps performance&lt;br /&gt;
&lt;br /&gt;
Overloaded Commands&lt;br /&gt;
* many commands GET and SET (getters and setters depending on overload)&lt;br /&gt;
* text, html, css, prop, val, attr, and more&lt;br /&gt;
 var elems = $(sel);&lt;br /&gt;
 elems.val(elems.val() + &amp;quot; append me&amp;quot;); // val being used as both getter and setter here&lt;br /&gt;
 elems.width(&amp;quot;Sin&amp;quot;);&lt;br /&gt;
 elems.prop(&amp;quot;disabled&amp;quot;, true);&lt;br /&gt;
* Getters don&amp;#039;t chain, first elem&lt;br /&gt;
 .text()/.html()&lt;br /&gt;
 .css()&lt;br /&gt;
 .width(),.height()&lt;br /&gt;
 .attr()/.val()&lt;br /&gt;
 .prop()/.data()&lt;br /&gt;
 .hasClass()&lt;br /&gt;
* toggle with overloads&lt;br /&gt;
 .toggle([bool])&lt;br /&gt;
 .fadeToggle([bool])&lt;br /&gt;
 .toggleClass(&amp;#039;class-name&amp;#039;,[bool])&lt;br /&gt;
 .animate({outlineWidth:&amp;#039;toggle&amp;#039;})&lt;br /&gt;
* command chaining&lt;br /&gt;
** most commands return a jquery object&lt;br /&gt;
 $(sel)&lt;br /&gt;
   .css(cssProperty, cssvalue)&lt;br /&gt;
   .addClass(className1)&lt;br /&gt;
   .text(message)&lt;br /&gt;
   .parent()&lt;br /&gt;
     .toggleClass(className2)&lt;br /&gt;
* Advanced chaning with &amp;quot;.end()&amp;quot;.  Used with &amp;#039;find&amp;#039;, &amp;#039;filter&amp;#039;, &amp;#039;appendTo&amp;#039;, etc...&lt;br /&gt;
&lt;br /&gt;
Tricky Bits:&lt;br /&gt;
&lt;br /&gt;
.html() &amp;amp; .text()&lt;br /&gt;
* similar but crucially different&lt;br /&gt;
* .html() incorrectly used in place of .text(). Example: (cross site scripting hack)&lt;br /&gt;
 function(untrustedStr) {&lt;br /&gt;
   $(&amp;#039;#title&amp;#039;).html(untrustedStr);&lt;br /&gt;
 }&lt;br /&gt;
* .html() takes properly encoded html source&lt;br /&gt;
&lt;br /&gt;
.prop() vs .attr()&lt;br /&gt;
* due to old usage, that haven&amp;#039;t known better&lt;br /&gt;
* use .prop() for everything&lt;br /&gt;
* .attr() usually the wrong choice! (it used to be all that we had)&lt;br /&gt;
** use .attr() to modify html src&lt;br /&gt;
* .prop() usually the right choice&lt;br /&gt;
** use to modify DOM properties, especially checked and disabled&lt;br /&gt;
* .attr() and .prop() have friends&lt;br /&gt;
* .prop() has current value, and .attr() has html source value&lt;br /&gt;
&lt;br /&gt;
Modern Event API&lt;br /&gt;
* stop using .bind() and .unbind()&lt;br /&gt;
* bind, unbind, delegate, live, click, load, submit, etc - old fashioned deprecated&lt;br /&gt;
* replaced with .on() and .off() and .one() - best practices&lt;br /&gt;
 $(sel).on(&amp;#039;click&amp;#039;, function);&lt;br /&gt;
 $sel).off(&amp;#039;click&amp;#039;);&lt;br /&gt;
* .trigger() and .triggerHandler()&lt;br /&gt;
&lt;br /&gt;
Delegated Events&lt;br /&gt;
 $(sel).on(&amp;#039;click&amp;#039;,sel,function);&lt;br /&gt;
* replaces .delegate() &amp;amp; .live()&lt;br /&gt;
* faster, smaller, better&lt;br /&gt;
* reduces code complexity&lt;br /&gt;
&lt;br /&gt;
Terminate Events&lt;br /&gt;
* return false; - from event handlers unless you need events to bubble up to element ancestors or want the default behavior&lt;br /&gt;
** preventDefault() - browser functionality&lt;br /&gt;
** stopPropagation() - ancestors&lt;br /&gt;
** returning false does both&lt;br /&gt;
&lt;br /&gt;
Poor: many inline styles - Better: classes &amp;amp; style sheets - Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$(sel).css(selected ?&lt;br /&gt;
  {&lt;br /&gt;
    color: &amp;quot;red&amp;quot;,&lt;br /&gt;
    backgroundColor: &amp;quot;black&amp;quot;&lt;br /&gt;
  } : {&lt;br /&gt;
    color: &amp;quot;black&amp;quot;,&lt;br /&gt;
    backgroundColor: &amp;quot;white&amp;quot;&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
$(sel).toggleClass(&amp;quot;selected&amp;quot;,selected);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Switch from Python to Go ==&lt;br /&gt;
&lt;br /&gt;
by Brian G. Merrell&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
Compile first:&lt;br /&gt;
 go help&lt;br /&gt;
&lt;br /&gt;
test.go:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package main&lt;br /&gt;
&lt;br /&gt;
import &amp;quot;fmt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
func main() {&lt;br /&gt;
  fmt.Println(&amp;quot;test&amp;quot;)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
go build -o test test.go&lt;br /&gt;
&lt;br /&gt;
To just run the script:&lt;br /&gt;
 go run test.go&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
Justifications:&lt;br /&gt;
* C++ too complex&lt;br /&gt;
* compilation too slow&lt;br /&gt;
* programming to difficult&lt;br /&gt;
* programmers choosing easy over safety and efficiency&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
Python bad because:&lt;br /&gt;
* actually quite complex&lt;br /&gt;
* runtime errors&lt;br /&gt;
* performance&lt;br /&gt;
* doesn&amp;#039;t scale&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
Go has:&lt;br /&gt;
* concurrency is a breeze&lt;br /&gt;
* no exceptions&lt;br /&gt;
* no type hierarchies&lt;br /&gt;
* no classes&lt;br /&gt;
&lt;br /&gt;
Go good because:&lt;br /&gt;
* small language (fit all in your head, have read the spec)&lt;br /&gt;
* compile time checks (fast)&lt;br /&gt;
* fast enough for even more things&lt;br /&gt;
* benefits at little cost&lt;br /&gt;
* dynamic feel with compiled performance&lt;br /&gt;
* rich standard library&lt;br /&gt;
* libraries are all written in Go&lt;br /&gt;
* great bundled tooling&lt;br /&gt;
* seems to scale well&lt;br /&gt;
* cross compiling in Go is simple&lt;br /&gt;
* Go syntax is very light and simple&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
Hello World Web server:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package main&lt;br /&gt;
&lt;br /&gt;
import (&lt;br /&gt;
 &amp;quot;fmt&amp;quot;&lt;br /&gt;
 &amp;quot;net/http&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
func main() {&lt;br /&gt;
 http.HandleFunc(&amp;quot;/&amp;quot;, Hello&amp;quot;)&lt;br /&gt;
 http.ListenAndServer(&amp;quot;kicakhost:800&amp;quot;, nil)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
func Hello(w http.ResponseWrite, r *http.Request....&lt;br /&gt;
???&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
Don&amp;#039;t like about Go:&lt;br /&gt;
* Naked return statements (optional)&lt;br /&gt;
 x,yz, =1,2,3&lt;br /&gt;
 return&lt;br /&gt;
* scoping rules specific case&lt;br /&gt;
* not faster than java&lt;br /&gt;
* new vs &amp;amp;T{} vs make&lt;br /&gt;
* len(&amp;quot;foo&amp;quot;) vs &amp;quot;foo&amp;quot;.Len() - but keeps lanuage simple&lt;br /&gt;
* Name &amp;quot;Go&amp;quot; is ungoogable / hastagable (use golang) *** MOST ANNOYING ***&lt;br /&gt;
* No dynamic linking in Go - makes binaries huge&lt;br /&gt;
** two compilers - may work with gccgo, just not with google&amp;#039;s gc compiler&lt;br /&gt;
** no dlopen in Go&lt;br /&gt;
&lt;br /&gt;
Python vs Go&lt;br /&gt;
* Interpreted vs Compiled&lt;br /&gt;
* Strongly typed vs Strongly typed&lt;br /&gt;
* Dynamically typed vs statically typed&lt;br /&gt;
* Garabage collected&lt;br /&gt;
* Unique syntax vs Similar to C&lt;br /&gt;
* Open Source&lt;br /&gt;
* Python Foundation vs Google&lt;br /&gt;
* more platforms vs fewer platforms&lt;br /&gt;
* 1991 vs &lt;br /&gt;
* ???&lt;br /&gt;
&lt;br /&gt;
Go does not have:&lt;br /&gt;
* Classes&lt;br /&gt;
* Exceptions&lt;br /&gt;
* Assertions&lt;br /&gt;
* Templates / generics (for now)&lt;br /&gt;
* Operator overloading&lt;br /&gt;
&lt;br /&gt;
Zen of Python&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; import this&lt;br /&gt;
&lt;br /&gt;
Go does not have:&lt;br /&gt;
* decorators&lt;br /&gt;
* static methods&lt;br /&gt;
* class methods&lt;br /&gt;
* properties&lt;br /&gt;
* iterators&lt;br /&gt;
* generators&lt;br /&gt;
* exceptions&lt;br /&gt;
* meta classes&lt;br /&gt;
* class decorators&lt;br /&gt;
* multiple inheritance&lt;br /&gt;
* list comprehensions&lt;br /&gt;
* ternary operator (expression?true:false)&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
Errors should never pass silently - sure beats runtime error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package main&lt;br /&gt;
&lt;br /&gt;
import (&lt;br /&gt;
 &amp;quot;fmt&amp;quot;&lt;br /&gt;
 &amp;quot;net/url&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
func main() {&lt;br /&gt;
 u := url.Parse(&amp;quot;http://foo.org/index%.html&amp;quot;) // notice bad &amp;#039;%&amp;#039;&lt;br /&gt;
 /* fix&lt;br /&gt;
 u, err := url.Parse(&amp;quot;http://foo.org&amp;quot;)&lt;br /&gt;
 if err != nil {&lt;br /&gt;
   fmt.Println(&amp;quot;got error&amp;quot;)&lt;br /&gt;
 }&lt;br /&gt;
 */&lt;br /&gt;
 fmt.Println(u.Host)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zero Values&lt;br /&gt;
&lt;br /&gt;
Encapsulation - capitalized names are exported&lt;br /&gt;
&lt;br /&gt;
Slices vs Lists&lt;br /&gt;
&lt;br /&gt;
Arrays&lt;br /&gt;
&lt;br /&gt;
Slicing syntax is very similar to python&lt;br /&gt;
&lt;br /&gt;
Maps, Dicts and Sets&lt;br /&gt;
&lt;br /&gt;
Duck typing - Go uses interfaces to solve&lt;br /&gt;
&lt;br /&gt;
Exception handling - uses interfaces and type assertions to check&lt;br /&gt;
&lt;br /&gt;
Calling C code from Go&lt;br /&gt;
&lt;br /&gt;
go get - similar to pip&lt;br /&gt;
&lt;br /&gt;
Unit testing and Code coverage&lt;br /&gt;
 go test ./...&lt;br /&gt;
 go test -cover ./...&lt;br /&gt;
&lt;br /&gt;
Other tools (included)&lt;br /&gt;
 http://play.golang.org&lt;br /&gt;
&lt;br /&gt;
== CSS3 ==&lt;br /&gt;
&lt;br /&gt;
Interactive Periodic Table - http://codepen.io/nemophrost/pen/EkImb&lt;br /&gt;
&lt;br /&gt;
by Alma Madsen&lt;br /&gt;
&lt;br /&gt;
== Bitcoin ==&lt;br /&gt;
&lt;br /&gt;
Summary - better to just horde bitcoins then to mine them&lt;br /&gt;
&lt;br /&gt;
== Tor ==&lt;br /&gt;
&lt;br /&gt;
Dark Side of the Intenret&lt;br /&gt;
&lt;br /&gt;
Danny Howerton (metacortex)&lt;br /&gt;
&lt;br /&gt;
Look at Troll slide&lt;br /&gt;
* ice berg - level 0 web - common web - everything&lt;br /&gt;
&lt;br /&gt;
Tor - the onion router&lt;br /&gt;
&lt;br /&gt;
Tor Project - https://www.torproject.org&lt;br /&gt;
&lt;br /&gt;
Darknet&lt;br /&gt;
&lt;br /&gt;
Watch &amp;quot;House of Cards&amp;quot; - Tor&lt;br /&gt;
&lt;br /&gt;
firefox plugins:&lt;br /&gt;
* tor option&lt;br /&gt;
* no script&lt;br /&gt;
* https everything&lt;br /&gt;
&lt;br /&gt;
TAILS - live distro&lt;br /&gt;
&lt;br /&gt;
Tor hidden services:&lt;br /&gt;
* .onion as TLD&lt;br /&gt;
* turns tor into darknet&lt;br /&gt;
* torproject.org/docs/hidden-services.html?&lt;br /&gt;
* hidden wiki&lt;br /&gt;
* tor find&lt;br /&gt;
* tor search&lt;br /&gt;
* grams - google rip off&lt;br /&gt;
* reddit/r/onions&lt;br /&gt;
* word of mouth&lt;br /&gt;
* the pirate bay&lt;br /&gt;
&lt;br /&gt;
Market Places&lt;br /&gt;
* reddit.com/r/DarkNetMarkets&lt;br /&gt;
* Silk Road 2&lt;br /&gt;
* Andromeda&lt;br /&gt;
&lt;br /&gt;
Buy&lt;br /&gt;
* Bitcoin&lt;br /&gt;
* money in escrow&lt;br /&gt;
* ship to PO Box&lt;br /&gt;
&lt;br /&gt;
Bitcoin:&lt;br /&gt;
* crypto currency&lt;br /&gt;
* relies on PKI&lt;br /&gt;
&lt;br /&gt;
Attacks:&lt;br /&gt;
* correlation attacks&lt;br /&gt;
* own entry and exit nodes&lt;br /&gt;
* browser exploits&lt;br /&gt;
* btc not fully annonymouse&lt;br /&gt;
** use tumbling service&lt;br /&gt;
&lt;br /&gt;
Stay up to date:&lt;br /&gt;
* blog.torproject.org&lt;br /&gt;
&lt;br /&gt;
OpSec:&lt;br /&gt;
* Don&amp;#039;t reuse identities or password&lt;br /&gt;
&lt;br /&gt;
Shameless self promotion - hacker group &amp;quot;801 labs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ipchicken.com&lt;br /&gt;
&lt;br /&gt;
== Chrome Dev Tools ==&lt;br /&gt;
&lt;br /&gt;
Does performacne matter&lt;br /&gt;
* motion&lt;br /&gt;
** limits of human perceptibility - 5ms&lt;br /&gt;
** 60Hz frame rate - 16ms&lt;br /&gt;
&lt;br /&gt;
Human perceived response times:&lt;br /&gt;
* 100ms - immediate&lt;br /&gt;
* 300ms - fast&lt;br /&gt;
* 1200ms - laggy&lt;br /&gt;
&lt;br /&gt;
Got bored... Jumping to agile class&lt;br /&gt;
&lt;br /&gt;
== Agile ==&lt;br /&gt;
&lt;br /&gt;
by Hala Saleh, Dir. Product Management, Rentlr&lt;br /&gt;
 &lt;br /&gt;
Agile Manifesto - http://agilemanifesto.org&lt;br /&gt;
* Individuals and interactions - over processes and tools&lt;br /&gt;
* Working software - over comprehensive documentation&lt;br /&gt;
* Customer collaboration - over contract negotiation&lt;br /&gt;
* Responding to change - over following a plan&lt;br /&gt;
&lt;br /&gt;
Agile Principles - 12 principles - http://agilemanifesto.org/principles.html&lt;br /&gt;
* Collaboration&lt;br /&gt;
* Continuous feedback and improvements&lt;br /&gt;
* Self-organizing teams&lt;br /&gt;
* Simplicity&lt;br /&gt;
* Retrospectives&lt;br /&gt;
* Frequent and Continuous delivery&lt;br /&gt;
* Inspect-adapt cycle&lt;br /&gt;
* Sustainable pace&lt;br /&gt;
* Timeboxing&lt;br /&gt;
* ??&lt;br /&gt;
&lt;br /&gt;
Agile development - iterative and incremental approach to developing software that incorporates continuous feedback loops, adaptability and collaboration&lt;br /&gt;
&lt;br /&gt;
But agile is not only for software&lt;br /&gt;
&lt;br /&gt;
Ready to work?&lt;br /&gt;
* Step 1: Identify the Problem&lt;br /&gt;
* Step 2: Is Agile the Answer? Is your culture compatible?  Start with processes and implement incremental changes.&lt;br /&gt;
** book &amp;quot;Becoming Agile in an Imprefect World&amp;quot; by Smith and Sidky&lt;br /&gt;
&lt;br /&gt;
Conclusion:&lt;br /&gt;
* Agile can&amp;#039;t make you a better executive (it is not a silver bullet)&lt;br /&gt;
* Learn it, Live it, Do it&lt;br /&gt;
* Learn from others&lt;br /&gt;
* Cultivate a tolerance for Failing Fast&lt;br /&gt;
&lt;br /&gt;
== Beehive Startups ==&lt;br /&gt;
&lt;br /&gt;
=== TOUCHXPAY ===&lt;br /&gt;
&lt;br /&gt;
Pay with your finger print&lt;br /&gt;
&lt;br /&gt;
Questions:&lt;br /&gt;
* security - &lt;br /&gt;
&lt;br /&gt;
On site - Point of Sale (POS) device&lt;br /&gt;
&lt;br /&gt;
Revenue:&lt;br /&gt;
* about 1% per transaction - credit card processing&lt;br /&gt;
&lt;br /&gt;
Obstacles:&lt;br /&gt;
* PCI Credit Card Processing&lt;br /&gt;
&lt;br /&gt;
Founds:&lt;br /&gt;
* David Coronado&lt;br /&gt;
* Cameron Moon&lt;br /&gt;
&lt;br /&gt;
Suggestions:&lt;br /&gt;
* Look for a strategic partnership that could provide PCI&lt;br /&gt;
&lt;br /&gt;
=== COPILOT ===&lt;br /&gt;
&lt;br /&gt;
Social marketing platform to build audiences though video content&lt;br /&gt;
&lt;br /&gt;
Reviews for Studios?&lt;br /&gt;
&lt;br /&gt;
Founders:&lt;br /&gt;
* Aarpon Ellsworth&lt;br /&gt;
&lt;br /&gt;
Need an iOS developer&lt;br /&gt;
&lt;br /&gt;
Help pilot videos&lt;br /&gt;
&lt;br /&gt;
== Google Fiber ==&lt;br /&gt;
&lt;br /&gt;
Google Access - Google Fiber&lt;br /&gt;
&lt;br /&gt;
Kansas City (initial), Austin TX, Provo UT&lt;br /&gt;
&lt;br /&gt;
Symmetrical Gig&lt;br /&gt;
&lt;br /&gt;
http://google.com/fiber&lt;br /&gt;
&lt;br /&gt;
Check out the story of Chattanoga, TN that did it on their own, and the benefits that came about.&lt;br /&gt;
&lt;br /&gt;
== Big Data ==&lt;br /&gt;
&lt;br /&gt;
Applications:&lt;br /&gt;
* MongoDB&lt;br /&gt;
* Hadoop&lt;br /&gt;
* Cassandra&lt;br /&gt;
&lt;br /&gt;
Problems with Big Data:&lt;br /&gt;
* Variety of Data (messy)&lt;br /&gt;
** Geo Spacial&lt;br /&gt;
&lt;br /&gt;
&amp;quot;I haven&amp;#039;t failed, I found 8000 ways that didn&amp;#039;t work&amp;quot; -- Edison&lt;br /&gt;
&lt;br /&gt;
== Lua ==&lt;br /&gt;
&lt;br /&gt;
Script up your application with Lua&lt;br /&gt;
* Ryan Erickson&lt;br /&gt;
* http://www.untestedhacks.com&lt;br /&gt;
* Works at Control4&lt;br /&gt;
&lt;br /&gt;
Home automation - http://ericksonfamily.com/&lt;br /&gt;
&lt;br /&gt;
The Programming Language Lua - http://www.lua.org/&lt;br /&gt;
&lt;br /&gt;
Lua: getting started - http://www.lua.org/start.html&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
 yum install lua&lt;br /&gt;
&lt;br /&gt;
 curl -R -O http://www.lua.org/ftp/lua-5.2.3.tar.gz&lt;br /&gt;
 tar zxf lua-5.2.3.tar.gz&lt;br /&gt;
 cd lua-5.2.3&lt;br /&gt;
 make linux test&lt;br /&gt;
&lt;br /&gt;
History:&lt;br /&gt;
* lua.org&lt;br /&gt;
* created in 1993 at PUC-RIO&lt;br /&gt;
* Predecessors: DEL and Sol (merged to Lua)&lt;br /&gt;
* Lua is Portuguese for Moon, not an acronym (play on words from Sol)&lt;br /&gt;
&lt;br /&gt;
Focus:&lt;br /&gt;
* Simplicity for non-programmer audience&lt;br /&gt;
* Portability&lt;br /&gt;
* Designed to be easily embedded, extended&lt;br /&gt;
* Clean ANSI C code&lt;br /&gt;
* Garbage Collected&lt;br /&gt;
&lt;br /&gt;
Why:&lt;br /&gt;
* Size (tiny) &amp;lt; 100kb DLL/LIB&lt;br /&gt;
* Runs on mobile / embedded devices&lt;br /&gt;
* Performance - interpreted faster than Pyuthon, Ruby, Perl, PHP&lt;br /&gt;
** Need faster? LuaJIT&lt;br /&gt;
** LuaJIT is C++ / Java 6 territory (luajit.org)&lt;br /&gt;
&lt;br /&gt;
Momentum:&lt;br /&gt;
* Used a lot in games&lt;br /&gt;
* Adobe Lightroom and Photoshop&lt;br /&gt;
* First interpreted lanugage allowed on iOS&lt;br /&gt;
* Angry Birds / World of Warcraft&lt;br /&gt;
* Control4 uses&lt;br /&gt;
&lt;br /&gt;
Safety:&lt;br /&gt;
* Code runs in sandbox&lt;br /&gt;
* Embedder chooses which modules to expose&lt;br /&gt;
* Host application can provide APIs / primitives to Lua engine&lt;br /&gt;
&lt;br /&gt;
Lanuage:&lt;br /&gt;
* Dynamically typed&lt;br /&gt;
* Whitespace not significant&lt;br /&gt;
** spaces, linebreaks, tabs, what you like&lt;br /&gt;
* Semicolons not required, and discouraged&lt;br /&gt;
* single line comments&lt;br /&gt;
* variables are global by default, &amp;#039;local&amp;#039; keyword&lt;br /&gt;
&lt;br /&gt;
Types:&lt;br /&gt;
* number, string, boolean, nil, table, function, userdata&lt;br /&gt;
* numbers are double by default&lt;br /&gt;
* can represent floats and integers&lt;br /&gt;
* no i++, i+=2.  use i =i +1&lt;br /&gt;
&lt;br /&gt;
Strings:&lt;br /&gt;
* single/double quote&lt;br /&gt;
* backslash to escape&lt;br /&gt;
* string concatenation uses &amp;#039;..&amp;#039; (not +)&lt;br /&gt;
&lt;br /&gt;
nil:&lt;br /&gt;
* empty value&lt;br /&gt;
* evaluates to false&lt;br /&gt;
* frees item for garbage collection&lt;br /&gt;
&lt;br /&gt;
tables:&lt;br /&gt;
* lua&amp;#039;s single data structure&lt;br /&gt;
* simultaneous array and hashmap&lt;br /&gt;
 a = {&amp;quot;apple&amp;quot;, &amp;quot;banana&amp;quot;}&lt;br /&gt;
 b = {lua = &amp;quot;cool&amp;quot;, java = &amp;quot;sucks&amp;quot;}&lt;br /&gt;
 c = a&lt;br /&gt;
 print(c[3], b.fred, b.[&amp;quot;java&amp;quot;], a.grape)&lt;br /&gt;
   # orange 3 sucks nul&lt;br /&gt;
* arrays in Lua are 1 based&lt;br /&gt;
&lt;br /&gt;
Comments:&lt;br /&gt;
 -- this is a comment&lt;br /&gt;
 --[[ this is a multi&lt;br /&gt;
 line comment ]]&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* first class objects&lt;br /&gt;
 function add(a, b)&lt;br /&gt;
    print(a + b)&lt;br /&gt;
 end&lt;br /&gt;
 multiply = function(a, b) print(a * b) end&lt;br /&gt;
 plus = add&lt;br /&gt;
 plus(3,5)&lt;br /&gt;
&lt;br /&gt;
Control:&lt;br /&gt;
 if ... then ... elseif ... else ... End&lt;br /&gt;
 do&lt;br /&gt;
   print(&amp;quot;one&amp;quot;)&lt;br /&gt;
 end&lt;br /&gt;
 for i = 1, 10 do print(i) end&lt;br /&gt;
 for k, v in pairs({&amp;quot;}} ???&lt;br /&gt;
&lt;br /&gt;
C Programmer Hangups&lt;br /&gt;
* no curly braces - uses begin... end&lt;br /&gt;
* No +=, ++&lt;br /&gt;
* Not equals is &amp;quot;~=&amp;quot;&lt;br /&gt;
* Not is &amp;quot;not&amp;quot;&lt;br /&gt;
* arrays start at 1&lt;br /&gt;
* #array is not always right (if empty items in the middle)&lt;br /&gt;
&lt;br /&gt;
C interface API&lt;br /&gt;
* set of functions allow C to interact with Lua&lt;br /&gt;
* functions to read/write lua global variables&lt;br /&gt;
* functions to call lua functions&lt;br /&gt;
* functions to register c functions to call within lua&lt;br /&gt;
* stack based parameter passing&lt;br /&gt;
&lt;br /&gt;
Book:&lt;br /&gt;
* &amp;quot;Programming in Lua&amp;quot; - http://lua.org/pil&lt;br /&gt;
&lt;br /&gt;
Reference PDF:&lt;br /&gt;
* http://lua-users.org/wiki/LuaShortReference&lt;br /&gt;
&lt;br /&gt;
Demo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- comment&lt;br /&gt;
print(&amp;quot;test&amp;quot; .. os.date())&lt;br /&gt;
&lt;br /&gt;
function rirc(user, message)&lt;br /&gt;
  local no_err, errmsg = pcall(parseIRC, user, message)&lt;br /&gt;
  if (no_error == false) then SendIRC(&amp;quot;ryan&amp;quot;, errmsg) end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function parseIRC(user, message)&lt;br /&gt;
  message = message:gsub(&amp;quot;%s&amp;quot;, &amp;quot;&amp;quot;) -- trim white space&lt;br /&gt;
  if (message == &amp;quot;|reload&amp;quot;) then&lt;br /&gt;
    if (user == &amp;quot;ryan&amp;quot;) then&lt;br /&gt;
      dofile(&amp;quot;default.lua&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
  if (message == &amp;quot;|echo&amp;quot;) then&lt;br /&gt;
      SendIRC(user, &amp;quot;hello&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
  if (message:find(&amp;quot;|giflet&amp;quot;) ~= nil) then&lt;br /&gt;
      local figstr = message:sub(8)&lt;br /&gt;
      local sd = io.popen(&amp;quot;figlet &amp;quot; .. figstr)&lt;br /&gt;
      while(line) do&lt;br /&gt;
            SendIRC(user, line)&lt;br /&gt;
      end&lt;br /&gt;
      sd:close()&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Performance Tools ==&lt;br /&gt;
&lt;br /&gt;
Ed Felt - DBA/Developer at LDS Church&lt;br /&gt;
&lt;br /&gt;
Keep it simple ... at least at first&lt;br /&gt;
&lt;br /&gt;
No Mockumentation - Document well, even over document&lt;br /&gt;
&lt;br /&gt;
Recommended course - Linux Foundation - Linux Performance Tools (LF426)&lt;br /&gt;
&lt;br /&gt;
Track changes as you test&lt;br /&gt;
&lt;br /&gt;
Human memory sucks - keep personal notes (journaling)&lt;br /&gt;
&lt;br /&gt;
Keep focused on one variable at a time (Exception: fix it now emergency fire!) - most of us think linearly&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
* ngrep to troubleshoot Segmentation Fault that doesn&amp;#039;t make it to the logs&lt;br /&gt;
* actime0=0  # NFS  (?kill it/keep it?)&lt;br /&gt;
&lt;br /&gt;
Stress testing is NOT baselining/profiling or even troubleshooting&lt;br /&gt;
&lt;br /&gt;
/proc - TLDP describes it as &amp;quot;window&amp;quot; in to kernel and processes&lt;br /&gt;
&lt;br /&gt;
PIDS:&lt;br /&gt;
* /proc/PID/cmdline&lt;br /&gt;
* /proc/PID/cwd&lt;br /&gt;
* /proc/PID/environ&lt;br /&gt;
* /proc/PID/exe&lt;br /&gt;
* ps&lt;br /&gt;
&lt;br /&gt;
CPU:&lt;br /&gt;
* /proc/cpuinfo&lt;br /&gt;
* top&lt;br /&gt;
&lt;br /&gt;
Memory:&lt;br /&gt;
* /proc/meminfo&lt;br /&gt;
* free&lt;br /&gt;
&lt;br /&gt;
Netstat:&lt;br /&gt;
* /proc/net/netstat&lt;br /&gt;
* netstat&lt;br /&gt;
&lt;br /&gt;
Logs:&lt;br /&gt;
* /var/log/messages&lt;br /&gt;
* /var/log/[application]&lt;br /&gt;
&lt;br /&gt;
Write your own:&lt;br /&gt;
* BASH&lt;br /&gt;
* Perl&lt;br /&gt;
* Python&lt;br /&gt;
&lt;br /&gt;
Tools:&lt;br /&gt;
* hdparm -tT /dev/....&lt;br /&gt;
* top&lt;br /&gt;
* sar (sysstat)&lt;br /&gt;
* collectl&lt;br /&gt;
* mlmon&lt;br /&gt;
&lt;br /&gt;
Other tools:&lt;br /&gt;
* watch&lt;br /&gt;
* tail&lt;br /&gt;
* strace&lt;br /&gt;
* iostat&lt;br /&gt;
* vmstat&lt;br /&gt;
* nmon&lt;br /&gt;
* iptraf&lt;br /&gt;
* lsof&lt;br /&gt;
* htop&lt;br /&gt;
&lt;br /&gt;
== Cargo Cult Security ==&lt;br /&gt;
&lt;br /&gt;
by Derrick Isaacson &lt;br /&gt;
&lt;br /&gt;
Cargo Cult Security 2014_01_18 - http://www.slideshare.net/DerrickIsaacson/cargo-cult-security-20140118&lt;br /&gt;
&lt;br /&gt;
https://github.com/disaacson/cargo-cult-security&lt;br /&gt;
&lt;br /&gt;
Zimmerman telegraph - mexico german war&lt;br /&gt;
&lt;br /&gt;
Cphertext, plain text&lt;br /&gt;
&lt;br /&gt;
Symmetric Key Cryptography (Private-key Cryptograph)&lt;br /&gt;
&lt;br /&gt;
Blowfish, twofish, serpent, aes (rijndael) cast5, rc4, 3des, idea&lt;br /&gt;
&lt;br /&gt;
Ctrypto Primitives &amp;amp; Goals - https://oracleus.activeevents.com/2013/connect/sessionDetail.ww?SESSION_ID=6325&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Crytpo Primitives	Hash		MAC		Symmetric Key	Asymmetric Key	Digital		Digital&lt;br /&gt;
			Salted Hash	HMAC		Crypto		Crypto		Signature	Certificates&lt;br /&gt;
&lt;br /&gt;
Security Goals&lt;br /&gt;
--------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Data Integrity		XXX		XXX						XXX&lt;br /&gt;
&lt;br /&gt;
Data Authentication			XXX				XXX		XXX&lt;br /&gt;
&lt;br /&gt;
Non-Repudiation								XXX		XXX&lt;br /&gt;
&lt;br /&gt;
Confidentiality						XXX		XXX*&lt;br /&gt;
&lt;br /&gt;
Trust													XXX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Public key can be used to encrypt data that can only be decrypted with private key&lt;br /&gt;
&lt;br /&gt;
Love HMACs&lt;br /&gt;
&lt;br /&gt;
Cargo Cult Programming - Ritualistic inclusion of code or pattersn that are&lt;br /&gt;
unnecessary for the task at hand.&lt;br /&gt;
&lt;br /&gt;
Anti-pattern: authentication&lt;br /&gt;
* using encryption for authentication is bad.  Use HMAC instead&lt;br /&gt;
* don&amp;#039;t use symmetric key alone, as flipping a bit will just bump IDs to the next&lt;br /&gt;
* Use HMAC&lt;br /&gt;
&lt;br /&gt;
Anti-pattern: Integrity&lt;br /&gt;
* Symmetric key is only good for confidentiality&lt;br /&gt;
* HMAC good for Data Integrity and Data Authentication&lt;br /&gt;
&lt;br /&gt;
Anti-pattern: Encryption Modes&lt;br /&gt;
* Electronic Codebook (ECB) mode encryption&lt;br /&gt;
** can do bit mapping (think picture) hack to get an idea of contained data&lt;br /&gt;
* Cipher Block Chaining (CBC) mode encryption&lt;br /&gt;
** avoids the patterns found among blocks of ECB&lt;br /&gt;
&lt;br /&gt;
Anti-pattern: Initialization Vector&lt;br /&gt;
* Avoid same data being encrypted repeatedly looking the same&lt;br /&gt;
* Cipher-block chaining prevents patterns within messages&lt;br /&gt;
* Correct IV prevents patterns across messages&lt;br /&gt;
&lt;br /&gt;
Anti-pattern: Random Values&lt;br /&gt;
* Finding linear congruential seed&lt;br /&gt;
&lt;br /&gt;
Anti-pattern: Psuedo-random Session IDs&lt;br /&gt;
* really only ~20 bits of entropy&lt;br /&gt;
* HMACs and secure random&lt;br /&gt;
** do not use sessions - use HMACs seriously&lt;br /&gt;
&lt;br /&gt;
No Cargo Cult Security:&lt;br /&gt;
# Identify true security goal.&lt;br /&gt;
# Find correct crypto primitive.&lt;br /&gt;
# Spend some time to learn about it.&lt;br /&gt;
# Write as little of your own crypto code as possible.&lt;br /&gt;
&lt;br /&gt;
== Unleash Raspberry Pi ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unleash the Raspberry Pi Through Physical Computing&amp;quot;&lt;br /&gt;
&lt;br /&gt;
by Kevin Sidwar&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Conference speakers anre&amp;#039;t the community eleite, they are just people who build stuff and like tto talk about it.  Anyone can do it.&amp;quot;  -- Tweet&lt;br /&gt;
&lt;br /&gt;
Skill Share - http://skl.sh/1boHmFo&lt;br /&gt;
* 3 hours of videos and lessons&lt;br /&gt;
&lt;br /&gt;
Physical Computing - interacting digitally with the analog world.&lt;br /&gt;
&lt;br /&gt;
Internet of Things is a subset of Physical Computing.&lt;br /&gt;
&lt;br /&gt;
Why the Pi?  Huge ecosystem and a ton of resources online.&lt;br /&gt;
&lt;br /&gt;
Buy them through &amp;quot;newark&amp;quot; for $35 without the $5 markup elsewhere (although you get hit with shipping)&lt;br /&gt;
&lt;br /&gt;
The voltages are safer than licking a 9V battery.&lt;br /&gt;
&lt;br /&gt;
Requires very little EE knowledge&lt;br /&gt;
&lt;br /&gt;
SPI - communicating with other devices like other micro controllers&lt;br /&gt;
&lt;br /&gt;
I2C - Inter-Integrated Circuit&lt;br /&gt;
&lt;br /&gt;
Serial&lt;br /&gt;
&lt;br /&gt;
Cool projects:&lt;br /&gt;
* RFID reader&lt;br /&gt;
&lt;br /&gt;
Keep pins straight: (keep track of the pins, don&amp;#039;t fry your Pi)&lt;br /&gt;
* Rasberry Leaf - good printout to keep track of pin outs&lt;br /&gt;
* Pi cobbler is another good way&lt;br /&gt;
* Verify twice, connect once&lt;br /&gt;
* Pins are 3.3V not 5V!&lt;br /&gt;
* Use isolated jumper wires (don&amp;#039;t short out the pins)&lt;br /&gt;
* Don&amp;#039;t touch header while powered on&lt;br /&gt;
&lt;br /&gt;
GPIO - General Input / Output&lt;br /&gt;
&lt;br /&gt;
Write:&lt;br /&gt;
 import RPi.GPIO as GPIO&lt;br /&gt;
 GPIO.setmode(GPIO.BOARD)&lt;br /&gt;
 GPIO.setup(12, GPIO.OUT) (OUT/HIGH/LOW)&lt;br /&gt;
 GPIO.cleanup()&lt;br /&gt;
&lt;br /&gt;
Read:&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
I2C:&lt;br /&gt;
 import smbus&lt;br /&gt;
 i2c = smbus.smbus??&lt;br /&gt;
 temp = bus.read_word_data(0x48, 0)&lt;br /&gt;
&lt;br /&gt;
SPI Code example&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Twython - twitter python clinet&lt;br /&gt;
&lt;br /&gt;
Twilio - send/receive text/phone&lt;br /&gt;
&lt;br /&gt;
http://twitter.com/PiHomeMonitor&lt;br /&gt;
&lt;br /&gt;
Source code for this presentation - http://github.com/sidwarkd/openwest_demo&lt;br /&gt;
&lt;br /&gt;
== Python Pandas ==&lt;br /&gt;
&lt;br /&gt;
Python Data Analysis Library — pandas: Python Data Analysis Library - http://pandas.pydata.org/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NumPy — http://www.numpy.org/ - NumPy is the fundamental package for scientific computing with Python. &lt;br /&gt;
&lt;br /&gt;
SciPy - http://www.scipy.org/ - SciPy (pronounced “Sigh Pie”) is a Python-based ecosystem of open-source software for mathematics, science, and engineering&lt;br /&gt;
&lt;br /&gt;
Pandas - http://pandas.pydata.org/ - Python Data Analysis Library - pandas is an open source, BSD-licensed library providing high-performance, easy-to-use data structures and data analysis tools for the Python programming language.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Matt Harrison - http://hairysun.com&lt;br /&gt;
* co-chair Utah Python.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Impetus - if this were a perl class it would be about regexes.  Panda is the weapon of choice for dealing with tabular data in Python.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pandas is &amp;quot;A nosql in-memory db using Python, that has SQL-like constructs&amp;quot; - Matt&amp;#039;s view&lt;br /&gt;
* note adopts many numpy-isms that may not appear pure Python&lt;br /&gt;
&lt;br /&gt;
Based off of data framing (tabular data) stolen from &amp;#039;R&amp;#039;.  Data frame is similar to a table in SQL.&lt;br /&gt;
&lt;br /&gt;
Panda is best for small to medium data, not &amp;quot;Big Data&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not really good from ETL perspective - star schema&lt;br /&gt;
* Extract Transform Load - take data from one system to another&lt;br /&gt;
* Data warehousing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Data Structures:&lt;br /&gt;
* Series (1D)&lt;br /&gt;
* TimeSeries (1D) - special Series&lt;br /&gt;
* DataFrame (2D)&lt;br /&gt;
* Panel (3D) - like stacked DataFrames&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Series:&lt;br /&gt;
 # python version&lt;br /&gt;
 ser = {&lt;br /&gt;
   &amp;#039;index&amp;#039;:[0,1,2],&lt;br /&gt;
   &amp;#039;data&amp;#039;:[.5,.6,.7],&lt;br /&gt;
   &amp;#039;name&amp;#039;:&amp;#039;growth&amp;#039;,&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 # pandas version&lt;br /&gt;
 import pandas as pd&lt;br /&gt;
 ser = pd.Series([.5,.6,.7], name=&amp;#039;growth&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
Behaves like NumPy array:&lt;br /&gt;
 ser[1]&lt;br /&gt;
 ser.mean()&lt;br /&gt;
&lt;br /&gt;
Boolean Array&lt;br /&gt;
 ser &amp;gt; ser.median()&lt;br /&gt;
   a False&lt;br /&gt;
   b False&lt;br /&gt;
   c True&lt;br /&gt;
&lt;br /&gt;
Filtering:&lt;br /&gt;
 ser[ser &amp;gt; ser.median()]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DataFrames - Tables with columns as Series&lt;br /&gt;
 # python version, but not a true Pandas DataFrame&lt;br /&gt;
 df = {&lt;br /&gt;
   &amp;#039;index&amp;#039;:[0,1,2],&lt;br /&gt;
   cols = [&lt;br /&gt;
     { &amp;#039;name&amp;#039;:&amp;#039;growth&amp;#039;,&lt;br /&gt;
       &amp;#039;data&amp;#039;:[.5,.6,1.2] },&lt;br /&gt;
     { &amp;#039;name&amp;#039;:&amp;#039;Name&amp;#039;,&lt;br /&gt;
       &amp;#039;data&amp;#039;:[&amp;quot;paul&amp;quot;,&amp;quot;george&amp;quot;, &amp;quot;ringo&amp;quot;] },&lt;br /&gt;
    ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 # pandas version&lt;br /&gt;
 df = pd.DataFrame({&lt;br /&gt;
   &amp;#039;growth&amp;#039;:[.5,.7,1.2],&lt;br /&gt;
   &amp;#039;Name&amp;#039;:[&amp;#039;paul&amp;#039;,&amp;#039;geroge&amp;#039;,&amp;#039;ringo&amp;#039;] }&lt;br /&gt;
&lt;br /&gt;
Import DataFrame from: rows (list of dicts), columns (dicts of lists), csv file ***, slurp up a NumPy ndarray directly&lt;br /&gt;
&lt;br /&gt;
Two Axes:&lt;br /&gt;
* axes 0 - index&lt;br /&gt;
* axes 1 - columns&lt;br /&gt;
 df.axes[0] or df.index&lt;br /&gt;
 df.axes[1] or df.columns&lt;br /&gt;
&lt;br /&gt;
Examine:&lt;br /&gt;
 df.columns&lt;br /&gt;
 df.describe()&lt;br /&gt;
 df.to_string()&lt;br /&gt;
 df.test1 # or df[&amp;#039;test1&amp;#039;]  -- makes magic attribute for you&lt;br /&gt;
 df.test1.median()&lt;br /&gt;
 df.test1.corr(df.test2)  # correlation - if data goes in same direction 1, no would be 0 and opposite would be -1&lt;br /&gt;
&lt;br /&gt;
Tweaking Data&lt;br /&gt;
* note: pandas objects are generally immutable&lt;br /&gt;
* add row&lt;br /&gt;
 df = pd.concat()&lt;br /&gt;
* add column&lt;br /&gt;
 df[&amp;#039;test3&amp;#039;] = 0&lt;br /&gt;
 #note:  df.test3 = 3 does not work!&lt;br /&gt;
* add column with function&lt;br /&gt;
 def name_grade(val):&lt;br /&gt;
   ..&lt;br /&gt;
 df[&amp;#039;test4&amp;#039;] = df.fname.apply(name_grade)&lt;br /&gt;
* remove column&lt;br /&gt;
 t3 = df.pop(&amp;#039;test3&amp;#039;)  # or del df[&amp;#039;test3&amp;#039;]   # note: del df.test3 does not work!&lt;br /&gt;
* rename column&lt;br /&gt;
&lt;br /&gt;
Fill - statistics ignore NaN, so if you want a zero can use this.&lt;br /&gt;
&lt;br /&gt;
Install Pandas: (what worked for me)&lt;br /&gt;
 # yum install &lt;br /&gt;
 pip install pandas&lt;br /&gt;
&lt;br /&gt;
Pivoting - Pivot Tables&lt;br /&gt;
 print pd.pivot_table(..rules..)&lt;br /&gt;
&lt;br /&gt;
Serialization&lt;br /&gt;
* dump to CSV, etc&lt;br /&gt;
&lt;br /&gt;
Plotting&lt;br /&gt;
* box plot, etc...&lt;br /&gt;
&lt;br /&gt;
Clipping&lt;br /&gt;
&lt;br /&gt;
GPS example.&lt;br /&gt;
&lt;br /&gt;
== Introduction to Hacking ==&lt;br /&gt;
&lt;br /&gt;
Surface Areas of Attack:&lt;br /&gt;
* Network&lt;br /&gt;
* Operating system&lt;br /&gt;
* Software&lt;br /&gt;
* Users&lt;br /&gt;
* Hardware&lt;br /&gt;
&lt;br /&gt;
Pen Testers&lt;br /&gt;
&lt;br /&gt;
Do you really trust your own computer? Have you read ever line of source code?  Traced every circuit?&lt;br /&gt;
&lt;br /&gt;
CVE - database of vulnerabilities&lt;br /&gt;
* http://wiki.alpinelinux.org/wiki/Cvechecker&lt;br /&gt;
&lt;br /&gt;
Exploit Development Resources:&lt;br /&gt;
* http://exploit-exercises.com/&lt;br /&gt;
&lt;br /&gt;
Tools:&lt;br /&gt;
* Kali Linux OS - http://www.kali.org/&lt;br /&gt;
&lt;br /&gt;
Metasploit:&lt;br /&gt;
* http://www.offensive-security.com/metasploit-??????&lt;br /&gt;
&lt;br /&gt;
Privilege Escalation - process of acquiring system rights of another target user&lt;br /&gt;
&lt;br /&gt;
Passive Attacking - ease dropping packet sniffing&lt;br /&gt;
* man in the middle&lt;br /&gt;
* ssl strip&lt;br /&gt;
* wireshark&lt;br /&gt;
* dsniff&lt;br /&gt;
&lt;br /&gt;
Denial of Service (DoS)&lt;br /&gt;
&lt;br /&gt;
Social Engneering Tool Kit&lt;br /&gt;
* https://www.trustedsec.com/downloads/social-engineer-toolkit/&lt;br /&gt;
* installed on Kali&lt;br /&gt;
* Capture facebook credentials and other stuff??&lt;br /&gt;
&lt;br /&gt;
OWASP&lt;br /&gt;
&lt;br /&gt;
Web Attacks&lt;br /&gt;
* The Open Web Application Security Project (OWASP) Top 10&lt;br /&gt;
* https://www.owasp.org/index.php/Top10&lt;br /&gt;
&lt;br /&gt;
SQL Injection attacks&lt;br /&gt;
&lt;br /&gt;
Broken Authentications and Session Management&lt;br /&gt;
&lt;br /&gt;
Cross-Site Request Forgery (CSRF)&lt;br /&gt;
* easily to fight against - just include a random number for each request that the user has to respond with&lt;br /&gt;
&lt;br /&gt;
== Booting a Linux System ==&lt;br /&gt;
&lt;br /&gt;
by Mike Lovell&lt;br /&gt;
&lt;br /&gt;
Slides - http://baldr.dev-zero.net&lt;br /&gt;
* http://baldr.dev-zero.net/openwest-2014-booting-a-linux-system.pdf&lt;br /&gt;
&lt;br /&gt;
Boot Process: Platform Init - Bootloader - Kernel Init - Init&lt;br /&gt;
&lt;br /&gt;
Platform Init:&lt;br /&gt;
* Firmware boot&lt;br /&gt;
* BIOS (Award, AMI, Phoenix, Coreboot on Chromebooks)&lt;br /&gt;
* UEFI&lt;br /&gt;
* Low level hardware initialization&lt;br /&gt;
* Pass control from BIOS to bootloader:&lt;br /&gt;
** Find boot loader through MBR or GPT&lt;br /&gt;
** Preboot eXecution Envrionment (PXE)&lt;br /&gt;
&lt;br /&gt;
Bootloader:&lt;br /&gt;
* Grub, Lilo, Syslinux, uBoot, iPXE&lt;br /&gt;
* Loads and execute kernel&lt;br /&gt;
&lt;br /&gt;
Kernel Init:&lt;br /&gt;
* reinitialize hardware with OS drivers&lt;br /&gt;
* load kernel modules&lt;br /&gt;
* initrd (old) / initramfs (newer)&lt;br /&gt;
* mount root&lt;br /&gt;
&lt;br /&gt;
Init:&lt;br /&gt;
* First process the kernel runs&lt;br /&gt;
* Kernel Process PID 1&lt;br /&gt;
* Responsible for starting all other applications&lt;br /&gt;
* Traditionally been sysvinit, now upstart/systemd/openrc&lt;br /&gt;
&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
UEFI&lt;br /&gt;
* (Unified) Extensible Firmware Interface&lt;br /&gt;
* Most implementations based on the Open Source reference implementation, Tianocore&lt;br /&gt;
* GPT&lt;br /&gt;
** Supports GPT and larger than 2TB boot drives&lt;br /&gt;
** EFI System Partition Table&lt;br /&gt;
** Default application at EFI\Boot\bootx64.efi&lt;br /&gt;
* Secure Boot&lt;br /&gt;
* Not DRM&lt;br /&gt;
&lt;br /&gt;
== Hacking the Moon ==&lt;br /&gt;
&lt;br /&gt;
by Brian G. Merrell&lt;br /&gt;
&lt;br /&gt;
Source and Slides - https://github.com/bgmerrell&lt;br /&gt;
&lt;br /&gt;
Cool kit - Spark Fun Inventors Kit&lt;br /&gt;
&lt;br /&gt;
arduino.cc&lt;br /&gt;
&lt;br /&gt;
Slides - &lt;br /&gt;
&lt;br /&gt;
Noise sensor&lt;br /&gt;
&lt;br /&gt;
Infrared - not as simple as it appears&lt;br /&gt;
* Pro: cheap, widespread&lt;br /&gt;
* Con: many protocols, confusing, line-of-sight, libraries hard to find&lt;br /&gt;
&lt;br /&gt;
Decode signal - IRremote library&lt;br /&gt;
&lt;br /&gt;
put it on a PCB&lt;br /&gt;
* board layout (using Eagle)&lt;br /&gt;
* Generate gerber files (de factor standard used by PCB industry)&lt;br /&gt;
* Send to DrkPCB, BatchPCB (3 boards, $5-$10, 2+ weeks)&lt;br /&gt;
* Remember to add ways to program the microcontroller (FTDI Serial USB, storage)&lt;br /&gt;
&lt;br /&gt;
== Fermented Foods ==&lt;br /&gt;
&lt;br /&gt;
Fermented foods your bishop won&amp;#039;t get antsy about&lt;br /&gt;
:Joshua Tolley and Karlyn Tolley&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Ever wonder where ketchup, salsa, and soda come from? Probably not, but you should. Their modern form conceals their origins, but those foods and many others descend from ancient fermented creations, foods where microbial growth was encouraged. These ancient foods surpass their newer replacements in many ways: they taste better, require fewer chemicals and less energy to produce, store easily, and restore health. Come learn about historic fermented foods, how to make them, and why you&amp;#039;d want to.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Blog - thebacktwenty.blogspot.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Why fermented food?&lt;br /&gt;
* disease fighting&lt;br /&gt;
* nutrition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Process:&lt;br /&gt;
* something to ferment&lt;br /&gt;
* means micro-organims are consuming or transforming&lt;br /&gt;
* starter like soure dough starter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sourdough&lt;br /&gt;
* Easy to make&lt;br /&gt;
* Mix flour with water. Wait.&lt;br /&gt;
* Use same kind of flour all the time&lt;br /&gt;
* Feed it regularly&lt;br /&gt;
* Use non-chlorinated water where possible&lt;br /&gt;
* Keep it warm&lt;br /&gt;
* Always let it breath&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Use Kamoot - hybridization of the hard wheats is bad (increase gluten content to make a pretty loaf of bread)&lt;br /&gt;
&lt;br /&gt;
Use glass as it doesn&amp;#039;t leach and it is easy to clean&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tips and Tricks&lt;br /&gt;
* Keep things clean - more important with long term storage&lt;br /&gt;
* Use non-chlorinated water.  Chlorine is there to kill fermenting.&lt;br /&gt;
* Use right amount of salt&lt;br /&gt;
* Use whey with more sugary ferments&lt;br /&gt;
* Keep ferments separate, or they will cross-contaminate&lt;br /&gt;
* Finding reliable source of raw milk will change your life&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Daniel&amp;#039;s coworker recommend http://www.breadtopia.com/make-your-own-sourdough-starter/&lt;br /&gt;
&lt;br /&gt;
Fermented beverages are good - kefir, ginger ale, kombucha (non alcoholic)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kombucha - Originally from Russia, kombucha is a fermented, sweetened tea.  The fermentation removes much of the caffein, carbonates and acidulates the liquid, and produces several beneficial compounds.  Black tea with refined suagar works best; herbal teas can slow or stop the fermentation, and less refined sugars contribute off-flavors.&lt;br /&gt;
&lt;br /&gt;
== keywords ==&lt;/div&gt;</summary>
		<author><name>Kenneth</name></author>
	</entry>
</feed>