Sadukie’s SensoRs AdventuRes

The Project

My husband has various temperature and humidity sensors scattered throughout the house, recording data points to a MySQL server. The data is stored on a table that looks like this:

id
<int>
date
<chr>
sensorname
<chr>
sensorvalue
<dbl>
1 31 2016-12-18 22:20:23 temp5 63.6116
2 32 2016-12-18 22:20:23 finalDHTTempF2 68.0000
3 33 2016-12-18 22:20:23 humidity2 36.0000
4 34 2016-12-18 22:25:23 temp5 64.1750
5 35 2016-12-18 22:25:23 finalDHTTempF2 68.0000
6 36 2016-12-18 22:25:23 humidity2 36.0000
7 37 2016-12-18 22:30:23 temp5 63.7250
8 38 2016-12-18 22:30:23 finalDHTTempF2 69.8000
9 39 2016-12-18 22:30:23 humidity2 35.0000
10 40 2016-12-18 22:35:23 temp5 63.3866

I wanted to use his dataset to test my adventures in applying R.

Our current dataset data is a data frame with 198164 rows.

The Problem

Looking at this data, the first thing I thought was untidy. There has to be a better way. When I think of tidy data, I think of the tidyr package, which is used to help make data tidy, easier to work with. Specifically, I thought of the spread() function, where I could break things up. Once data was spread into appropriate columns, I figure I can operate on the data a bit better.

The Adventures so far…

As seen in the date field, the values are logged with their times. This is why we have so many data points. The first thing I wanted to do was group the values into daily means.

Cleaning up Dates

I am using lubridate to make some of my date management a bit easier. I am using dplyr to do the chaining with %>%. I grouped my data by sensor then by date parts – year, month, and day. After grouping the data, I summarized the data to get daily means. Once the data was summarized, I spread it out to make it more meaningful:

year(date)
<dbl>
month(date)
<dbl>
day(date)
<int>
finalDHTTempF1
<dbl>
finalDHTTempF2
<dbl>
finalDHTTempF3
<dbl>
humidity1
<dbl>
1 2016 12 18 NA 68.34286 NA NA
2 2016 12 19 NA 67.77578 NA NA
3 2016 12 20 NA 67.88750 NA NA
4 2016 12 21 NA 68.95625 NA NA
5 2016 12 22 NA 69.74375 NA NA
6 2016 12 23 NA 69.71875 NA NA
7 2016 12 24 NA 70.97500 NA NA
8 2016 12 25 NA 70.85625 NA NA
9 2016 12 26 NA 71.78750 NA NA
10 2016 12 27 NA 71.08750 NA NA
finalDHTTempF1
<dbl>
finalDHTTempF2
<dbl>
finalDHTTempF3
<dbl>
humidity1
<dbl>
humidity2
<dbl>
humidity3
<dbl>
temp4
<dbl>
temp5
<dbl>
NA 68.34286 NA NA 35.80952 NA NA 63.08703
NA 67.77578 NA NA 35.55709 NA NA 62.37841
NA 67.88750 NA NA 35.50347 NA NA 62.41281
NA 68.95625 NA NA 35.46528 NA NA 63.40109
NA 69.74375 NA NA 35.24306 NA NA 64.36713
NA 69.71875 NA NA 35.25000 NA NA 64.33000

Cleaning up NAs

Now some of the data shows NA. If there’s anything I’ve learned with data, NULL and NA can be problematic, depending on the data tool and the user operating said tool. In this case, I can easily convert my NA values to 0 without ruining the data meaning:

finalDHTTempF1
<dbl>
finalDHTTempF2
<dbl>
finalDHTTempF3
<dbl>
humidity1
<dbl>
humidity2
<dbl>
humidity3
<dbl>
temp4
<dbl>
temp5
<dbl>
0 68.34286 0 0 35.80952 0 0 63.08703
0 67.77578 0 0 35.55709 0 0 62.37841
0 67.88750 0 0 35.50347 0 0 62.41281
0 68.95625 0 0 35.46528 0 0 63.40109
0 69.74375 0 0 35.24306 0 0 64.36713
0 69.71875 0 0 35.25000 0 0 64.33000

Presentation

So now that I have daily averages in a format that I can work with, let’s do something meaningful with the data – let’s plot it! I am using ggplot2 for plotting.

