Procrastination bites

Are you a procrastinator? You need to read these, yesterday. Procrastination may or may not let you read all of them at once, but at least read the first one. ๐Ÿ™‚ I watched a TED talk at work about a month and when he talked about the deep dissatisfaction that many procrastinators have with life, that resonated with me andย  I’ve been trying to do a little better on the things that I want but do not have to do!

Why Procrastinators Procrastinate

How to Beat Procrastination

The Procrastination Matrix

 

The depths of recursion

Recursion is a tricky topic that, to be honest, I never really quite understood until I took assembly last fall. This summer, a good friend of mine took the class and would send us several questions at random over the course of a couple weeks as she was studying for her final. When recursion came up, I knew I had to remake the spreadsheet I’d done for myself when taking the class. Sadly, the original was long gone, but I’d like to think this one is better. ๐Ÿ˜€ You may want to open it in a different tab for best visibility.

Something I never really fully understood at first was that recursion is just another function call. Like any other call, once that function completes, your program resumes with the next instruction.

It just happens that with recursion, these function calls are nested. It keeps going until the base case is reached, then resumes execution where it left off. For many functions, there’s nothing after the recursive call so it just completes the function but sometimes there are instructions after which truly demonstrates how recursion works. Looking at this example in MASM, the value is incremented each time rcrsn is called but it prints them in reverse order. If it was printed before the call to rcrsn, it’d print in increasing order. However, it’s after, so what happens is, once the base case is reached you start backtracing to resume execution after the previous function call making it print in decreasing order. Someday I may revisit this in more detail, but this will do for now!

This has a good example of it in C++. http://www.learncpp.com/cpp-tutorial/7-11-recursion/

The future of women in CS

A friend shared this video with me today and it’s worth watching! Some have expressed some concern that it focuses too much on girls and not on women of all ages, but it’s important to consider how to break the cycle. Nothing can be all encompassing and it’s a fun bit of history to me. ๐Ÿ™‚

Women in Computer Science

The "problem" with women in computer science, explained.via Piper

Posted by George Takei on Friday, November 17, 2017

But what do I USE????

Last weekend I was part of yet another round of heated discussion on a topic that I see a lot of division on among my peers – text editors vs IDEs for beginners. I’ll get into that, but first I need to give some background. At this point, I’ve been programming for a few years in one way or another. I started out with VBA (Visual Basic for Applications) in 2012 and then I didn’t have to worry about what I was using to write and compile my code, but once I ventured into C it was a whole new terrifying world. In fact, I didn’t make it very far through CS50 because it was all terrifyingly new and doing anything in the appliance (virtual machine setup) was so foreign as was the way everything was written. I think it took me a month to do two problem sets, although I was also working through the capstone for my MBA at the time. ๐Ÿ™‚ After that, I walked away. I couldn’t make it through the hours of lectures. Now, if I can’t sit through hours of listening to David Malan, I’m not going to be able to sit through long lectures from anyone. I needed something quicker, where I could watch or read something then immediately try it. Right after graduation, I found a C# course that looked promising. It was complicated enough to hold my interest and challenge me while also teaching me the basics of how to use Visual Studio as an IDE. After finishing I thought, hey, I have the perfect simple project to implement with this and built my first program with a GUI that I then used regularly at work. I was hooked.

Eventually I found my way to OSU’s post bacc CS program. In this, they wanted us to use vim and I did at first but was frustrated with the speed of development. As soon as I felt I’d managed enough of a handle to make edits on the server as needed, I found my way back to my trusted friend Visual Studio. It wasn’t quite as friendly for C++ as it was for C#, of course, but it was familiar and worked well and I was able to debug and understand. In the second intro course, which can only be described as a whirlwind of personal hell, I was introduced to Jetbrains’ Resharper extension for VS about halfway through. Life changing. I learned so much from its angry red text and red and yellow light bulbs hahahaha. It wasn’t even that it was always correcting bad code – IT WAS SUGGESTING HOW TO MAKE IT BETTER. Like hey, did you know, this could be declared constant? Oh, I didn’t, thank you so much!

The next quarter, since I had been using cloud 9 to pair debug some of my assignments with a friend/mentor, I started using it more during data structures when we had to do group programming. After that, it only made sense to continue using it for web development! Since then, I’ve almost entirely worked in c9.io workspaces. Parallel programming in C/C++, software engineering group project in PHP/MySQL, operating systems in C, and algorithms in Python. So, in short, I’ve reached a point where I’m just using a text editor with syntax highlighting and a terminal. It’s great, but the path I took to get here was very personal and exactly what I needed. Never did I do what I was told to do, but instead followed my instincts and I’m a better programmer for it.

So now to get to my point. I have a sort of survival guide I’d shared with students and when someone was directed to it, it spawned a discussion that left me furious and feeling attacked. I’m well aware that none of it was meant personally but I DESPISE it when people go off about how IDEs are terrible and detract from learning and tell beginners not to use them. Given what I’ve just said, it’s inadvertently shitting on my entire learning process. It’s not all or nothing. I would never be at the skill level I am nowย without extensive prior use of an IDE for its training wheels and visual aids but I also wouldn’t if I had used it as a crutch.

Vim is great. Text editors are great. They make mistakes painful and memorable, but only when you have the time to really devote to it and quite frankly I did not have it. I was working full time along with two classes as are many of my peers.

I DIDN’T UNDERSTAND until I entered shit in a class wizard and went, oh, so this maps to this, etc, etc and Lord knows I wasn’t about to keep working that way because it was slow. But it was what I needed to guide me down the path through the basics of syntax so I’d have more time for the actual deeper concepts.

I DIDN’T UNDERSTAND pointers until I threw them in a program and traced what was happening. Removing the small roadblocks of syntax left me more time for real problems like, what the heck is this address 0xCDCDCDCD…? (It’s a bogus address. Essentially that’s visual studio speak for “you shall not pass” and it means you did something dumb.)

Iย  was a TA for the intro course for 3 quarters and am now a peer tutor. So when I see people struggling with the way things are presented, I always throw out IDEs as a suggestion. I may be a little harsh on Eclipse, but it eats your CPU for breakfast. ๐Ÿ˜€ They’re not meant to be eternal crutches but they sure as hell can teach you what you need to know in a much more efficient and certainly still effective manner.

The bottom line is, end goal should be proficiency in vim, perhaps even mastery if you so choose, and the ability to read a text about a language and learn everything you need to know. But your journey to that point is personal, and don’t shit on others paths. If anything, help them find their way to explore and discover it themselves.ย There is no universal path.

Hello world!

Well, here goes. I really prefer software development to web development, but there’s just something about having your own hosted website where you can do pretty much anything. Well, within the bounds of being cheap and not wanting to pay for a dedicated server! One of my dear friends (and classmate) has been telling me all summer that I should create a sewing website, so this is my compromise. I make no promises on what sort of random content may end up here because I really do have quite the odd conglomeration of hobbies. ๐Ÿ™‚ That said, I think my first order of business will be a page dedicated to my favorite websites.