CodeMash 2017 Fri

Horizontally Scaling Node.js and WebSockets by James Simpson. Prepare for success with scalability. Automatic failover increases uptime. Load balancers: HAProxy, NGINX, ELB, http-proxy. HAProxy is recommended for not having vendor lock-in and for ease of deployment. Application: nodejs, running on multiple servers. Messaging: Redis, RabbitMQ, ZeroMQ. Redis can do key/value store in addition to pub/sub queues. Approaches: single core vs multi-core servers. (smaller, single core servers can scale up and down better than larger, multi-core servers. Single server failures are easier to manage when the number of servers automatically scales.)

Abusing C# More by Jon Skeet. Silly and amusing edge cases of C# 7. I’m pretty sure I will never use the mongolian vowel separator, but at least now I know that it exists.

Tune SQL Server Like a Guru – The Big Three! by Kevin Boles. The big three are File IO Stall differential analysis, Wait Stats differential analysis, and sp_whoisactive. Not a surprise to me, but it’s still good to review them so that I don’t feel like I’m missing out on some new method of figuring out where SQL Server is having problems. Mr. Boles is an excellent speaker, and it was helpful to hear his explanations of some of the wait types.

CXPACKET – excessive means inefficient parallel processing. See common TSQL Mistakes presentation (mismatched datatypes and function calls in WHERE clause). Adjust MAXDOP and cost threshold for paralelism. The default SQL Server configuration is bad. VMs can be especially bad: thin provisioned disks, underpowered CPU.

ASYNC_NETWORKIO – server-side cursors are really bad. MS Entity Framework often does this.

PAGELATCHIO – slow r/w to disk.

PAGELATCH – not related to disk. Just allocation/deallocation of pages. Only 1 thread can hold the 8 KB page at a time. See especially TempDB.

sp_WhoIsActive – best possible analysis tool. See also Ola Halagren’s maintenance tool.

SSMS tools pack – costs about $50, but automatically puts begin tran/rollback in every new query window in SSMS. Could save your job.

An Applied Introduction to R by Gary Short. Difference between trading and gambling: you can play both sides in trading, but not in gambling. Also, you can’t bet against a horse in gambling. I found some of the high frequency trading terms in this presentation to be confusing: Dutching (betting on multiple stocks simultaneously), Scalping (not ticket scalping; buy at Key prices, aka crossover points, are points at which the first derivative changes??), “Back” vs “Lay”. I didn’t get much R out of this talk.

Machine Learning for Predictive Hiring aka Recruiting Isn’t Just Rainbows and Kittens by Carmen Fontana. Speaker used to be a dev, now a recruiter at a business consulting firm. 60% FT, 40% contractors. Many short term contracts. Machine Learning with Textio – optimizes job ads for length, sentence length, wording choices, gender tone, verb usage. This was a pretty interesting talk because I didn’t know that some HR departments are getting better about not using keyword filtering for every job ad.

Machines Learning Human Biases: How Does It Happen? Can We Unteach Them? by Devney Hamilton. Google Word2Vec (2013). MIT team used Google News data to produce vectors representing the similarities between words (i.e., a word embedding). The ANN produced male/female-aligned patterns that reflect the existing stereotypes. De-bias the vector space?

FoxCon Toledo 2017 Presentation – Using Machine Learning to Automatically Predict and Identify Defects in Automotive Assembly Processes

Operators use torque tools to build a car with nuts and bolts, but what happens when the tools themselves have problems? In this presentation Dave will examine a case study of how preventative maintenance and quality inspection can be improved by using machine learning to model the failures observed on the assembly line.  Learn how Bayesian prediction (frequently used in email spam filters) can be applied to predict and identify these failures before they occur.

Presentation download: [ machinelearningdefects PDF ]


FoxCon Toledo 2017 Conference Presentation Schedule

Saturday January 28

Time             Speaker                  Topic

08:00-09:00 Bob Ruple           Opening Comments

1 09:00-10:15 Bob Pierce          Controlling Factory Automation with VFP – Behind the Scenes

10:15-10:30                 Break

2 10:30-11:45 Doug Hennig       Windows Powershell – Batch Files on Steroids

11:45-12:45 pm             Lunch at Park Inn Hotel

3 12:45-02:00 Mike Levy           Building Hypermedia APIs Using .NET Core

02:00-02:15                 Break

4 02:15-03:30 David Johnson    Using Machine Learning to Automatically Predict and Identify Defects in Automotive Assembly Processes

03:30-03:45                Break

5 03:45-05:00 Dave Bernard     The Death of Privacy

Sunday January 29

Time            Speaker                   Topic

