Sunday, April 27, 2014

About Halfway Through Intro Programming

We are hitting week 5 in the Coursera class I am taking. We just finished the pong game. I was a little disappointed that I did not seem to fix one of the scoring issues I had noted. I really thought I had it fixed, but no. Pong was quite a jump in complexity from the previous mini-projects that are due weekly. I had to scramble a bit more than usual to finish the work.

Python is a fine little language, but I still prefer Ruby for some reason. The Python's usage of the whitespace annoys me. But over all, they are pretty similar scripting languages. Kind of six of one... as far as I am concerned.

I think most of the value for me has been in the UI bits of the class, especially the animation. It isn't something that really comes up when one is trying to, say, find the number of politicians in a data set without an end date to their terms in office, or the number of entities that are typed as people and organizations :) Just generate a list and Bob's your uncle. While I like the expansion of my tool set, it isn't overly interesting enough to me to make me want to do UI or client-side programming. Good to know!

Sunday, April 6, 2014

More Programming Updates

I attempted the Algorithms class on Coursera, and it was a bit too much of a reach. I think if I could have devoted more time, I could have made it work. However, with a full-time+ job and a family, it just was too much. That said, I cannot wait to be in a better position to work through the content. I bought the text, and I have all of the class lectures and assignments. My plan is to circle back, maybe late in the year.

Instead, I started on the three courses from Rice offered on Coursera. The beginning one is fairly easily. I probably could have skipped it, but I had concerns there might be something I would miss, *and* the class projects are all game based: Paper, Scissor, Rock, Lizard, Spock was the first. At some point we'll do Pong.

The other classes cover a Principles of Computing course, and then an Algorithmic Thinking course. Those are the two I am really looking forward to, since that is where I feel like my skill set is currently needing help.

I am still mulling my own kinds of projects that will be a solid demonstration of skills. I am also a bit nervous about the whole idea of changing careers, and wondering if I am just playing some massive joke on myself :) For the most part, though, I concentrate on the steps before me, rather than the mountain looming.

Tuesday, January 14, 2014

Java Programming

Currently, I am taking some time to beef up on my Java. I took a class in once when I still lived in Austin, something like 8 years ago. I only managed to accomplish one working app in the language, so I am very fuzzy on it.

Why some Java? The data algorithms class that starts at the end of the month is in Java. Handily, the course instructors have an intro to programming class in Java. So t is easy to walk through the exercises.

I have a longer post about the work I did over the holiday and the re-do of a web site we have. Also, we bought a machine to be our server and installed Ubuntu. Our plan is to host our website for C's business and host whatever portfolio pieces I want, and maybe make it part entertainment machine: storing movies and shows more easily connect to Amazon Prime viewing and the like.

Short Update and Task Idea

1/14/14
Not much coding today. Still have much hatred in my heart for the quadratic formula. I mean really, if someone gave me this piece of code:

public class Quadratic {

    public static void main(String[] args) {
        double b = Double.parseDouble(args[0]);
        double c = Double.parseDouble(args[1]);

        double discriminant = b*b - 4.0*c;
        double sqroot =  Math.sqrt(discriminant);

        double root1 = (-b + sqroot) / 2.0;
        double root2 = (-b - sqroot) / 2.0;

        System.out.println(root1);
        System.out.println(root2);
    }
}

Then, told me to “an appropriate error message if the discriminant is negative, and behaves appropriately (avoiding division by zero) if a is zero.” I would do this:

public class Quadratic {

    public static void main(String[] args) {
        double b = Double.parseDouble(args[0]);
        double c = Double.parseDouble(args[1]);

        double discriminant = b*b - 4.0*c;
       
        if (discriminant > 1) System.out.println("Discriminant is a negative number");
        else
        {
          double sqroot =  Math.sqrt(discriminant);

          double root1 = (-b + sqroot) / 2.0;
          double root2 = (-b - sqroot) / 2.0;

          System.out.println(root1);
          System.out.println(root2);
        }
    }
}

Then, tell them there is no “a” and that the only division in this code is by 2.0, which means there is no cases possible of division by zero. Is that so wrong?

Other programming task ideas: programming a widget that tracks how many hours I spend programming.

Wednesday, January 1, 2014

Career Decisions II: The Game Plan

If I am going to indeed change careers, I need a plan. A combination of books and Coursera classes will fill out gaps in my knowledge.

Since knowledge without application is useless, I am hoping to have a implementation or deliverable piece for each section. For example, after I have finished the HTML/CSS, I plan to re-do a website. I don't know how feasible it is to have one for each section, though, since for some things like the Data Structures section, it would not be clear to me what the deliverable piece would be. Perhaps since that section is handled by a class, it isn't quite so imperative to have a deliverable?

