CarNSteer - Sarah's first Squeak demo

Initial Thoughts of App Inventor

Recently, I was voluntold for a teaching adventure for a local high school.  We were going to meet with high school students for a career day and show off App Inventor 2, having them go through the Magic 8 Ball tutorial.  The night before the presentation, I ran through the tutorial and ended up with this:

Initial Thoughts – Complicated Yet Simple

When I first learned programming, I had it easy – one screen, no drag-n-drop UI, no properties.  For a starting tool, the App Inventor landscape is feature rich, which can be intimidating for someone just starting out.  Designer vs Blocks… the various groupings on each of those screens… if I wasn’t familiar with IDEs in general, I may find this to be a complicated setup.

However, at the same time, drag-n-drop development is a bit simplistic.  No need to remember when to use curly braces or square brackets.  Code blocks are different.  And what’s even nicer with App Inventor is that you can create an app that responds to an accelerometer shake with a few drags of code.

Something else that’s nice is that the App Inventor tutorials are well laid out, making it easy to understand what’s going on.

Puzzle Pieces as Building Blocks

When I first saw the Blocks interface with the puzzle pieces layout, I liked that I could talk to them as pieces of a puzzle.  This also reminded me of Scratch, as I am aware of Scratch and how it is used to get kids into programming.  And deep down, it reminded me of the topic of my first solo speaking engagement – Squeak!

CarNSteer - Sarah's first Squeak demo

Now What?

Now that the high school engagement is over, I want to play more with App Inventor.  Why?  Because I’d love to expose more people to coding and want to know more about this tool and use it when appropriate.  Will I recreate the Car N Steer demo that I presented in 1999 when I talked about Squeak at the Toledo Area Linux Users Group?  Will I write more apps that work with various sensors in my Android phone?  What will I create next?  Stay tuned, as I suspect another app will happen soon enough.

Before Contracting, Do Your Research

Within the past couple months, I’ve been dealing with junior devs who have taken on side gigs and signed up for contracting gigs without really knowing what they were getting into.  As someone who owns her own LLC and can do the side gigs, I find myself explaining to them things they should have learned about before deciding to go the contractor life.  So these are some of my thoughts and experiences.

Build a Support Network

Whether you are going completely on your own or doing side gigs while working a regular job, be sure that you have someone who can mentor you and can give you advice in situations common to contracting.  Find someone who understands the business side – timekeeping, billing, contracts, business pipeline, etc. – and who can help you understand it better.  Find someone who understands how to sell yourself and make yourself stand out.  Find someone who can help figure out problems such as work/life balance.  Don’t try to go it alone without a support network.

2 Key Allies – The Accountant and The Lawyer

Unless you truly are trained in these, you need to have an accountant and a lawyer on your side.  Some may meet virtually, some in-person, and some may mix both.  Go with what you prefer.  The accountant is the one who can help you figure out things such as setting up your accounting books, making sure AR/AP is set up properly, making sure you’re taking the right taxes, offering guidance if you are charging taxes, and everything in between for basic financial transactions.  The lawyer is the one you go to with the contracts to make sure that they’re written so that the best situations for both parties are represented.  Don’t want non-competes?  Specifically worried about who owns the work at what point? There are lawyers of various types out there to help with that.  There are certain things you can and cannot say in contracts, and lawyers are great for getting that in place.  There’s more to lawyers than just a courtroom.  Also, when forming a company, you may find an accountant or a lawyer that can give you their perspective of the various types out there – a sole proprietorship versus a partnership versus an S-Corp versus other types out there.  While these professionals may be costly, at the same time, it would be more costly to be without them and mess up any of their functions.  They are well worth the investment.

Know that it can be Feast or Famine

Contracting has its ups and downs.  Sometimes, business is awesome and the pipeline is overloaded.  Sometimes, business is down and the pipeline is empty.  It’s a balancing act in finding what works for you.  Know that those extremes happen, and be prepared for what happens if the worst points come and how long you can sustain those.  Know your audience and how to market to them – that will help you in your advantage.

