Saturday, October 24, 2015

9 Amazing Facts About the Osage Orange Tree

The Osage Orange is a beautiful tree with a  fascinating story.

1.  The seeds of the Osage Orange tree are designed to be spread by an extinct North American Megafauna.  No living animal can fully digest the fruit of the Osage Orange.  Scientists think an extinct North American camel or ground sloth digested the fruit 10,000 years ago and spread the seeds.
Once common throughout the Southeast United States, its range had shrunk to just a stretch of land around Texas and neighboring states when Europeans arrived due to the extinction of its primary seed disperser.

2.  The Native Americans highly prized the wood for making bows.  Meriwether Lewis said the Osage Indians, who gave their name to the tree, traveled hundreds of miles to find it.

3.  Its wood is the densest of all the trees, which is not surprising since it must support its numerous 3-5" two pound fruit.

4.  In the age before barbed wire, the trees were planted to create living fences .  The thorny limbs of the trees, planted in a row, would be weaved together to form an implementable wall to keep livestock in and predators out.

5.  Since the wood is amazingly resistance to pests and rotting, it was popular for barbed wire fence posts.

6. Its distinctive yellow-orange colored wood can be used to make a dye.

7.  The wood burns at the highest temperature of all trees.

8.  Although its botanical name is Maclura pomifera, it is also called bois d'arc (French for "wood of the  bow"), or a corruption of that, bowdark or bodark.  Its fruit is also called a horse apple or hedge apple.

9.  The trees are male or female.  Only the female trees produce fruit.

Squirrels eat the seeds, but are not ideal seed dispersers
Bonus Fact:  The Osage Orange tree can live to be 400 years old.

Saturday, October 17, 2015

Every Drone Strike is Another Boston Massacre

File:Boston Massacre.jpg
Paul Revere's slanted depiction of events

On March 5, 1770, Boston colonists attacked British soldiers with snowballs, stones, and sticks.  The overwhelmed soldiers fired into the crowd, killing five.
The Colonial patriots used what they christened the "Boston Massacre" to fan the flames of resentment against the British.

Today, US Drone strikes in the Middle East are fanning the flames of resentment against the United States.  Instead of weakening our enemies by removing leadership, the indiscriminate killings of civilians are making our enemies stronger and more numerous.

Newly released secret documents show that 90% of the deaths from drone attacks in Yemen from 2011 to 2013 were civilians.

To kill Ayman Zawahiri, drones had to kill 128 innocent people, including 13 children.

Every drone strike killing innocent people is another Boston Massacre to that community, rallying the people against the US. We are making enemies faster than we can kill them.

It's time to stop the drone attacks.

Tuesday, October 13, 2015

Photos from Austin .Net Users Group October 12, 2015 - What's New in C# 6.0

Jimmy Bogard addressed 35 people at the Austin .Net Users Group on C# 6.0 and the new C# compiler.  The original C# compiler was written in 2000 in C++.  Roslyn, a completely rewritten compiler coded in C# is currently available.
Roslyn is only usable from VS 2015.

Roslyn being developed in the open at by Microsoft.

It is multi-threaded.

Roslyn makes implementing new language features much easier.
Jimmy showed how C# 6.0 is used in his project AutoMapper.

Here are my unedited random notes on new features in C# 6.0:

0. private setter:
public Type SourceType {get; } //implies setting only in constructor

1. auto-initialize
public string FirstName { get; set; } = "Joe";
public string CreationDate {get;set;} = DateTime.Now;

field or property?  if using variable outside a class use property

2. Expression Body Function Members:
public string FullName { get { return FirstName + " " + LastName; }
replaced with 
public string FullName => FirstName + " " + LastName;
Can be used for methods as well:
public string GetFullName() => FirstName + " " + LastName;

3. Using Static - pulls in all possible methods from class to be used in class
using static System.Console;
 using static system.math;
using System.Linq.Enumerable

4. Null Propagating Operator (The Elvis Operator) ?.
var x = source?.GetType() ?? sourceType;

5. String Interpolation - use instead of string.Format()
return $"Trying to map {SourceType.Name} to {DestinationType.Name}";

6. nameof()
throw new ArgumentNulException(nameof(context));

7. Index Initializer
static Customer() {
Dictionary customers = new {
[0] = new Customer(),
[10] = new Customer()

8. Exception Filter

catch(Exception ex) when System.Threading.Thread.CurrentPrincipal.Indent.Name != "asdf"

9. await/catch/finally