Conclusion

So far, I’m having fun putting my skills to work, especially with this dataset at. I’m at the tail end of the 2nd course of an R specialization on Coursera. Between CodeMash and Coursera, I’ve been enjoying my exploRation into R. Here’s to many adventures ahead!

The Geekette’s Wardrobe – Featuring Svaha

Disclaimer: I am not affiliated in any way with Svaha Apparel.  It all started with a Facebook ad, and then I noticed them – geeky dresses WITH POCKETS.  So what’s a geekette to do when she finds fun dresses WITH POCKETS and fun geeky pieces?  She blogs about it!


Last weekend, I was busy playing superhero, having fun with some of the behind-the-scenes logistics and social media for Cleveland Space Apps.  Since I had a little more visibility, I figured I’d be fine wearing my geeky outfits – after all, if a geekette can’t be wearing her geeky outfits at a NASA, we have other problems.

Photo courtesy of NASA Glenn Library

Friday night, I was wearing the Gear Train Stripes Sheath Dress.  I have always been intrigued by gears, and I love using them to signify movement, as indicated in my logo for Cleveland Tech Events / Cleveland Tech Consulting.  So when I saw this dress, I knew I had to have it.  Add to it that it has pockets – as a mom and someone on the go, if I can get away with pockets and not a purse or one more bag to carry, I’m going to take advantage of the opportunity.  This dress was so comfortable to wear and work in.  Whether I was moving to unload my van full of supplies for the weekend from one mega Supermarket Sweep like trip at Sam’s Club or speaking at the podium on weekend logistics, this dress worked well for me!

Thank you for flying Air Circuitry!

Saturday was a busy day – fellow space geeks were hacking on NASA’s Space Apps Challenges.  I was working through logistics and social media fun throughout the weekend.  Toward the end of the day, I was going to put snacks out, but then I remembered a few events and instances at prior places of employment where I remember them bringing snacks to us while we worked.  I appreciated that they’d feed us while we worked, with minimal interruption.  So I brought the concept of the snack cart to Cleveland Space Apps.  So here I am, getting ready to set off on an adventure with our snack cart in my Circuit Board Fit & Flare Dress.  I couldn’t resist making the Air Circuitry comment – so much fun!

But it isn’t just about dresses!  I love that Svaha Apparel has so many geeky options.  On Sunday, I was rocking a Pi Spiral Polka Dots Top:

I love how comfortable the material is and how colorful the designs are.  Being a typical geek, a lot of my wardrobe involves black, dark grey, and dark blue shirts.  However, there are moments where I love to add a bit more color and energy to my wardrobe.

And Svaha Apparel isn’t just for adults!  They have A LOT of designs for children, including geeky dresses for the children!   I imagine if I had a little girl that I’d be buying more of those dresses.  However, I am a mom to boys – so instead of dresses, I’m buying a lot of geeky T-shirts. (It also helps that my husband is as much of a geek as I am.)

My husband brought the boys to visit me at NASA on Sunday, and they too were in Svaha Apparel.  My younger one was wearing the Retro Solar System Glow-in-the-Dark Kids T-Shirt, and my older one was wearing the Future Astronaut Kids T-Shirt:

If you’re looking for geeky gear that’s comfortable to wear, I highly recommend checking out Svaha Apparel!

And if you’re Svaha Apparel and you’re reading this, I’d LOVE to see a lot of those kids shirts in adult sizes – so many fun designs, why do the kids get to have all the fun? 🙂

Why does RTVS open Notepad?!?

For the past few weeks, I’ve been going through the Mastering Software Development in R specialization on Coursera.  After Matthew Renze mentioned R Tools for Visual Studio (RTVS) during his workshop at CodeMash, I had to see what this was about.

As I have been going through my courses – which use swirl() – I have been looking at how things work, comparing RStudio to RTVS.  One of the things that was maddening for me was going through one of the courses in RTVS and having R files open in Notepad.  Notepad?!?  RStudio wasn’t doing this, so I was even more frustrated.  I could also open R files with Visual Studio right from the file system, so the file association was already in place.  This didn’t make sense.  However… RTVS is an open source project, as is swirl().  So I spent tonight looking at code in GitHub.

After poking around swirl(), I found something that led me to try the following command:

getOption("editor")
[1] "notepad"