Benefits… or Lack Thereof

Something that some of the younger ones are surprised with is that there isn’t health insurance, life insurance, training, mentorship, or {insert some other company perk} here when you’re contracting.  While you might get a flexible schedule or a certain rate or being able to pick and choose what you work on, you have to remember that – as a contractor – you typically won’t get the benefits that your clients have.  It is up to you to provide for yourself – health insurance, life insurance, business insurance, etc.  Want to stay up on your skills or learn new things?  The cost – and not just monetarily, but time as well sometimes – of conferences or things like Pluralsight or DevIQ also need to be factored in.  When you have to cover those yourself, you need to consider the cost of those when figuring out your rates.

Doing Research

Going into contracting wasn’t something I just jumped into – though when I had quit my job to go contracting full-time originally, it may have seemed like that.  I spent a couple years observing my friends in the field.  As much as I tease him for giving that workshop everywhere, I enjoyed Michael Eaton’s “Going Independent” workshop. I talked with some of my business owner friends and mentors in the field.  And I made sure that I had all my ducks in a row before making that leap.

So if you’re going the route of contracting, be sure you do the research before getting yourself into a tough situation.

Epilogue

I was contracting from late 2011 until 2016, when I took a position full-time where I am now.  I still have some work that I do under my LLC from time to time.  Would I be a contractor again? If it was the right time and all the cards lined up, absolutely.  But for now, I’ve done my research and am full-time with a company that aligns with my own career goals and allows me to bring out many of my tricks without having the administrative duties of timekeeping and billing.  However, with my experience, I have a feeling I will be talking with more who have entered into contractor life without really realizing what they’re getting into.

Finding Internships in the Tech Realm

A question was recently posted on Twitter on how we got our first jobs in the industry.  This was my response:

However, I had internships pre-college and throughout college and figured I’d share those stories as well.

Internship doing Datasheet QA – Pre-College

One of my brothers’ friends’ dads worked for a large company in the area, dealing with software-related things.  He talked with me and his team interviewed me, having me QA their database, checking that the data in the database matched the datasheets in the specs.  As someone who has an eye for data, this was a great step in the right direction.  While at this place, I found myself moving to a project with a contractor, learning how to migrate from an Access database to a SQL database with a Visual Basic front-end.  I was already familiar with Access and Visual Basic, as I had been playing with those as a hobbyist at home, working on an address book (that I later released on Nonags).  That contractor saw my love of data and introduced me to the Oracle DBA, so that I could see that as well.  Seeing SQL Server and Oracle, I hoped that (1) college wouldn’t be so awful and (2) once I get through that pain, maybe I’ll get to work with data.

Job Source: Family connection

Y2K Programmer

Yes – that was my job!  In the summer of 1999, I ended up working in headquarters of a local retail chain, making sure accounting, payroll, and other systems were Y2K compliant.  I learned FoxPro for this job as well as doing more ETL.  Now how did I end up in this role?  I used to work in the retail chain as a pharmacy tech, working for my now father-in-law.  I think he told me about the role up there.  It was great to get in at HQ, and it was even better when they walked me around on the first day and I ran into family from my mom’s side.

Job Source: Family connections

The Internship That Didn’t Exist

When I came home in the summer of 2000, I didn’t have an internship lined up, and the university’s co-op program placement was useless.  So I looked at the classifieds in The Plain Dealer, a local newspaper for Cleveland and its suburbs.  I noticed a Fortune 500 company with a listing looking for a developer with Visual Basic and SQL Server experience.  Knowing that I had those skills from my past experience, I wrote a cover letter that sold them on the fact that (1) I’m young (and cheap!!), (2) I already have the skills they need, and (3) I don’t need a lot of hand-holding and tend to hit the ground running.  Also, I pointed out that they could bring me on board so that the project didn’t get back-burnered and since I was temporary, it would give them more time to find a more permanent employee.  All the magic words led to an interview, which led to a corner office in downtown Cleveland and a project working on Visual Basic and SQL!  I finished the project with weeks to spare, and they didn’t need to hire an employee for the role after all.

