FoxCon2016 – abstract and references

Abstract: Building Webapps to Help You Build a Jeep

Historically, automotive plant operators received part numbers and VINs in printed formats to run production line (including sub-assembly lines, e.g., sequencing and kitting). These “broadcasts” or build sheets were temporarily attached to cars and quickly discarded upon vehicle completion. In contrast to the traditional printouts, this talk will introduce mobile webapps as an effective way to replace paper printouts and provide vital production information quickly and efficiently. Videos of an automotive plant assembly line will illustrate how operators receive and use information from both the original paper and new webapp formats.

References and External Links (videos, etc.):

Megafactories Ford F150
23:50 final assembly – JPH through 25:49

Four Principles Lean Management – Get Lean in 90 Seconds

Megafactories Dodge Challenger
Broadcast sheets

Kanban Pull Simple Demo
Shows kitting concept

Sonic Production at Lake Orion
Shows kitting carts on the assembly line

Digital Picking System By nbtprofessional

Chrysler Group LLC Belvidere Assembly Plant
at 3:39, sequenced parts in carts

FoxCon2016 – Schedule

Saturday January 30

Time        Speaker        Topic

08:00-09:00 Bob Ruple      Opening Comments

1 09:00-10:15 Bob Pierce    Automating the manufacturing process powered by VFP – A Case Study

10:15-10:30                Break

2 10:30-11:45 Kevin Cully    Xojo Development with focus on 64bit apps and Raspberry Pi

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

3 12:45-02:00 Mike Levy     On my way through the Actor Model, I met Microsoft Orleans

02:00-02:15                Break

4 02:15-03:30 Ondrej Balas   Custom Middlewate in ASP.NET 5

03:30-03:45               Break

5 03:45-05:00 Dave Bernard   The Driverless Car Revolution

Sunday January 31

Time         Speaker       Topic

09:00-09:15  Bob Ruple     Opening Comments

6 09:15-10:30  David Johnson Building Webapps to Help You Build a Jeep

10:30-10:45                Break

7 10:45-Noon   Phil Sherwood The Business of Software

  Noon-1:15 pm               Lunch at Park Inn Hotel

8 01:15-02:30  Brian   Koryzinski          The Secrets of LINQ: the modern day Houdini/Introduction to  DocumentDB

02:30-03:00                Closing Comments

3:00 pm                    Conference Dismisses


CodeMash 2016 Recap – Day 4

ASP.NET 5: How to Get Your Cheese Back

This talk didn’t do much for me except convince me that Microsoft continues to struggle for relevancy by reinventing the wheel. Rewriting ASP.NET from scratch only serves to frustrate everyone involved with it. Not worth my time.

A Developer’s Journey from Object Oriented to Functional Programming

This talk was basically an intro to F#, which I’ve played with before. I wish the author had spent more time describing the good parts of functional programming because he spent a lot of time just talking about object oriented design. I guess there’s no substitute for reading a good textbook functional programming, but I don’t think any minds were changed in the audience.

Having said that, it is definitely possible to go overboard with pure functions or LISP-style macros that later make the code unreadable and unmaintainable. It’s hard to find the sweet spot of a functional language that doesn’t require extra deployment dependencies, and it is still possible to debug it without going insane (haskell is too pure to debug without going insane), and it has enough popularity with other programmers and businesses to not destroy anyone’s career and/or code base.