Wait… how?! Why?!  Poking around some more, I realized that R has its own profile file – similar concepts to the PowerShell profile file and the bash profile file.  I found this post on Customizing Startup (Quick-R) leading me down the right direction.  With a bit of trial and error and finding this closed issue in the RTVS repo, I moved my .Rprofile file to Documents, and RTVS was happier.

Before changing the editor, I wanted to make sure that I could call the editor – so that when I change it, I could make sure it changed.  This is the command I tried, with the sampleTest.R being in my working directory:

edit(file="sampleTest.R")

Sure enough, this loaded my sample file in Notepad.

Using the sample Rprofile.site file from the Quick-R site as a guide, I edited my default editor to the full path to Notepad++.  This looks like it could be the right direction.

Calling the same command from above:

edit(file="sampleTest.R")

Now this loads in Notepad++, which means I have syntax highlighting.  (I would have pointed at Visual Studio Code, but I’m on the one laptop that didn’t have it installed just yet.)

Next goal: How to tell the R Interactive to open the R files in the current instance of Visual Studio….

Adventures with R…

About a week and a half ago, I started going through the R specialization on Coursera.  These are some of my observations.

Reminders of my Past

As I work in RStudio and go through lessons on data tidying, querying for values, and creating functions, I am reminded of some of the courses I went through in my past.  I am calling functions – such as correlation – that I (vaguely) remember learning about in my statistics class.  A lot of my interactions with R remind me of the days of working on engineering homework in Matlab.  I’m also finding that the language makes a lot of sense to me because it has elements of object-oriented programming – akin to the C# and Java that I teach at The Software Guild – and functional programming – with concepts like pipelines and chaining functions, which I liken to some of my PowerShell adventures.  It’s been quite an adventure so far.

Preparedness Going In

I’ve been curious about data science for awhile.  Catching Matthew Renze’s Practical Data Science with R workshop at CodeMash encouraged my curiosity out more.  Between January and March, I dreamt of data science stuff and had ideas popping into my head – especially since NASA’s International Space Apps Challenge is coming up in April, and I’d love to show my NASA friends what I’ve been playing with, hopefully using some of their datasets.  When it comes to querying data, I have a solid background in that too – having worked with multiple RDBMSes and worn the database administrator hat in my past.  Finally, I realized that I was prepared enough – between my solid understanding of programming languages and paradigms and having been exposed to R in the workshop – that I had better follow my dreams and take a course to keep me on the right path.

Current Status

Tonight, I hit an achievement – I finished Course 1 of the R specialization.  Yes, it’s a 4 week course.  Yes, I went through it in a short period of time – but my preparedness really helped in this case.  The only road block I had in this first course was when it came time to use statistical functions and not remembering what they meant or represented.  But after reading and plugging away at it for an hour or so, it all started coming together.

I signed up for Course 2, which starts on Monday.  I’m already through the Week 1 material there, and I’m having fun creating functions.  As I was writing some of my code, I laughed because I recognized R’s syntax and thought “ah… anonymous functions… much like my lambdas in C# and Java….”  It’s good to be adding another language to my toolbelt.

Also, while I mentioned RStudio above, I also find myself yearning to get back into Visual Studio at times.  So when I get tired of RStudio, I switch back to R Tools for Visual Studio 2015.  The only downfall I’ve run into with that is that Notepad is the editor that comes up when swirl() opens a temporary file for me.  I need to eventually sit down, look at configuration, and find out if I can either set Visual Studio or Notepad++ as my R editor for swirl() when I run it in VS.  (And no, I haven’t checked Visual Studio 2017 for the R tools yet…)

Overall, though, I am thrilled to be playing with data again, and R has captured my attention.

The Work/Life/Community Tightrope Walk…

With work/life balance being a questionable topic for some, I figured I would share what it’s like here.  If you haven’t seen me in the community in awhile, there’s a lot going on at work and also need to spend time with my family every now and then as well.

Between now and the beginning of May, if I seem a little chaotic, it’s because I’m walking on a tightrope as carefully as can be.  The work/life/community tightrope is crazy right now!

Work

  • Onboarding a new team member next week
  • Working on things for a big launch on 4/1
  • Helping prepare for a new cohort on 4/17
  • Eventually preparing for another new cohort on 5/8

Life

  • 2 Birthdays in beginning/mid-April
  • Easter