Job Source: Classifieds in The Cleveland Plain Dealer + good personal sales

And, of course, the job I ended up at the longest while in college…

IT Support with the Coolest Guys Ever

Yes, I loved working in IT for the Arts & Science College Computing crew at the University of Toledo.  It was an adventurous part of my career in learning about just what IT encompasses and the good and bad parts, especially in the academia realm.  Supporting students, teachers, and executives, I learned a lot there and was privileged to work with a wonderful, supportive crew.  So how did I end up with this role?  A friend of mine was in the role prior to me, and he recommended me for the role.

Job Source: Friend 

Some Keys to Employment

This is something not just for juniors but for those overall – networking is key.  Talk to people, and listen to people.  Talk with family, friends, and yes… even strangers!  Go to Meetups, user groups, conferences, and other gatherings and network with others.

Don’t be afraid to see what opportunities are out there.  Newspaper classifieds were where I turned, but that was because in the late 90s and early 00s, that was where I knew to look.  Nowadays, we also have LinkedIn, Dice, Indeed, Glassdoor, Monster, Careerboard, ZipRecruiter, and other websites with job listings.  And if you see a listing you aren’t 100% qualified for, take a chance if it’s something interesting and you think you can learn the stuff they don’t have.  Most job listings are guidelines, not requirements that are completely set in stone.

You never know where your next opportunity will be.  Put yourself out there.  And remember – no one can sell you and your capabilities better than yourself!

Kansas City Developer Conference Recap

In early August, I had the opportunity to attend Kansas City Developer Conference in Kansas City, MO.  This was my first official trip to the city as an adult, as the last time I had been in the city was for the National Catholic Youth Conference in 1997.  My experiences this time around exposed me to a great tech community.

The Tech Family Reunion and #SarahConf!

One of my favorite parts of going to tech conferences is meeting other speakers and conference organizers, sharing experiences and learning from each other.   I enjoyed seeing friends I’ve made from my years in the conference organizing and speaking realms.  Most of all, I enjoyed meeting some of their local speakers and hearing about their adventures.   Great to meet new people and consider them part of my tech family!

Special thanks to Sarah Withee – @geekygirlsarah – for introducing me to #SarahConf:

Informative Sessions

In addition to speaking on “The Importance of User Experience for Developers”, I took some time to check out some of the sessions as well.  Some of the sessions I checked out included:

  • Sara Ford – The Psychology of Developer Tool Usability
  • Billy Korando – Everything Else New in Java 9
  • Michael Dowden – Introduction to Java Web Security
  • Jeff Cohen – Computer Science: The Good Parts
  • James Bender – I Promise to Give You a Callback: Working with Asynchronous JavaScript

The Psychology of Developer Tool Usability

