Software Engineers use programming languages to build something awesome. When I was a kid I did the same thing with Legos. In a way Lego builds and Software builds can be very similar. They have to be well designed, kept clean, and maintained in order to stay functional over the years.
Although the original 8-stud Lego brick is still fully compatible with the latest NXT 3.0 robotics kit over 50 years later, the languages we program in today are not the same languages our parents, supervisors, or teachers used coming out of college. If the language you have been programming in was deprecated overnight, what would happen? This presentation will cover what I have learned about languages over 30 years, and specifically the changes I have seen in programming languages at home, school, and work. Starting from copying a game out of 3-2-1-Contact Magazine in BASIC in 1991 to hacking Quake 3 in C++ in the computer labs at Missouri State, to replacing a COBOL project two years ago that was written before I was born on punch-cards, to co-writing a Chef cookbook at 3am via Lync while drinking Monster Energy.
Find out why some languages behave the way they do. Learn why business don't just pack up their expensive IDEs and go open source overnight. See some esoteric languages that will make CCL look like Python! And hopefully leave with a better appreciation of what your tools are doing for you now that just weren't available when this industry started over 50 years ago.
Watch Your Language! - What my Mother Taught Me about Being an Engineer.
1. Pickup those Legos and Watch your Language!
What my Mother Taught Me about Being an Engineer – Neal A Richardson Sr
@NealSr
slideshare.net/NealSr
2. ASM INSTRUCTIONS:
• import: personal history
• define: language, programming
• execute: my journey from BASIC to OpsCode Chef and back to COBOL
• return: how it applies to engineering, healthcare, and life
3. IMPORT: PERSONAL HISTORY
• Neal A Richardson Sr.
• Melissa
• Andrew Jr.
• Calvin
• Mason
• Hazelle
The Lego Movie (2014) – Warner Bros. – minifigs from Amazon.com
4. FAMILY TRADE:
Grandfather: Darwin L. Richardson
July 1922 – Jan 2003
WWII Marine & Copper Miner
Father: David B Richardson
Safety Engineer & Coal Miner
Me: Neal A Richardson Sr.
Java Data Miner
Son: Andrew, Jr.
Minecraft Expert
5. TRACE MINERALS
• Mother: Andrea Richardson
• Choir Director, Mother of Six, Nurse, Teacher, Coach, Counselor, Jailor
• Convinced everyone that vegetables contained ‘trace minerals.’
• Taught me to always be kind to my brothers and sisters
• Even the one that broke my arm when I was six years old
• Keep any you glean from the presentation
• Leave any feedback you may have for me
6. AIR MAIL:
• Grandparents: Calvin & Mary Jackson
• Air Force Colonel, Pilot and Lover of Technology
• Donated our first PC to my parents which my brother taught me how to use
• Encouraged us to pursue technical careers and complete our education
7. Popcorn and a Movie
Movies, Musicals, Animated Movies, and Computer Games.
8. Why history matters -
THE DOCTOR WILL SEE YOU NOW:
• Linguistics
• Why do they always ask for the origin in the spelling bee?
• Computer Science
• Why do I care if the program is interpreted or compiled?
• Healthcare
• Medical history questionnaire – for glasses? Really?
• Life
• What the heck does mining have to do with Chef?
Is there another talk going on in Ballroom B?
• http://valentinlaube.de/projects/minervga/
9. DEFINE: LANGUAGE
• When I say I like programming languages, I’m afraid I come across like this:
12. DEFINE: LATIN (ROMANCE)
• The Roman Empire’s Vulgar Latin
• Over 45 languages derived including:
• Spanish
• Portuguese
• French
• Italian
• Romanian
• Catalan
• English
• Others
13. DEFINE: MORE LATIN
• Scripps National Spelling Bee official rules:
• Speller’s requests: In oral competition the pronouncer responds only to the speller’s
requests for repetition of the word’s pronunciation, a definition, sentence, part of speech,
language(s) of origin and alternate pronunciation(s).
14. DEFINE: PROGRAMMING
• Wikipedia will give you a very good history of programming
• James Iry will give you a very funny one.
• http://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-
wrong.html
• Ada Lovelace, Alan Turing, Java, and C#
15. LEARN YOU A HITCHHIKER
For Great Good…
the Hitchhiker's Guide has already supplanted the great Encyclopaedia
Galactica as the standard repository of all knowledge and wisdom…in two
important respects.
First, it is slightly cheaper; and secondly it has the words DON'T PANIC
inscribed in large friendly letters on its cover
Douglas Adams
Learn you a Haskell for Great Good is an excellent introduction to
Functional programming for two important reasons.
First, it has Gordon Freeman in the Lambda Chapter; and
secondly, it has the words HOLY SHIT inscribed on the free
edition hosted on the author’s website.
Which is what you will be saying once you feel the great good.
Neal A Richardson Sr.http://learnyouahaskell.com/
16. WHAT ABOUT BRAINF***
eWay antKay aSay ainBray uckFay
Seriously? Piglatin?
This is upidstay!
http://esolangs.org/wiki/Language_list
• There are a LOT of esoteric
spoken languages!
• PigLatin
• Klingon (recent AskReddit)
• Multiple LotR Languages
• Dothraki
• Na’vi
• Newspeak (1984)
http://blog.vuze.com/2014/02/24/9-fake-languages-can-learn-speak-converse/
http://www.dangermouse.net/esoteric/piet.html
How about piet? Or one of hundreds more including (“cc’c)
17. DEFINE: LOST LANGUAGES
• Rosetta Stone
• Ancient Egyptian hieroglyph
• Demotic script
• Ancient Greek
• A ‘key to understanding’
18. HANG THE CODE!
It’s more like guidelines anyway, right?
• My Dear Aunt Sally would Malbolge your Monads
• 2 + 5 x 3 = 17, not 21
• She sells seashells by the seashore.
• The seashore seashells she by sells.
• Context-Free Grammar and Finite State Machines
• Functional Programming and Theory of Computation
23. EXECUTE: ATDT*99# @5400
• DIAL-UP BBS – The fastest modem in town
• Juno email before it was cool, then old, then cool again, but dumb now.
• RIPTerm, Usurper, TradeWars, iD Soft, Sierra, and Shareware
http://ton.anairo.tv/wp-content/uploads/2011/12/bbsmenu_large.jpg
27. EXECUTE: TEAMWORK (AFTER)
Gladiator (2000) - Dreamworks
• I’ve lost the password to nebulacomputing
• Nobody controls the wayback machine
• Geocities is available on bit-torrent
• Mom was right…
www.stephens.edu via archive.org wayback machine
28. EXECUTE: THREAD.SLEEP(999)
• C++ is a horrific language to begin with.
• It’s like trying to teach your child Klingon as a primary language, then
filing for ESL status when they reach kindergarten. It’s just rude.
• Physics
• Pre-Med
• Psychology
• I *considered* religion but I got an F in REL-100 twice.
• Community College
• Deep Down, I was always a Nerd -------------- ---- --- -- - - >
• T-Mobile Call Center – Solving Problems with Androids
• The only constant in your career is change
29. EXECUTE: WAKE(PARENT)
• There’s nothing quite as motivating as a child process
• Python made it much easier to get ‘back in the swing of things’
• processing.org
• FANG programming engine for games
• Quake 3 Hacknights in Cheek Hall Computer Labs
• ACM Meetups and AITP Presentations
• Excellent classes on languages, graphics, and MIPS assembly
• Cerner Internship involved XML and DB Optimization
• The final week I wrote a DOS .bat file for a java utility
• Keeping it old school!
30. EXECUTE: NATURAL STATE
• Older company with good history
• Smaller Employee Base with growth potential
• C# and VB.Net programming
• More Database (SQL / DB2) and UI Experience
• Opportunity to learn COBOL while uplifting old systems to new platform
• Overall a very positive opportunity, but I missed the culture here
• Believe it or not, COBOL wasn’t that bad, but I missed Crucible
31. EXECUTE: GOTO 64117
• Oauth Test Helper – Don’t Rain on my Parade!
• Dude, Where’s my GridCloud?
• I get a free ride to the front door? AWESOME!
• Where do I sign up for the free pizza?
• I do not think Chef means what I think it means
brace yourselves, try that again, stop ECHO!, slash the slashes,
get-that-outta-my-path, try/catch,try try try,trying a different idea,
straight teeth (braces), i was overthinking it, yet another go,
dorp, attempt to ignore failure, improved logic and logging, ugly
but it works, fix syntax, fix syntax 2.0, using the sharp end so
team can run against dev with it, reset back to original - Passive
FTW, added new code back, fix re-run logic, Logical bugfix
Actual git commit messages:
• Sometimes you have to get help
• And that’s okay!
32. EXECUTE: BREAK
• Multiple successful RTPs last year using Chef and Java
• Slowly but surely learning how to mac the knife
• But =lorem(5,6) doesn’t work in Word for Mac
• Came across a COBOL related project a few weeks ago
• Respectfully declined the opportunity
33. RETURN: ENGINEERING
• Don’t let your Lego or Software Creations get smashed in the
grapes of wrath.
• Leave everything you touch better than you found it.
• You don’t have to speak a language to appreciate it.
• Steve Wozniak was able to build this in a garage, with a
bucket of breadboards.
• Every line of code you write will stand longer than you can
imagine. Be sure it is structurally sound and a good
representation of you.
34. RETURN: HEALTHCARE
• This industry is a fast-moving one, and we need to move
with it.
• This industry also has a lot of history and tradition. We
need to know where it started.
• There is COBOL running somewhere, even if it’s when the
payment and insurance gets processed. I guarantee it.
• The more you know about a person, the more you can do
to help improve the life and health of that individual.
35. RETURN: LIFE
• Everyone starts somewhere. Usually it is as simple as Hello
World.
• Nearly everyone has a mentor. Most everyone had more
than one. Be sure to thank them. Frequently.
• After you’ve been in the industry long enough to learn
something, try to be a mentor to someone else.
• The way you teach someone can leave a lasting impression.
Be sure you do what you can to make it a positive one.
• Be nice to your Mom. (and Dad)
Although many of you will know more about the languages and concepts I will present, I hope you might glean a few trace minerals from the presentation and possibly provide feedback to me as well.
Sometimes you never know who you will be working with – your competition this week may be your coworker next week.
My mom would frequently share her love of music with all of us. Often that would be through Disney animated films but other times it would be with Musicals or church and classical songs.
She also encouraged us to play video games and did not stop us from exploring and tinkering with the family computer. Even if that meant breaking things now and then.
There are far too many languages to cover in one presentation.
There are too many TYPES of languages. In one wiki page there were over 40 categories, so even spending only 1 minute on each would put me over time.
MOM: Someone will ALWAYS know more than you, but you probably know more than quite a lot of people. Try to share what you know and learn from the others.
SOUND: Pronunciation, audible tone, clicks, accents, etc.
MEANING: *should* be universal between languages – excellent presentation last year on predicting speech recognition showed guessing meaning was more accurate than guessing the sound alone.
MEANING is also what is used when translating between languages. Translation engines move to an intermediary language and then go in reverse to the requested destination.
SYNTAX is how languages are represented, but ultimately it doesn’t matter. It’s just blips on a screen – characters from a keyboard but stored as bytes in memory
The IMPLEMENTATION – whether interpreted or compiled, will ultimately be translated to an intermediate language or a native code that is universal. That is where the real magic happens.
Using the romantic languages as an example, we know that although LATIN is considered a ‘DEAD’ language,
by studying the language, you can better understand the context of many living languages today.
SYNTAX is how languages are represented, but ultimately it doesn’t matter. It’s just blips on a screen – characters from a keyboard but stored as bytes in memory
The IMPLEMENTATION – whether interpreted or compiled, will ultimately be translated to an intermediate language or a native code that is universal. That is where the real magic happens.
Many people are familiar with the rosetta stone. Hopefully it isn’t because of the marketing campaign put out by the language learning company, but if so, I suppose that’s okay.
It was carved in 196 BCE, and re-discovered in 1799, which is astounding.
At the time, most research into heiroglyphics was mere speculation or educated theories, but still just theory.
With the rosetta stone, they had verifiable translation that could be cross-referenced and scrutinized. It was a true breakthrough. It also doubled as the world’s oldest github repo. I hope they checked for compile errors.
The reason there are rules for programming is the same reason we have rules for written languages and math.
Programming languages, really, are a combination of mathematics and written language or logic (which eventually turns into math).
Order of operations allows math formulas to eventually result in a solution, just like programs eventually compile (hopefully) into source code.
For more information, take a course on iTunes OpenCourseWare on the Theory of Computation or read up on wikipedia.
When I rewatched the video as part of my preparation, I thought back ‘what was my first program?’ And I realized it was actually still on a floppy disk in a box downstairs.
And I had a floppy drive on my family pc from 2006 (I had to pay extra for it!)
I am amazed that it actually worked.
If you aren’t familiar with 3-2-1-Contact magazine, just search for the youtube video of their theme song. It was pretty awesome at one time.
I was unable to get this rat maze to compile when I copied it, but considering I was 2 years old the first time it printed, I suspect it was copied wrong when they re-printed it the second time. It was on one sheet of paper in 1993 when I picked it up.
For anyone interested, 321 Contact also had an article discussing how the blood and guts in Mortal Kombat (the original) was too violent and would lead to phychological problems. CoD:MW would probably cause a heart attack.
My mom and dad were both very supportive of my older brother in his efforts to connect to the internet, which at the time was via dial-up networking and Bulletin-Board Systems.
I am convinced the FBI had our house under surveillance due to the amount of time our phones were off the hook, but maybe I’m just paranoid.
I grew up watching Sneakers and War Games and Ferris Bueller’s Day Off.
Wolfenstein isn’t going to download itself.
It was actually my second oldest brother, Steven (the one I played happy birthday to) that inroduced me to Netscape and the world wide web version of the internet,
along with a social studies teacher in my junior high school.
Between HTMLGoodies and JavaGoodies, I was basically going to be the next Bill Gates.
I even Started my own Company. My slogan was: Microsoft says where do you want to go today… I ask where do you want to go… Tomorrow?
The name? Nebula Computing – As you can tell from the keynote this morning – we’re doing very well. I might have sold it a little bit early.
Maybe it was the website.
I was always taught Red with Black was a Friend of Jack
For anyone that is curious and hasn’t been shown this before, yes this is still hosted online somewhere.
Unfortunately it was a ‘free hosting site’ and I lost the password. Ugh.
Moving on.
Luckily, my brother Alan found a Red on Yellow website, which could Kill a Fellow – This website is courtesy of archive.org
The links in the back were a click map of a single image with x/y values to see which icon got clicked on.
My older brother worked with the college to redesign the admission site and over the next few months the rest of the website as well. It is still old by today’s standards, but keep in mind this was in 1999.
Based on archive.org, the design stayed around for at least four years before they revamped the entire system.
So really I learned 2 things from this. First, starting a business is not easy, but it can be rewarding. I still own the business license under Nebula Services, and keep doing it as a hobby.
But second, on the internet, literally NOTHING goes away – EVER. There is a photo of me in a hula skirt for a charity event that I requested to be taken down from facebook, but the image was cached for 2 years on various search engines and other sites before it stopped popping up when you searched my name. At least it was for a good cause.
My brother moved to KC and I moved to Springfield for college. I enjoyed my first semester but tried to take on too much.
I thought I’d get into engineering physics and hardware because it was more exotic I think.
I also had a C++ class that was absolutely horrendous. The first day was terrible and I hated it from the start.
I wound up dropping the class and didn’t return to programming or web design for about 4 years.
That one negative experience with a tough language/teacher combination turned me away from programming my very first semester at SMSU.
So I took some time off for bad behavior.
Eventually, we were able to finish community college and return to Missouri State to do the computer science program. By the time I returned they had dropped the Engineering Physics degree, or reduced it significantly, so it was a natural transition.
Python, processing, FANG, and C made it much more enjoyable though.
Through the AITP and ACM, I was able to tour Cerner and apply for an internship, and I joined in 2011.
I was able to use some of the skills I acquired during my ‘time off’ to do some XML validation, and learned about jMeter and SQL – 2 new tools I knew nothing about.
In true 1990s fashion, I left the company with a BATCH file that kicked off an oauth utility for stress testing a database with.
There may be some people wondering how I learned COBOL if my first internship was at Cerner.
After graduating, I took a different position in Arkansas. I really enjoyed it and learned a lot about Microsoft and .Net.
Visual Studio is an amazing IDE and it was good to be on the UI and DataBase design process.
One of the biggest eye openers, though, was when I opened a program for a new UI I was writing, that had to connect to a COBOL backend through a pipe, and the code was last edited in 1980 – 3 years before I was born. The associate ID listed on the program was the person managing the uplift project. For nearly 34 years they had been using the same code without any edits to any of it. It was over 10,000 lines long.
I was both very impressed and very concerned. It was within a few months that I re-applied to work here. Not because the company I was at was bad – they had very solid code and their stock has quadrupled in 2 years. It’s because I missed the culture and challenges I had here. The code reviews and unit tests and agile development. I feel like I made a good decision to come back.
After the interview process, I was happy to be back on the same team. I said as long as they could promise I won’t be writing COBOL I would come back right away. That was a year ago.
Within the first week, I checked for the sunshine in Jenkins on my batch file, but it was stormy. My mother would be disappointed. It turns out it was a simple config change and we were able to fix it in 5 minutes. Everything is sunshine again now, though. I just checked it today.
A few other things have changed too, but nothing too major. DevCon grew 3 time larger or more, I take a bus to work but I don’t have to walk a mile when I show up late anymore, and there are meetups for all the things.
And speaking of pizza, I was able to learn yet another programming language, that happens to use Yet Another Markup Language to store its code in.