Work – Cleveland Tech Consulting

Community

I keep “doing” and then look back later wondering “how?!?”  Such is the life of Sadukie!

On Making Badass Developers…

I ran into Michael Richardson while at CodeMash, and he forwarded me a link to Kathy Sierra‘s talk Making Badass Developers:

These are my thoughts as I was watching the video.

 

What do you need to know? 

Sitting at the table, someone asks what you need to know to be a web developer.  As Kathy points out, this is the wrong question to ask.  It isn’t about what you know – especially in a world of technology that is ever changing.  It isn’t as much what you know now as it is how you can learn technology and keep up with it.  As Kathy puts it…

How can you learn and build skills QUICKLY?

While talking through this, she identifies that  developers come in multiple forms:

  • Human – extremely scarce, easily depleted cognitive resources
  • Humanoid – consistently available cognitive resources
  • Unicorn – these don’t exist

It is possible to be identified as a humanoid, and she mentions how to handle this.

Where there is high expertise, there is a great deal of cognitive research management. – Kathy Sierra

One of the things she points out is how we can get better.  She points out an exercise with Post-Its – which my friends can tell you that I have a problem with them.  As in, I make Post-It notes all over my wall in my home office and on a spare monitor as well (until I get an adapter to hook it up too).  Kathy mentions grouping them in three groups:

  • Can’t do (but need to)
  • Can do with effort
  • Mastered (reliable/automatic)

The goal is to move the Post-Its to Mastered.  But there tends to be a pile up in Can do with effort or half-assed skills in Mastered.  Another frustration with the move-the-Post-Its game is that these things can take a lot of time.

half-a-skill beats a half-assed skill – Kathy Sierra

Split skills into subskills.  This is how to move past the Can do with effort to Mastered easily – break it into smalller, masterable chunks.  As my instructional coach at work tells me, breaking topics into chunks makes things easier to digest and lessons possibly easy to learn.  This also applies to learning skills.

Conclusion

I really like how Kathy mentioned that it isn’t about what skills you have but how quickly you learn.  This has been a key skill for me to be as successful as I am in my career, because I can pick up a technology and run with it.  I took a FoxPro position without any knowledge of it, and I landed in a C# position without any knowledge of C#.  In both cases, it came down to showing the potential of being a quick learner and running with it.  I’m glad that she points that out.  I also appreciated that she talked about the Post-Its game and how to break skills into smaller chunks – the concept of breaking things into smaller chunks continues to follow me.

There’s more to this video than I cover here, and I recommend you check it out if this is a topic that interests you.

CodeMash 2017 Recap: Conference Talks, Day 2

Every year, I go to CodeMash with little plans made, knowing that the side conversations can happen and derail any plans.  This year was no exception.  I went into Friday with no expectations, and it turned out to be great!

Drops of Jupyter in Your Hair

When I saw the title of this talk, I had to giggle, as it triggered Drops of Jupiter in my head as well as Jupyter notebooks.  Well-played, Brian Sherwin! 🙂    I wish I had seen this earlier in CodeMash, as I could see using a Jupyter notebook for taking notes throughout other sessions.  An interactive notebook, where I can write in programming languages and make notes in code… I can see these things being super useful.

The Software Guild Sponsor Table

During the 9:45am slot on Friday, I stopped by the Software Guild sponsor table.  I’ve been with the Guild for a long time now – part-time teaching assistant for C# and Java off and on since June 2013, full-time instructor since May 2016, curriculum developer, and now the lead instructor for our online programs (with in-person responsibilities and curriculum responsibilities as well).  This was their first conference with me in person, and it was a great experience to talk with the guys at the table and work at the table.  It was great to see people coming by, especially after I had tweeted to come and get scanned to win a PS4.  Our founder Eric Wise and our Employer Network Manager Matt from our Akron office were on hand, answering questions from potential apprentices, potential employers for our apprentices, and other networking opportunities.  I also managed to stop by a couple sponsors to learn more about them and hopefully connect them with the Software Guild.  Whether you’re looking for junior Java or C# developers (join our FREE employer network to be notified) or looking for training to sharpen your object-oriented development skills, keep The Software Guild in mind!

Thinking Like a Hacker