Or you could just keep writing in a common language (like C# but with more lambdas and linq) and wait for this fad to pass, much like every attempt to popularize functional programming in the past.

Cure What Ails You With This Rx: An Intro To Reactive Extensions

I love the idea of Reactive Extensions. It’s async plus events as an enumerable, which should be a winning combination. If there’s one subject I should really spend more time doing and less time just thinking about, it is this one. I don’t like how some of the transformation functions have opaque internal state (distinct when changed), and it’s all really just for loops under the covers (i.e., iterators), and some of the operands cause every result to be loaded into memory simultaneously (sorting, order by), and some of it looks like a bad SQL optimizer, but the final result looks so clean and simple that I’m left convinced that I should do it anyway.

This talk was presented well, and I wish the author the best of luck with his crazy beehives and temperature measuring circuits, whatever they were.

Side note: maybe Stephen Cleary will finally update Nito Sockets to use Rx, and then I’ll be set for life. 🙂

Software Development Lessons Learned from Industrial Failures in the 1980s

This was the worst talk because it was entirely plagiarized from an NPR story about NUMMI. It didn’t even have programming. I think that NUMMI and the Toyota Production System are very important subjects in the automotive industry, but the author of this talk spent most of her time giving out prizes and stealing photos from websites and books without attribution. It was at this time that the downsides of CodeMash became apparent to me: there are no published proceedings, so you can’t cite work in the conference or hold anyone accountable for the content of their talks. The turnover in technology is so fast that trying to find the signal from the noise in the abstracts is going to be almost impossible anyway.

Oh well, I got plenty of value out of the other talks at CodeMash.

Great Galloping Cuckoos: Algorithms Faster than log(n)

I love to learn new algorithms, and this talk covered a few of them:

This talk made me realize that the majority of programmers in the room had not gotten a CS degree in college, and they did not know the basics of analyzing algorithms in operations performed or memory usage. It worries me to think about how much code must be written without coming close to the harder topics, theoretical or practical. (Heck, I’ve seen lots of buggy implicit FSMs and bad network socket code, so I shouldn’t be surprised.)

The author was trying to do something weird with his Raspberry Pi cluster and full text searches of billions of chemical formulas, which is exactly the kind of madness that CodeMash should encourage.

Cross-Platform Desktop Apps with Electron

Somehow I ended the conference back on node.js, but this time for desktop apps, not for servers. It does sound much easier to go cross platform with javascript and Chrome than with Xamarin. Too bad the GUI looks uniformly bland, much like Java desktop apps from 15 years ago. It still might be worth a shot anyway.

Closing Ceremony

Wow, this was not worthwhile at all. I should have gone home early because the odds of getting anything in the lottery were very bad (mostly because I didn’t know you had to put your ticket into the lottery bowl on Friday morning, but not sooner than that, or else you couldn’t win).

Final thoughts: I was pretty tired at the end, but I was glad that I went. It so rare for me to get to talk with any other programmers, let alone experts, and I easily got the value I’d hoped for out of informal discussions about SQL Broker and linq and async. Here’s to next year’s abstract submission going better.

CodeMash 2016 Recap – Day 3

CodeMash was great. I had a good time, and I learned about several important new programming languages and libraries. I’m writing up my notes here about the talks I attended to motivate myself to follow up on them.

The point of going to a conference like CodeMash is to keep learning new technologies. The relentless rate of change in programming can be overwhelming, but it is important to keep learning anyway, even when the latest fads appear to be reinventions of old ideas. (E.g., slack is just IRC on mobile devices, but it seems to be replacing email.) Anyway, to the talks from Day 3:

Node.js Crash Course

The bottom line I got from this was that when people talk about microservices, they probably mean node.js. It’s appealingly simple: service side javascript with isolated databases are fairly easy to develop and deploy, and the js single event loop structure encourages you to simplify your architecture. Best use: websockets, push notifications in real time.

Overall: an excellent talk about a popular subject.

Get Some REST –On Practical RESTful API Design

This talk was overly academic, being pedantic about how URLs should identify objects, not actions. Sure, if you buy into the whole REST architecture for everything, then it is a good idea to have some standards, but I didn’t learn any new practical parts of this subject.

Microservices – Beyond the Hype

I’m not sure that this talk really got beyond the hype, but it was a rare instance where the abstract perfectly matched the presentation, and I can’t really add much beyond what the original author wrote:

“Microservices are all the rage these days. Everyone is trying to sell their vision of SOA as “microservices”. You know it has reached the mainstream, because the backlash has started, too. When you boil it down, Microservices trade business domain complexity for infrastructure complexity. If you have a lot of business domains, this can help keep your software from turning into a big ball of mud. If you don’t, it’s just building complexity for complexity’s sake. In this talk, we will look at why and when you would want to build microservices, how you would do so, and what to avoid. We won’t fixate on the size of services, but on how to split things apart. After this talk, you will know if you should consider using microservices.”

My favorite part of this talk was the discussion of “The Eight Fallacies of Distributed Computing.

Async Everywhere!

I love Stephen Cleary’s work, and multi-threaded programming is one of my favorite areas to work in (regardless of language). The main point of this talk that driving the adoption of async is being driven by mobile first development (required by app stores) and by cloud first development (scalable server utilization). I couldn’t agree more with this message.

Having said that, async/await is just a compiler trick. It’s really powerful in some scenarios, and it’s helpful to have the compiler create a FSM automatically, but I don’t think it really makes the hard problems any easier. How would you use it to solve the dining philosopher’s problem or multiple producers multiple consumers problem? I think actors and message passing are required to tackle the hardest problems, and I hope that more programming languages add first class support for those techniques. Async/await is progress, but I’m still “await”ing the techniques which will want to make me forget about mutexes forever.

Anyway, I really loved this talk, and I hope Stephen Cleary keeps raising awareness of this topic.

A Deep Dive Into Modern Crypto

Wow, rarely does a presentation make me worry as much as this one did. It’s scary to list all of the broken techniques still in popular use: DES, 3DES, RC4, MD5, SHA1. I guess I’d heard most of the flaws before from Bruce Schneier’s blog and books, but I haven’t seen it all laid bare before. Especially worrisome is the thought of general purpose quantum computers in only 15 years, which could cut the strength of all crypto in half (256-bit ECC RSA down to 128-bit equivalent security) while providing no easy path forward except to massively increase key size.

It’s a thought-provoking and deeply worrying topic with implications for online commerce and national security.

Intelligently Extracting Data from PDFs

Well, what can you expect from a product pitch? I agree that PDFs lose a lot of information present in the original document (e.g., semantic organization between lines and pages), but I really doubt that OCR’ed text can really be as good as the originals.

The author is an expert on the subject matter, and if this is the most important problem facing your business, I guess I would agree with buying the product he was selling (despite the lack of comparison to other products).

Everything you wanted to know about writing async, high-concurrency HTTP applications in Java, but were afraid to ask

I felt this talk was overly specific to the author’s product and implementation of HTTP downloads, but he had a lot of entertaining pictures and metaphors. My favorite: CLOSE_WAIT socket errors are like hiding in a grocery store after the business has closed.