Skip to content

Instantly share code, notes, and snippets.

View ewbarnard's full-sized avatar

Edward Barnard ewbarnard

View GitHub Profile
As the software expert you're on call for life unless you create other experts.
We'll explore the impossible problem of ocean navigation, of finding longitude.
Ships wrecked. Thousands died. 225 years ago Nathaniel Bowditch taught illiterate
sailors to navigate by the stars. Bowditch's five techniques show us how to
master our own craft, creating mastery in the developers around us. Next time you
have trouble explaining, remember how Bowditch did it.
Note - Aimed at the phptek-2020 "tech leadership" track, "topics that would be
interesting to Senior Developers, Team Leads, Dev Managers and CTOs".
### Keybase proof
I hereby claim:
* I am ewbarnard on github.
* I am ewbarnard (https://keybase.io/ewbarnard) on keybase.
* I have a public key ASDuWGG0jI24GLDUiCNbkVn-GhdhpCpnnfPWXhcSKHjbdgo
To claim this, I am signing this object:
@ewbarnard
ewbarnard / gist:97ba2259f0e05e4331bbaa3394da4084
Created November 19, 2018 17:29
How PHP works - for PHP people
How PHP works - for PHP people
Our current PHP internals information naturally assumes the reader can program
in C. I think it's important we address a different audience: regular PHP
programmers. Assume no formal engineering or computer science background. Many
are self taught, which can mean large gaps in knowledge of the language, how
compilers and operating systems work, and so on.
Thus our target audience should be the people who "do" a lot of PHP. This
could include any large production application but also includes core
@ewbarnard
ewbarnard / gist:be4a25778e06d5a2983c451cbc7fec35
Created November 5, 2018 00:52
The Train Wreck: Let's chat about corporate ethics, shall we?
The train fell over as it blew through a construction zone, killing 4 and
causing a safety rule to be amended. The railroad handbook are
"written in blood": every rule exists because someone died. Our software
is quickly reaching the same point yet we have no ethics with teeth. We'll
see how this came to pass, through the Harvard Business School, and how it
disproportionately affects women and minorities. We'll clearly see what
needs to change.
As a well-received twitter thread: https://twitter.com/ewbarnard/status/1033903800975863808
@ewbarnard
ewbarnard / gist:1e65b563e56f3148ac1b2a36cea43972
Last active June 9, 2021 14:43
How The WWII Code Breakers Created Minnesota Supercomputing
Few know the story of the codebreakers who quietly moved to a glider factory
in St. Paul. They invented the first stored-program computer but the NSA kept
it secret. Their company merged with the creators of ENIAC and could have
become Silicon Valley - but never did, because the two groups hated each
other. We'll follow codebreaker Bill Norris and U of MN grad Seymour Cray
through Control Data to Cray Research. The unique character of the company
that made the CRAY-1 is based on the fact that Seymour Cray was not a people
person.
As a twitter thread: https://gist.github.com/ewbarnard/1e65b563e56f3148ac1b2a36cea43972
@ewbarnard
ewbarnard / gist:73b9f2318a6136ab6d3795d15198caf3
Created November 4, 2018 23:33
Extreme Career Building - The Winter Summits
**This is a keynote format rather than technical talk**
Winter climbs of Mount Rainier remain as rare and dangerous now as 40 years
ago, when a group of teenagers decided to do this. Half of us had never been
on a glacier before. This was an audacious goal, which is why we chose it.
The mental toughness learned on this adventure has served me throughout my
career. We'll see extreme planning, practice, and perseverance when a life is
literally on the line. Follow our adventure as we summit Pikes Peak for
practice and Rainier for real in harsh winter conditions. 40 years later our
team instantly came together to tell this story - because we had built trust,
@ewbarnard
ewbarnard / gist:dbe577e7b9210bee32a274955314b711
Last active May 6, 2018 16:33
Data Wrangling for Machine Learning
By far the most work involved in any Machine Learning (ML) project is the data
wrangling. We can do this in PHP but it's far different from building a web
site! We normally use PHP as a *programming language* for *creating stuff*.
Far less often do we use PHP as a *scripting language* for *automating tasks.*
Yet PHP works well for automating tasks because of the rapid development/
turn-around time. We'll learn patterns for multi-step processing. We'll munge
databases, import and export spreadsheet data. Although we use CakePHP, the
principles are universal to any modern PHP framework.
Additional information for conference organizers:
@ewbarnard
ewbarnard / gist:712c82b52bbdc8221fb9c5ce6b59693f
Last active May 6, 2018 16:33
Vacuum Tube Blackjack and Other Zany Exploits
Anyone who fundamentally "gets it," understanding how computers and software
work, is a huge asset to any organization. We'll look at Mel Kaye, the
archetypical Real Programmer. During the 1950s-1960s he was renowned for his
ability to grok underlying systems and write code to take advantage of their
quirks. We'll step back 60 years to learn what it was like programming a
first-generation vacuum tube computer.
Mel's story demonstrates why knowledge of the full stack benefits you as a
programmer. In this talk, we'll hear about his zany exploits, focusing on the
lessons we can learn to make ourselves stronger and better developers.
We've come full circle: A generation ago people were expected to manipulate
binary numbers. Those forgotten skills are coming back into demand. The
Raspberry Pi, IoT microcontrollers, network code, pure-PHP libraries, all
deal with binary-based interfaces or hardware pins. This workshop focuses on
learning the software skills you need for working close to the hardware. We'll
"learn binary" and practice this knowledge with two pure PHP projects. We'll
first learn and use AND, OR, XOR to build a binary adder implementing Boolean
logic gates in PHP. Next we learn shifting, masking, one's complement, two's
complement for our second PHP project: Implement your own algorithm converting
decimal to hexadecimal without sprintf(). This hands-on workshop focuses on
@ewbarnard
ewbarnard / gist:f3a34f3d5bdd3f234266dfee10736c13
Created March 12, 2018 15:48
Producer/Consumer Programming
Producer/Consumer Programming
Time: 30 Minutes
Audience: CakeFest 2018 (CakePHP framework specific)
Producer/Consumer programming is a great technique for offloading work from
your main application. You can scale resources to meet increased demand.
You can "smooth out" spikes by placing your backlog in a queue. You can set
aside long-running tasks such as thumbnail generation. We'll develop a simple
application that produces and consumes via a free CloudAMQP (RabbitMQ)
account.