With UX and usability (and Sara Ford’s energy and #SarahConf), I had to start with a topic that might bleed into my presentation topic.  I am always curious to see what others have to say, especially when it applies to developers.  This presentation lived up to what I was looking to see, despite 9 am brain going “basal ganglia?!  so early… can’t brain…”

It was great to hear Sara Ford’s experiences both from her times at Microsoft and with her Master’s Degree project as well.

Everything Else New in Java 9

Part of my work at The Software Guild has been teaching Java and contributing to their Java curriculum.  I’ve been watching Java 9 to see what is included, and I’m excited about what it has to offer.  While at KCDC, I caught Billy Korando’s session on Java 9.  It is interesting to see the modularity that comes with the Jigsaw Project.  This isn’t the first time I’ve seen this concept – it reminds me of something similar to PowerShell’s modules.  I’m also excited to see the REPL – as someone who sometimes teaches Java and who helps write curriculum to teach beginners, I can see the REPL being helpful for teaching.  There were some improvements to streams – which I was happy to see as it’s functionality we’ve had in C# with LINQ.  I like when I can show my apprentices that you can do similar things in C# and Java, which makes it easier for me to tell them that if you can understand one, the other has enough similarities to be easy to pick up.  There are plenty of other advancements in Java 9, and Billy had a lot to show in a short period of time.  He did a great job of showing these features!

Java Web Security

After the Java 9 talk, I had to get more Java in!  Michael Dowden presented on “Java Web Security” – including Spring Security, Apache Shiro, and Bouncy Castle.  We teach Spring Security at The Software Guild, so I was well aware of what I was getting myself into, topic-wise.  I hadn’t heard of Apache Shiro, and just saying Bouncy Castle makes me smile.  (A bounce house for Java?!?  Hmm… sounds fun! 😀 )  Being a web security talk, of course, the OWASP 10 had to be mentioned.  Seeing Mkyong.com referenced as a resource validated what I’ve been recommending to my apprentices.

Computer Science: The Good Parts

When I saw this on the schedule, I had to wonder – what is someone considering “the good parts” of CS?  I started out in a Bachelor of Science in Computer Science and Engineering programming and switched after 2 years into a Bachelor of Science in Computer Science and Engineering Technology program.  So I never left the CS part – I switched from theory-focused to application-focused.  There’s a part of me that gets bored with theory and history and just wants to get into applying it.  As I’ve gotten older, the theory part is slowly getting interesting, and I am excited about the historical parts.  So… what did Jeff Cohen point out as some of the good parts?  Data structures – and yes, these can be fun!   He also mentioned some of the historical figures:

He even mentioned Grace Hopper’s take on a nanosecond, which led me to post:

Algorithms are fun too, and Manning has a great book I recommend – as the practical me likes its approach to explaining algorithms:

And one of the most important points that I gathered from the presentation is that computer programming and computer science are not one and the same.  I see many people try to say they are, so it’s good to hear someone else stress that they differ.

I Promise to Give You a Callback: Working with Asynchronous JavaScript

In our curriculum, I also help with the JavaScript materials.  Promises have been on my list of things to read up on and understand.  I’ve known James Bender for awhile, so I was excited to catch a session on something I’ve wanted to learn delivered by a friend.  His absurdly true pizza delivery story – you have to ask him about it – is a great analogy for understanding promises.  James sets the story up right, and it’s an analogy many of us pizza fans can follow.  Thanks to this talk, I can understand promises enough to apply them to code and write curriculum for them – it was a nudge in the right direction.

Conclusion

This was my first KCDC, and I hope it isn’t my last!  Jon, Boon, Lee, and Jeff really take care of their speakers and put on a great conference.  It was great to network with others, meet the KC tech community, and learn about new (to me) technologies.  I am inspired to create some new talks and take on new adventures based on what I learned.  Thanks, Kansas City Developer Conference, for having me!  This is on my list of conferences to try to get to every year.

Code Tunes: Come Write the Code

One of my co-workers has gone down the path of creating song parodies for code, which has inspired me to follow suit.  Today, I’m trying my hand at this with Styx’s “Come Sail Away”:

 

I’m coding away
Set an open file in my IDE
‘Cause I’ve got to be free
Free to write the code that’s inside of me
On board I’m the coder
So git on aboard
We’ll commit for tomorrow
With every for
And I’ll try, oh Lord I’ll try
To write code

I look to the log
Issues in the tracker make me code along
Some bigger, some small
I think of all the bugs and how to squash them all
With braces and semi-colons, we code the fix
Without a good test suite, one bug is six
But we’ll try best that we can
To code on

A gathering of coders appeared inside my head
They sang to me this song of hope and this is what they said

Come write the code
Come write the code
Come write the code with me, lads
Come write the code
Come write the code
Come write the code with me
Come write the code
Come write the code
Come write the code with me, baby
Come write the code
Come write the code
Come write the code with me

I thought that they were coders but to my surprise
They climbed aboard their starship and headed for the skies

Come write the code
Come write the code
Come write the code with me, lads
Come write the code
Come write the code
Come write the code with me
Come write the code
Come write the code
Come write the code with me
Come write the code
Come write the code
Come write the code with me

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.