It should be no surprise that I am still intrigued by the security realm.  In the 11am slot, I caught “Thinking Like a Hacker” with Chris Maddalena.  Listening to the ideas behind how hackers work reminds me of the things I would do in my college days, bored to death in my engineering labs and poking at the Sun machines to see what I could get into.  It also reminds me of one of my favorite movies – Ocean’s Eleven – and the stuff they pulled, both in the original movie and the newer remake.  It also reminds me of the mindset that came back to me when I was helping with a security audit for a non-profit last summer.  Listening to Chris’ tales of what it takes to be a pen tester or social engineering your way through things… and his other tales… overall, this session was a great catch!

Vendor Session – Building a Better Development Shop

I took a break after Thinking Like a Hacker so that I could eat lunch, say goodbye to new friends, and wrap things up myself.  I knew I was going to catch one more session before heading home to surprise my family for dinner.  The last session I caught was Building a Better Development Shop, as presented by my boss – Eric Wise.  In this session, he talked of how to attract and retain talented developers and even how to run them off.  All of the things he mentioned in his talk he also puts in practice at the Software Guild.  As he mentions… good developers are… worth it!  I also enjoyed how he mentioned what interviewing practices keep good developers away – I’ve had to set employers straight when there are bad typos in ads (such as Sequel, instead of SQL) and I’m not a fan of trivia games as part of interview processes.  The common traits of high performing teams and the stress of cross-functional teams reminds me of what I enjoyed on my past projects and what I look for when I’m building teams for projects.  Fatigue being deadly to productivity… this is something that we talk about at work.  When one of us is seemingly on a death march, our team talks about it and how we can all pitch in to get our colleagues off of the fatigue train and onto the train to success.  We’d rather divide and conquer than see our own die under the fatigue of work.  Overall, as he put it – good talent is hard to attract and hard to retain, but if you put the effort in and deal with what truly matters, it will be worth it in the end.

Conclusion

Overall, this CodeMash has been an enlightening experience.  When faced with tragedy, it was good to see my conference family and the tech community in general come together in support.  It was great for me to meet my MVP community program manager and see other MVPs.  Networking with other conference organizers, speakers, and community folks, I see a lot of potential for new events and new alliances in 2017.  It was good to see both my security and data science interests piqued. I look forward to the adventures ahead!

CodeMash 2017 Recap: Conference Talks, Day 1

For the first day of conference talks, I had some things I wanted to see and others that I ended up not seeing, due to a turn in events.  I may have been checking out topics I’ve been interested in, as well as scouting for speakers for Stir Trek (as our call for speakers opens January 15).   These are the adventures from conference talks day 1.

Data-Centric Encryption in Practice

I wanted to see data-centric encryption presented by Wolfgang Goerlich, as I’ve enjoyed his talks in the past and wanted to see what he had to say in this talk.  He is quite the storyteller, including Batman in his story.  For an 8am talk, there was laughter and sitting on the edge of my chair, waiting to see where the story would go.  It was great to see the cast of characters trying to get data as well as where the vulnerabilities lie.  I now have a list of more tools to play with.  One of my favorite words of advice in this talk is – encrypt everywhere, decrypt on use.  Overall, I really enjoyed this talk!

Leadership Journey: From Software Developer to Leader

During the event, my conference family was shaken by a tragedy.  Of all of my friends at the conference, there were a few in particular that I was really concerned about, including my friend Mike Eaton.  When I saw that he was doing a talk on leadership, I suspected he’d reference Jim Holmes’ The Leadership Journey book, and after this event, I wanted to make sure all was well.  Also, knowing Mike’s story about going independent and knowing that he took a job full-time with Quicken Loans, I was curious to see how he brought all of his adventures together in this talk.  Sure enough, I was right in that he mentioned Jim’s book as part of his presentation.  Mike did a great job of keeping himself strong throughout the talk.   One of the questions that Mike mentioned in his transition from consultant to employee and management was What is your ‘why?’  I know my whys for going back full-time and taking the opportunities presented.  I will always have whys.  Another running theme in his talk was People are hard.  I am in the process of transitioning back to management (after years of being away), and it was good to hear Mike’s adventures to remind me of the path I’m getting back down again.  He’s right – people are hard.  But oddly enough, I enjoy those challenges.  And as always, I was glad to catch one of Mike’s talks, as it had important lessons.

TechHappy: Hacking Positive Communities