09:00-09:15  Bob Ruple         Opening Comments

6 09:15-10:15  Ondrej Balas     Identity Management in ASP.NET Core

10:15-10:45                Break

7 10:45-noon   Mike Feltman    Introducing F1 MD – Just What the Doctor Ordered

Noon-1:15 pm               Lunch at Park Inn Hotel

8 01:15-02:30  Mark Beno        CLEARPATH (CLEveland Area Research Platform for Advancing Translational Healthcare)

02:30-03:00                Closing Comments

3:00 pm                Conference Dismisses

FoxCon Toledo 2017 Software Developers Conference – Abstracts

*** Begin Abstracts ***

Bob Pierce               Allentown

Controlling Factory Automation With VFP – Behind The Scenes

Smooth-On, a manufacturer of liquid rubbers and plastics, recently moved their operation into a much larger facility near Allentown PA.  Last year Bob showed a case study of automating a large chemical manufacturing plant using Microsoft Visual FoxPro.  This year he pulls back the curtain and delves  into the structure and code that drives this process and how it is integrated into Smooth-On’s custom ERP/MRP (also created in VFP).

Dave Bernard           Atlanta

The Death of Privacy

Companies today can learn almost everything about everyone, especially where they are at any particular time, or where they’ve been over a period of time.  That’s because people holding smartphones carry transmitters of their geolocation data. The phone is the enabler.  I know Google, my Internet service provider, my credit card company, and my phone company all mine my personal data. One day I’ll know as much about me as Google and Facebook do! Facebook has your friends, Google has your email, Flickr has your pictures–everyone has the data that you created, but you don’t actually have control over it yourself.

David Johnson Toledo

Using Machine Learning to Automatically Predict and Identify Defects in Automotive Assembly Processes

Operators use torque tools to build a car with nuts and bolts, but what happens when the tools themselves have problems? In this presentation we will examine a case study of how preventative maintenance and quality inspection can be improved by using machine learning to model the failures observed on the assembly line.  Learn how Bayesian prediction (frequently used in email spam filters) can be applied to predict and identify these failures before they occur.

Doug Hennig Winnipeg

Windows PowerShell: Batch Files on Steroids

Windows PowerShell has been included with the operating system since Windows 7 and is available for download for Windows XP and Vista. What is PowerShell? It’s Microsoft’s task automation scripting framework. PowerShell isn’t just a replacement for batch files; it can do a lot more than batch files ever could. This session looks at PowerShell, including why you should start using it and how to create PowerShell scripts.

You will learn:

– Why PowerShell is useful

– How to create PowerShell scripts

– The basics of PowerShell programming

Mark Beno Cleveland

CLEARPATH (CLEveland Area Research Platform for Advancing Translational Healthcare)

As an academic collaboration between Case Western Reserve University, University Hospitals Cleveland Medical Center, and the Cleveland Clinic, the Institute for Computational Biology (ICB) uses the combined resources and expertise of these institutions to achieve its mission, to advance knowledge of human biology through computational methods on big and diverse datasets, and promote the translation of this knowledge into better diagnosis, prognosis, treatment, prevention, and delivery.

For this purpose, CLEARPATH (CLEveland Area Research Platform for Advancing Translational Healthcare) is being proposed to facilitate discovery and research with tools for generating a person’s single synthetic electronic medical record, cohort discovery, and population health analytics.   CLEARPATH aspires to provide a multi-institutional, broad clinical data exchange research collaborative focused on the Cleveland area (including data from, but not limited to, EHRs, disease registries, biorepositories, clinical trials databases, etc.)

Mike Feltman Toledo

Introducing F1 MD – just what the doctor ordered.

After developing several websites based on Angular and Angular Material I have cobbled together a seed project for new web sites. Mike is tentatively calling it F1 MD (the MD stands for Material Design).  F1 MD makes heavy use of Angular components as building blocks for typical, modern, responsive mobile-friendly websites. It also favors convention over configuration which makes getting a new site up and running with it a snap.  Although any back-end is easily supported, Mike makes heavy use of free storage and Internet services such as Google Drive, Google Sheets, YouTube and Google Calendars.  F1 MD includes components that make it easy to plug in items from any of the aforementioned services.

Mike Levy Cincinnati

Building Hypermedia APIs using .NET core

For the last couple of years, Mike has dedicated a part of his “saw sharpening” to the area of Hypermedia APIs. So when Microsoft released ASP.NET Core, it was only natural to jump into the platform and explore what the product team had delivered. This presentation is a report of his learnings.

Ondrej Balas Detroit

Identity Management in ASP.NET Core

