What is Inkscape?

Alright, so I feel stupid today. Someone mentioned a startup weekend they’d done and a participant in their group using Inkscape for a mockup and I was curious what it was. Once I learned it was a free tool for visualizations like SVGs, I thought, “Oh! I need to add this to my web dev how to site!” Joke’s on me, it’s already linked there. How embarrassing for me. πŸ˜€ The two days in which I wrote that site are a complete blur that I clearly don’t remember at all. However, I did follow that with making marketing give us SVGs for every graphic we have to use in our dashboards now and the logos are all so crisp and clear now. It’s fantastic.

If you aren’t quite sure what SVGs are and how they work, I wrote up a nice little overview from a development perspective here: https://sarahmaas.github.io/how_to/tools.html

Inkscape is free and open source software under the GPL. πŸ™‚ That said, there’s no reason not to go ahead and check it out for yourself: https://inkscape.org/en/

So you think you want to be a computer scientist…

No one is ever really prepared to start a degree in CS, it would seem. This has been a recurring theme for me, watching the intro classes in my program, and it’s not always in the way you might think. Sure, for many it’s a wild new concept that’s very challenging but you also have students who have been at it awhile and are just seeking the piece of paper. Even among the latter, there’s often a wide variety of skill and humility/willingness to learn. Continue reading “So you think you want to be a computer scientist…”

I just can’t even…

Next week is the showcase for school and we have the opportunity to make a poster showing off something we’ve done. After the quarter I’ve had, I was just at a complete loss for what to do with it. Turns out this is what it took to get past it – I present “the life of a developer, as told in memes”:

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.