After I heard that my Microsoft MVP Community Project Manager (CPM, formerly referred to as our MVP leads) was going to be at CodeMash, I made it a point to catch at least one of her sessions.  I wanted to meet her in person, as I missed the MVP Summit last November and end up missing our regional gatherings due to work or family obligations.  Lisa Anderson did a great session on hacking positive communities – taking ideas from positive communities and how we can use them in our own communities and lives.  There was a lot of leading with positivity and happiness.  She mentioned two different leadership styles – resonant vs dissonant.  She mentioned How Full Is Your Bucket by Tom Rath, which is now on my list of books to check out this year.

One of the things I really enjoyed about this talk was the reference to Tina Fey and the improv exercise of “Yes… And…”.  Lisa mentioned Second City in Chicago, and this made me think of the improv sessions I’ve seen or gone through in the past with Mike Hagesfeld at Stir Trek and with Jessie Shternshus at a past CodeMash.  I also had to think of Bob Coppedge – one of my favorite people to talk business with – and his improv background and how he recently retired from Point of No Return, a local improv group.

I also enjoyed how she brought in the discussion of Hacking Your Flow State from a guy from Shots of Awe.  She asked us for how we felt when we feel we are at peak performance.  She also mentioned the Flow Genome Project and Flow Dojo.  Finally, she mentioned positivity and play – and she brought play dough!  I took 2 containers home to my boys, and they really enjoyed playing!

My boys playing with play dough from @LisaAnderson312

Have Your Best Season Yet: Becoming a (Microsoft) MVP

After meeting Lisa, she convinced me to join the MVP panel in the afternoon.  It was great to join in on the panel of what is a Microsoft MVP, what do we do, how do we get to become one, and all of the other details around the MVP community.  The panel was made up of a bunch of Visual Studio MVPs, all of us with varying backgrounds:

One of my favorite questions was about what we’re looking forward to this year.  After having presented Microsoft technologies on non-Microsoft platforms in my past (IronPython on Linux at PyCon 2009… with Jim Hugunin and the IronPython team in my audience!) … I am beyond thrilled to see .NET Core on Linux being an official stance.  I am looking forward to .NET Core, seeing its possibilities, helping talk about it on a non-traditional platform, and see how it gets adopted.

I really enjoy my adventures as a Microsoft MVP, and I am thankful that they renew me.  I am also thankful for the privilege to be on this MVP panel with such a diverse group of techies.

Bringing Up Our Future – On Mentoring Junior Developers

Last year, I had a standing room only talk on mentoring junior developers. This year, they moved me to a bigger room, and I had a lot of fun presenting many of my mentoring experiences and lessons to a larger group.  (For the record, I was wearing my Sadukie Squadron shirt that my Akron Java September 2016 apprentices from The Software Guild created to represent our group.  My apprentices rock!)

Representing #SadukieSquadron

The thing that got me the most excited about my talk was seeing Melinda Walker of One Squiggly Line come into my room with the tools of her trade.  I had seen her in action last year, and when I saw her walk in, I knew what was going to happen in my talk – Sketchnotes!!

SketchNotes from Mentoring Junior Developers, courtesy of DevCoaches

Long story, short – I really enjoyed sharing my lessons on mentoring – both with my interactions with my own mentors and with my apprentices.  I will be writing a couple blog posts in the future to talk more about my mentors and my relationships with them, as well as how to find mentors.

Laser Pong 2 – Taking Back the Record

Last year, they had a record setting laser pong challenge.  Apparently some guys claimed the record after the CodeMash record.  So this year, we came back with a vengeance.  I was hanging out with some of my DevCoaches friends – Dave, Victor, and Matt – and figured this could be quite an adventure for us.  We were seated in section R3 – probably the most united section.  Lots of cheering, lots of competition… however, in the end, Team Bitchin lost to Team Rad 11-7.  While there was a winning team and a losing team in terms of the competition, the main point of this exercise was to reclaim the world record.  Our independent witnesses counted 380 of us to hopefully take the record back!

Conclusion from Day 1 of Conference Talks

Overall, it was quite a busy day.  I really enjoyed the sessions that I caught and even in the ones I participated in.  CodeMash has been exciting, enlightening, and really inspiring… and there was still one more day to go!  I am thankful that my husband encourages me to go to CodeMash every year, and I’m most especially thankful for being able to go this year, as there are more friends to make and more things to explore.