Injecting custom code into authentication and authorization in ASP.NET has always been a chore. ASP.NET Identity is a library built to replace both ASP.NET Membership and Simple Membership, making it much easier to implement custom authentication and authorization without the need to rewrite core components. In this session Ondrej will go deep into the abstractions that ASP.NET Identity builds atop of, and show how to take advantage of these hook points to implement a custom membership system.

CodeMash 2017 Thu

How to Win Friends and Influence People With Data Visualization by Amanda Cinnamon.
This talk was pretty good because it covered the essentials about making good presentations. Focus on the action you want the audience to take. Don’t overwhelm with data. The default Excel charts and tables have too many useless lines. Try using tables for their layouts, not emphasizing or using their lines. Pie charts use a lot of space but make area comparisons hard (nonlinear).

Having said that, this presentation used a lot of xkcd comics, which is cheating. Also, the presenter seemed to be unaware of the wealth of existing books about making good presentations, in particular, How to Write and Publish a Scientific Paper by Robert A. Day. I emailed it to her, and she said she’d look into it. That’s a good outcome.

A math-free introduction to Neural Networks by Randall Koutnik.
UI/UX Netflix employee. Enthusiast, not expert. No math, high level talk. Mostly pictures and poorly hand-drawn diagrams. Recommendations: Use Python tensor flow learning, not JS. Try those ANN tutorials again using Tensor Flow. This wasn’t a good talk because I didn’t learn much. At least the presenter was entertaining with the “Calculords” and “Warror JS” projects he worked on, but I wasn’t convinced that he understood ANN very well.

Why Clock Speeds Won’t Be Getting Much Faster, or: EEs Are Amazing by Dan Wiebe. This was one of my favorite talks this year, despite it not being news for years. I really liked learning about the main factors currently limiting clock speeds in silicon: propagation delays, capacitative distortion, heat dissipation, speed of light, diode drop, and feature size (manufacturing contaminants). This presenter wasn’t an EE, and he didn’t seem to know much about the D latch (Flip flop) circuit he showed, but at least he got the facts right, and he gave a solid presentation.

A Synchronicity – Asynchronous Programming in Android by John Pendexter. This talk was pretty good because the presenter emphasized the two main rules of Android threading and gave specific examples of what can go wrong if you don’t. 1. Do not block the UI thread. 2. Do not access the UI outside the UI thread. (These are the same rules in every UI I’ve ever written for, i.e., Win32 and Android, but their exact details vary widely.) He covered a lot of libraries in a short time, but I was very satisfied with this presentation because I learned some new tricks for Loaders.

Digital Payments in a Mobile World by Parag Joshi. I enjoyed learning about the different payment methods (Square readers, Stripe, Android Pay, Apple Wallet). The variations in fees are somewhat surprising, but I guess everyone needs to make a profit somehow. It was valuable to learn that there is no “debug” mode for payment APIs. All calls are real! Refund fees are about 30%. Also: charities are treated very differently by some APIs.

Square readers for credit cards are used to build your own POS system. You can do NFC tap, chip reader, or mag stripe read. Square already has an app that businesses can use (no programming required). Even for 3rd party POS, Square App must be used. Fee for manually entering CC number is higher (due to fraud risk).

Python 3: It’s Time by Charles Yost. I’m a casual Python user, mostly for Scikit-learn, but I haven’t been happy to see the fragmentation of Python 2 vs 3. This talk convinced me that it’s OK to just ignore Python 2 at this point. Python 3.0.0 (2008) was a complete rewrite with sluggish performance and few packages. The point of the rewrite was to fix Unicode strings and byte encoding. 3.2.0 was the first good one. Integer division is now float by default, but floor is available. map and filter return iterators. range now behaves like xrange, and xrange is gone. pyenv – easily switch between versions of python.

Stranger Streams: How to RxAndroid by Michael Yotive. RxAndroid – subscribe to Android UI events as Observables. creates a pool of background threads, but they aren’t used unless you observe on them. Warning: Observables are immutable, so calling functions on them will create new Observables. So always use method chaining! Warning: Back Pressure – when consumers can’t consume events fast enough. Rx will throw “missing back pressure handler” exception; app dies.

CodeMash 2017 Plans

It’s time for CodeMash again. I’m looking forward to learning new things and getting outside my comfort zone, with respect to programming languages and new frameworks. Last year I tried to get familiar with Node.js and microservices. This year, I’m trying to go to more of the functional programming and machine learning talks. I’m somewhat sad that Stephen Cleary doesn’t have a presentation this year, and neither do I. I guess the reviewers want a wider variety of presenters, as the acceptance rate was under 20% and there are a lot of new presenters.

Anyway, we’ll see how it goes. Time to mash some code!