Knowledge

Here are the sections I am currently covering:
HTML/CSS
I picked up "Head First HTML" and am working through it.
Deliverable: website redo. C's website is one we quickly put together. It would be fun to walk through a redo and make it work better for them.

Javascript/JQuery
I'll probably work through a boo for this one.
Deliverable: Undecided

Data Structures I & II
Coursera is holding both of these soon. The first at the end of the month and the second in March. I am already signed up for both of them.
Deliverable: Course completion

Java and/or C#
Java will be used in the Data Structures class, so maybe I will go with C#. That will be really useful given my current company.
Deliverable: Undecided

I am sure this list will change over time.

Implementation

I have some ideas about longer term projects to work on to help build my skills. It would be great to find an open source project to contribute to, but how to actually go about that isn't clear to me. To me, it is the equivalent of walking into an operating room and asking if anyone needs a hand.

Alternatively, I have thought about setting up a server and creating different versions of blackjack that would use different programming languages and frameworks. For example, one blackjack game would be coded in Python using Django, and another version would be coded in Ruby using Rails. I like this because the challenge stays static and allows me to compare the different languages and frameworks.

Finally, I have always wanted to create a timeline of historical events that would allow me to compare events in different locations. For example, when the Normans were invading England, what was happening in China? I am investigating this project - more to come.

Friday, December 27, 2013

Career Decisions Ia: More Thoughts

I have been thinking about the topics to spend time on over the next 18 months or so, what my goals should be for those topics as well as for the larger programming effort, and what kind of job do I want.

Topics
Of course, I'll study HTML/CSS, data structures, and some form of OOP. Perhaps Javascript/JQuery, too? I have a bit of Python, and quite a bit of Ruby. Should I do more? Should I be looking at understanding more network and operations topics? I haven't really a clue. Maybe I should be looking at a curriculum from a university to guide my pursuit.
What experiences do I want to gain? We have considered setting up our own server and hosting our own pages for the experience? What contributions do I want to make? Lots more questions than answers here. Once I know more about my goals and the specific types of jobs I want, I will know more about what topics to pursue.

Goals
A yoga teacher once asked me, "if you never improve your practice beyond what you do today, would you still practice?" This is one of the most profound questions I have ever had to answer. If I modify the question for this path, it would go something like, "if you never change careers, would you still pursue this knowledge?" The answer here is yes. I would probably not be as focused as I currently am, but I would definitely be interested in these topics even without the career-change motivation.
So then, what can I accomplish with these tools beyond a career change? What do I want to do with these new tools? I have some ideas, don't you know, and I am exploring this more :)

Jobs
Luckily, I have a better idea of the type of job I would prefer. I find design discussions horribly boring. I really don't give a rip about the type of font, or its freaking color. Serif or Sans-serif? Is there a difference I actually give a crap about? Can I read it? Good enough! I tend to gravitate to the backend of systems, and it seems like the place for me. I don't think I am a deploy or build engineer, but I would like to learn more to make the determination.
While I think test devs are the unsung heroes of the SDLC, they just seem to deal with a ton of crap from all sides and a frequent de-valuing of their piece of the process. Maybe it depends entirely on the place?


Thursday, December 12, 2013

Career Decisions I: The Set-Up

I have been thinking for a long time about a career change. I love being an ontologist. I love the work and current company. But I am concerned that changes are coming, and I could be looking for another job soon. Unfortunately, ontology jobs are not a dime a dozen, or even a dollar a dozen. I estimate I have about 18 months before any changes really hit us at current company.

I could probably stay in ontology if we were prepared to move. However, C's business is going well, and we love the PNW. I did try to set my self up as a consultant once last company closed its doors, but I hate self promotion, and I do not think there is enough demand for ontology work on the fly.

I have a smattering of other experience. In my last company, I transitioned into PM-ing (Product for this company, but other places could call it Program Management). I liked it. I tried very hard to obtain a PM position after last company closed, but I got no kind of love there. It was very discouraging.

Additionally, I also have done some coding. As the developers at last company were building the backend entity store, I coded a tool for my own use. I have taught myself Ruby and taken some coding courses through coursera.org. I love the problem solving and the happiness of making something finally work.

I have contemplated a switch before now, but just haven't had the confidence to do it. It seems possible with some work, but without a game plan, it is hard to know what I should have in my toolkit before taking the plunge. My next step is to create a plan for gathering knowledge and experience and then implement it with monthly check ins. I reckon I have about 18 months before changes in my current situation happen, and that seems like a decent amount of time

I wish http://howtocode.io/ was ready, it looks like a perfect program!