CodeMash 2017 Recap: Pre-Compiler Day 2

As I mentioned in yesterday’s post, one of my personal tech topics that I want to explore in 2017 is data science.  For as long as I’ve known, I love data.  As a hobbyist in my teens, I was playing with Access and reporting on data.  I eventually migrated to Visual Basic talking to Access… which led to me taking an internship right out of high school where I was QAing data sheets and working with a contractor on an app that was migrating an Access database to a VB front end and SQL Server back end.  That contractor saw my curiosity and excitement around data, and he introduced me to the Oracle database administrator.  Fast forward into my career – lots of fun writing data reports in Crystal Reports and SQL Server Reporting Services and wearing the database administrator hat over many versions of SQL Server!  Moving right along, I end up writing and supporting web applications that talk to SQL Server back ends.  Nowadays, I’m working at The Software Guild, writing database curriculum for both C# and Java cohorts and encouraging our apprentices to explore databases – amongst other topics.  I get to play with SQL Server and MySQL.

However, as much as I get to play with these tools and data, I’ve been more curious about the topic that is getting a lot of talk – data science.  One of my friends asked what we wanted to learn more about in 2017, and when I mentioned data science, another friend asked if I had met Matthew Renze yet.  While I hadn’t crossed paths with him at that point, I was curious.  He linked me to his courses, which gave me an idea of what to expect with the pre-compiler.  Most of all, I was looking forward to a day of data science at CodeMash, hoping to see what all the talk was about.

Pre-compiler – Practical Data Science with R

With a name like “practical data science”, I went into the pre-compiler expecting how to work with R and put it in practice.  The name of the pre-compiler workshop set the expectations for me quite clearly.  Reading the abstract and the pre-reqs for it, everything was spelled out enough for me to have reasonable expectations going into it.

R and RStudio

In this Practical Data Science with R workshop, we learned about the R language and used RStudio to run through labs on various topics in data science.  I really enjoyed Matthew’s storytelling, weaving a story around a fictitious guy’s ridiculous idea for a space western musical movie.  We played with a movies dataset for many of our labs, looking at the data and seeing why this guy’s musical idea was a bit ridiculous and unwise. For some other labs, we also played with iris data.

Looking at the R language, it made sense to me.  Everything being treated as a vector… I had seen that in other languages before, so it didn’t seem foreign.  The arrows of assignment reminded me of lambda syntax in Java and C#… oh arrows and lambdas and assignments… again, it seemed familiar enough.  The indexing with the ranges reminded me of my adventures with Ruby Koans of CodeMashes past.    Even now, as I recap this, I am realizing that some of the familiarity is due to my past background – surviving engineering and math statistics courses using MATLAB and Maple.  In fact, during the workshop, I mentioned to my friend Victor that I wish I had this mentality back then, as my advanced math classes may have been more tolerable back then.  Playing with R reminded me of how much I love analyzing data and building out visualizations.

R in Visual Studio

In the workshop, Matthew Renze mentioned that you could also run these things in Visual Studio.  Of course, I couldn’t resist – running a new language for me in a tool I am quite familiar with!  I installed R Tools for Visual Studio and ran through the labs from today in Visual Studio.  I really like that the Ctrl-Enter to execute code in RStudio carried over into Visual Studio.  The visualizations were neat to see when I ran them in Visual Studio.

Inspiration to Play More

After sitting through the data science workshop today, I realized a lot about myself and my love of data.  I realize that my love of data really hasn’t changed in the past couple decades – I really do enjoy seeing what all is in a database, how the data relates, the various trends, cleaning it up, understanding why there are certain trends and what the outliers may indicate.  While I had a quick flashback to younger me not happy in my classes in college that introduced the concepts, I realized that I still like the visualizations and calculations, and with the right teachers, things aren’t as bad as they once seemed.  Playing with data makes me excited, and today’s workshop reaffirmed that.

This really confirmed – 2017 will be my year to have fun with data science.

CodeMash 2017 Recap : Pre-Compiler Day 1

