Tech Roots » Mitchell Harris http://blogs.ancestry.com/techroots Ancestry.com Tech Roots Blogs Fri, 19 Jun 2015 16:53:54 +0000 en-US hourly 1 http://wordpress.org/?v=3.5.2 Utah Code Camp 2014 – A Success for Ancestry.com Tech Team and Whole Communityhttp://blogs.ancestry.com/techroots/utah-code-camp-2014-a-success-for-ancestry-and-the-whole-community/ http://blogs.ancestry.com/techroots/utah-code-camp-2014-a-success-for-ancestry-and-the-whole-community/#comments Thu, 20 Mar 2014 18:27:12 +0000 Mitchell Harris http://blogs.ancestry.com/techroots/?p=2099 Utah Code Camp 2014 came and went this weekend. More than 850 people attended and with more than 70 sessions, it was the largest code camp in Utah history. Thanks to Pat, Craig, Nate, and Kerry  of Utah Geek Events for putting it all on. Ancestry.com participated in a pretty big way. In addition to the… Read more

The post Utah Code Camp 2014 – A Success for Ancestry.com Tech Team and Whole Community appeared first on Tech Roots.

]]>
Utah Code Camp 2014 came and went this weekend. More than 850 people attended and with more than 70 sessions, it was the largest code camp in Utah history. Thanks to Pat, Craig, Nate, and Kerry  of Utah Geek Events for putting it all on.

Ancestry.com participated in a pretty big way. In addition to the many Ancestry.com employees in attendance, we had three speak.  Bressain Dinkelman presented a session titled, “Yes, You Belong Here,” about the Imposter Syndrome in the tech world, and how to overcome it. Craig Peterson presented a session titled, “High Performance Web Services with Apache Thrift.” I presented a session called, “Making Your Own Domain Specific Language,” and also was called in last minute pinch to  hit speak on RavenDB for a presenter that got pneumonia.

WP_20140320_001

 

In addition to employees attending and speaking at the event, Ancestry.com also sponsored the event. Did you find our spot next to the elevators on the first floor? We were handing out T-Shirts, hand sanitizer, pens, candy, and evangelizing how great it is to work here.  We’re proud to be a sponsors to of Utah Code Camp, and hope for another great camp next year.

The post Utah Code Camp 2014 – A Success for Ancestry.com Tech Team and Whole Community appeared first on Tech Roots.

]]>
http://blogs.ancestry.com/techroots/utah-code-camp-2014-a-success-for-ancestry-and-the-whole-community/feed/ 0
Announcing Daisy, An Ultra Lightweight, Open Source Rules Enginehttp://blogs.ancestry.com/techroots/announcing-daisy/ http://blogs.ancestry.com/techroots/announcing-daisy/#comments Thu, 23 Jan 2014 22:24:57 +0000 Mitchell Harris http://blogs.ancestry.com/techroots/?p=1352 We just released a new open source package here at Ancestry: Daisy. Daisy is a business writeable domain specific language for business rules. It lets business experts write the rules, and software developers define how they are implemented. Daisy itself is domain agnostic, but allows domain experts and software developers to create the rule domain together.  An example… Read more

The post Announcing Daisy, An Ultra Lightweight, Open Source Rules Engine appeared first on Tech Roots.

]]>
We just released a new open source package here at Ancestry: Daisy. Daisy is a business writeable domain specific language for business rules. It lets business experts write the rules, and software developers define how they are implemented. Daisy itself is domain agnostic, but allows domain experts and software developers to create the rule domain together.  An example rule is:

 

Any User
  Is Active
  Has Account
    Balance is less than 0 

    OR Balance is greater than 250000

 

The idea behind Daisy, is that we wanted our domain users to be writing rules, but not code. Rather than using some high-powered rules engine, we wanted something exceptionally light-weight. We also wanted our domain experts to be inventive, and invent rules as they needed them. This is exactly what Daisy does.

Domain experts can write any rule they want, as long as it complies with the basic Boolean algebra syntax. Then, developers come along and write implementations to any rules that haven’t yet been implemented. In this way, it’s just like gherkin, but for business rules. Take a look at the code on GitHub or download the Nuget package.

 

The post Announcing Daisy, An Ultra Lightweight, Open Source Rules Engine appeared first on Tech Roots.

]]>
http://blogs.ancestry.com/techroots/announcing-daisy/feed/ 0
Make your next UI library with an HTML APIhttp://blogs.ancestry.com/techroots/make-your-next-ui-library-with-an-html-api/ http://blogs.ancestry.com/techroots/make-your-next-ui-library-with-an-html-api/#comments Wed, 19 Jun 2013 22:36:09 +0000 Mitchell Harris http://blogs.ancestry.com/techroots/?p=683 Things are changing in the front end web world. Among those changes are HTML APIs.  Here’s the problem. You’ve made a webby-UI widget that is really cool. It’s so cool, that other people want to re-use it. How do you expose your widget so that other people can use it? In the old world, you… Read more

The post Make your next UI library with an HTML API appeared first on Tech Roots.

]]>
Things are changing in the front end web world. Among those changes are HTML APIs.  Here’s the problem. You’ve made a webby-UI widget that is really cool. It’s so cool, that other people want to re-use it. How do you expose your widget so that other people can use it? In the old world, you provided a Javascript API that clients would call, passing in the element. See jquery-ui, code mirror, or anything using Backbone or written as a jQuery plugin. For one or two UI widgets, we tolerate it. But if your page uses a lot of UI widgets, it’s misery. Backbone style misery.  The problem here is that view is being described in Javascript rather than HTML.  If you don’t think that’s extremely hard work, imagine generating ALL of your html using document.createElement.

 

The new world is better. It uses HTML APIs in the HTML itself. For example, Radian, which is powered by AngularJS allows you to specify plots and graphs in HTML, such as:

<plot height=600 aspect=1 stroke="none" marker="circle" axis-x-label="Age" axis-y-label="Height">
<points x="[[fam.age]]" y="[[fam.height]]" fill="[[mfpal(fam.sex)]]" marker-size="[[30*sqrt(fam.salaryhr)]]">
</points>
</plot>

Simply plunk this stuff down in your html, include the right script, and AngularJS + Radian + D3 do their magic.  I’d like to see more of these. I’d like to see accordions useable using <accordion>, and a calendar using a <calendar>.
AngularJS is a fantastic start for creating HTML APIs, but it isn’t the only way. On Ancestry.com’s Surname page we use an HTML API to define the svg graphics. Enter your surname, then view the source. You’ll see two odd looking tags:

 

<div id="surname-origin" context="surname.origin" surname=Harris options='{"limit": 3, "circleSpacing": 30}'></div>
<div context="surname.choropleth" surname=Harris id="surname-choropleth"></div>

 

Why do it this way? When other teams at Ancestry.com want to use our graphics they just include the tags on the page, and our HTML does the rest.

 

The Web world is getting more declarative. Join it. The next time you write a UI visual component, make it a tag.

The post Make your next UI library with an HTML API appeared first on Tech Roots.

]]>
http://blogs.ancestry.com/techroots/make-your-next-ui-library-with-an-html-api/feed/ 0