Tech-wise, personally, my goals for 2017 involve learning more about data science (especially R and Hadoop) and playing with .NET Core on Linux.  (Have I ever mentioned how excited I am about writing code in a language from Microsoft on an operating system that is not Windows?!?)  Work-wise, I should probably be focusing on C#, Java, and JavaScript-related topics – including which frameworks may win the framework adoption in the JavaScript realm.  Since I’ve heard Angular 2 was a much different beast than Angular 1, I figured I should probably learn more about Angular 2.  So with CodeMash – I knew I had to take advantage of learning from amazing minds on these things.

Pre-Compiler 1: Introduction to Angular 2 (Part 1)

Knowing we have Angular 1 mentioned in some of our curriculum at The Software Guild,  I figured I should at least know a bit more about what’s in Angular 2.  Seeing an Angular 2 pre-compiler in the lineup, I had to see what it was about.  Now, with Angular 1, we do all things in JavaScript – from templates to directives.  Angular 2, though, looks like a lot of TypeScript.

The pre-compiler’s description mentioned:

We will go over everyting that a developer will need to be productive in Angular 2, including components, directives, pipes, services, dependency injection, as well as overviews of RxJS and TypeScript.

Thankfully, I understand the above concepts very well in numerous languages.  However, I had only seen TypeScript in passing and hadn’t had any experience with RxJS.  That description though mentioned that there would be overviews of both, so I didn’t anticipate any issues.

In preparing for the pre-compiler, I installed my pre-reqs and ran through to make sure versions were correct.    I re-read the pre-reqs and still felt confident that this session would be for me.

Even though we will work in TypeScript, a working understanding of JavaScript is essential…

Experience with a modern web framework is not required but would be very useful (React, Angular 1.x, Ember, Vue)

An understanding of TypeScript would be helpful but is not required nor essential — there are lots of example provided

I’ve been working with JavaScript since the late 90s, so that didn’t phase me.  We cover Angular 1..x in one of our courses, enough for me to gather the overarching patterns of Angular.  However, again, no TypeScript here.

Going to this pre-compiler, I expected a little more guidance on how they structure their projects and how this code talks to each other.  However, there wasn’t much guidance.  The slides were also incorrect, but thankfully I know enough about git to  know how to search his tags and do git checkouts as needed.  For the first couple labs, I would check out the solution and then work backwards to understand how the code comes together and just what is going on in each of the TypeScript files.  Oh yeah… did I mention that this is heavily TypeScripted?  Yeah…

After a couple of labs of working backwards from the solutions,  I started to feel comfortable enough to attempt a solution on my own.  I was mostly there other than missing a little bit of component code.  However, I saw the pattern and started writing TypeScript files based on the pattern presented.  After a couple more labs, though, I realized we weren’t getting enough direction and were getting a lot of glossed-over descriptions of code. I could continue the lab on my own time and work backwards on my own time.  This wasn’t as beneficial as I had hoped – other than starting to pick up TypeScript and bolster my confidence in debugging and working backwards from solutions.  It’s time I use the law of 2 feet:

If you are neither learning nor contributing in a session, you are required to get up and leave and join another session in progress where you feel you’ll be more useful and inspired.

Pre-Compiler 2: Game Development with the Unity Game Engine (Part 2)

While talking with friends at lunch, my friend Victor convinced a couple of us to follow him back to Mike Geig‘s workshop on game development with Unity.  Thankfully, when I was installing pre-reqs for my pre-compilers, I installed Unity just in case I changed my mind.  I’ve known Mike from the conference speaking circuit, and I was curious to see his presenter style as well.  I was a little nervous as I really struggle seeing some aspects of games, and I really hadn’t had any background in Unity.  However, my C# background really helped in this when playing with the scripts.

I really like Mike’s presenting style:

  • Set the expectation of what we’re going to do
  • Do the thing while pointing out each step along the way
  • Recapping what he just did
  • Post the steps for us to do the same thing
  • Recap what we just did

For not having background in this and for jumping into the workshop halfway through, I honestly enjoyed this session a ton.  It was great to see how Unity works, and it gave me some ideas on things – granted I need graphics people for help, but it gets me thinking.  I also look forward to us having Mike come speak at our user group sometime this year, as he has some cool topics and has a presenter style that really works well.

Pre-Compiler Day 1 Conclusion

Overall, I learned quite a bit today.  There’s still 3 more days of learning at CodeMash to go.  However, today was quite an adventure in JavaScript, TypeScript, Unity, and C#.  I can’t wait to see what else I’ll learn!