Thursday, December 5, 2013
So I decided to look through some of the other books I've collected over the years and have been ignoring, and I selected this book from 2009. Yes, I know there's a more recent edition available, but this one is in hand right now, so why wait? It seems enough to get me started and I'll have a leg up on CSS by the time the other book arrives.
The CSS book I'm using at the moment is rather slow going, but it's taking me over some really basic stuff I went through at Codecademy, and I could probably use the review to continue cementing this into my leaky memory. Oh, I installed the TextWrangler code editor on my Mac at work. Not the greatest tool I've used, but it's free and does a descent job. I really miss how the online editor at Codecademy worked. You could toggle back and forth between the HTML and CSS tabs to do the editing, but the Results window instantly showed your changes. Beats having to continually refresh a web browser.
I find it interesting that after ignoring this blog for over a year, I should be writing daily blog posts here. Go figure.
Wednesday, December 4, 2013
I finished Codecademy's Web Fundamentals tutorials They lessons are broken down into the following sections:
- Introduction to HTML
- HTML Basics
- Build Your Own Webpage
- HTML Structure: Using Lists
- HTML Basics II
- Social Networking Profile
- HTML Structure: Tables, Divs, and Spans
- HTML Basics III
- Clickable Photo Page
- Introduction to CSS
- CSS: An Overview
- Design a Button for Your Website
- CSS Classes and IDs
- CSS Selectors
- Sorting Your Friends
- CSS Element Positioning
- CSS Positioning
- Build a Resume
Before my tutorial "hiatus" some months ago, I had stopped right after "Clickable Photo Page" and before "Introduction to CSS". A perfect place for me, actually. I did the CSS section in two days and felt pretty confident until I got into "CSS Positioning." Even though I solved all the problems (there's a lot of help) and successfully completed the tutorial (earning various "badges" along the way), when I built my Resume as the last task in the CSS section, it looked awful. Technically, the code was all correct, but the header stacked over the left and right divs and I could never figure out how to correctly style the text in the footer.
Tuesday, December 3, 2013
But that's changing.
I've made a number of abortive attempts at learning in other venues including Codecademy. I felt like I wasn't learning how to program there either, but a number of months ago (I don't remember how many), I "started with the basics," as Edna might say, and revisited Codecademy's vanilla-level HTML tutorials. I know. That's shamefully elementary, but I wanted to get back into an area where I felt comfortable and at home, and then start ramping up again...slowly.
But I got distracted again and let it slide.
However, performance evaluations have a habit of shaking one out of complacency and overcoming inertia. I perform some routine maintenance tasks on two websites for the folks I work for. No real heavy lifting, just add a blog post, insert a news item, post a job listing, that sort of thing. We hired a company to do all the design and development which I would be helpless to accomplish.
Now, one of my goals for the coming year, my official work goals, is to learn more about web design and maybe even some development work so I can take greater responsibility for our sites. My boss will pay for any training that I want (within reason). The problem is, where to look for the resources I need to accomplish my goals (and they're not tightly defined)?
I decided to revisit some old friends of mine, namely the Certforums IT certification boards. I received some suggestions besides the CIW Web Design Certification I was initially considering. You can click the link for Certforums to get the details.
While asking more questions online and pondering my options, I logged into the Codecademy site and discovered that I had stopped my last tutorial right on the edge of "Introduction to CSS".
If you've taken the time to read my entire request posted at Certforums and you'd like to respond with something helpful and polite on this blog, I'd be appreciative. If not, then at least I've gotten the ball rolling on this neglected corner of the blogosphere.
As I discovered when writing on another of my blogs (where I spend most of my time these days), blogging is a great way for me to process information. I think that's what I was trying to do here too, but the information wasn't sticking so my determination flagged. Since I've made learning basic web design skills a work goal along with a number of other priorities, I can't just drop it again. What I can do though, is blog about what I'm learning, what I'm not learning, where I'm stuck, and where I'm going.
I don't expect a lot of people to care (barring spammers, of course), but like I said above, any reasonable suggestions and responses are welcome.
As I make my way through the next series of Codecademy tutorials, I'll post my progress. If something else comes up, I'll mention that, too. If you've got other suggestions (books, online resources, and so on), let me know.
Wednesday, September 26, 2012
But it's been over two weeks since my "stall" and I've been avoiding Python and this blog like cancer.
To be honest, I have also been distracted by other priorities, so it's not like I've been sitting idle, staring at a blank blogger composition page, and wishing the muse would whisper something into my little, shell-like ear.
In the meantime, I've noticed two competing philosophies that relate to my current project and dilemma: should non-programmers code or not code? Actually, opinions vary, but I guess it depends on why you're invested (or not) in non-programmers learning to program.
Don't worry. In my case, the chances of me inflicting any program I may write into a professional setting is non-existent. The only place I will (and have) publish the fruits (such as they are) of my labors is here among the millions of chimpanzees vainly attempting to recreate the complete works of Shakespeare (or maybe just a sonnet or two).
Today, I realized that I ran out of
The first step is for me to go over everything, including the comments that have been languishing, and see where I stand. Hopefully this will mean that Day 4 will be forthcoming.
"The single most important skill for a computer scientist is problem solving." -Allen B. Downey
Tuesday, September 11, 2012
What I do to prepare for a "day of Python" is to read through the chapter while sitting well away from a computer. I just read the pages and plan out what I will be doing and noticing areas where I know I will struggle. That way, when I'm back at the computer with Downey's book Think Python, I know the direction in which I'll need to travel and will be aware of the potholes and speed bumps in the road.
"Math functions. Why did it have to be math functions?" Chapter 3 introduces modules, which are files that contain the definitions of the functions and variables related to the module. But while Downey includes a bit of trigonometry (well beyond my skills as a mere writer), this chapter doesn't require the reader to actually do any trig (thankfully). For the sake of "mathphobic" people like me though, it would have been nicer if Downey had inserted another module to use as an example. On the other hand, after importing math, I can use "math.pi" in a statement without having to specifically define pi.
Chapter 3 is also the first time when the reader will have to compose or put together when they've learned in previous chapters, particularly Chapter 2. After reading the chapter, I actually go through the pages sitting at my computer and practicing what I'm reading as I blog (I haven't encountered Exercise 3.1 yet) and I think this helps map the concepts to the practice somewhat. Maybe more examples or practice exercises per concept would be useful, at least to me, when trying to "glue" an idea to an action (thinking of a function vs. writing a function). As of page 27, I've got a program, if you can all it that, containing two function definitions: "print_lyrics()" and "repeat_lyrics()" (more Monty Python fun and games). Now I need to write a script containing those definitions and use the script for the first two exercises.
For the first time, Downey mentions text editors (in the Debugging section) that are "aware" of Python and its "indentation needs," but he doesn't suggest any. Fortunately, gedit, which I regularly use in Ubuntu, lets you select which program or format you need including Python, so I'm OK there...sort of, as it still doesn't do indentation automatically. But the reader who knows absolutely nothing about this will be at a loss.
I forgot to end one of my strings with a double-quotation mark and also forgot that in the shell, to execute my script, I had to type "python repeat_lyrics.py" instead of just "repeat_lyrics.py." Once I corrected those little fubars, my wee script ran. Now on to Exercises 3.1 and 3.2. I guess you can change the order of function definitions and still have the program run OK. But these two exercises were absolutely benign next to what I knew was coming later.
chucol.mml.cam.ac.uk to organize these terms for me somewhat.
I also had a heck of a time getting the first function in the Parameters and Arguments section of the chapter to work until I defined "bruce," which wasn't made explicit in the text. I did it wrong, since I treated the parameter "bruce" like a variable, but it worked. I wasn't satisfied however, completely exited from the shell, opened a new shell, and finally got it to work. I'll never know what I did wrong the first time, though.
I mentioned stack diagrams before and they're tricky because, at least as far as the example in Chapter 3 goes, they're read from the bottom up. The natural human tendency is to read from the top down. On the other hand, I'm a highly visual person, so it does help to have a picture to follow when trying to remember lots of little details, like parameters and variables inside a function.
There were a few concepts that were introduced but I'm not sure how much I was expected to understand. Pages 30 and 31 talked about __main__ as a built-in Python function and None as a special value (None comes back to haunt me later). After this, I was "treated" to information that seemed a little more digestible such as "Why Functions?" which I thought should have been at the beginning of the chapter, and how to import from within a module such as "from math import pi" rather than importing all of the math module with, "import math".
The Debugging section primarily addressed the various problems you can run into with text editors, although it still would have been nice if Downey would have expressed a preference. Maybe he wants his readers to "think outside the book" and do that investigation themselves. I dunno. The Glossary section is especially handy for people like me who have problems connecting concepts and "jargon" with what they actually do. But then, I'm stalling, because I'm living in dread of the Exercises section. Will I be able to successfully navigate the three remaining exercises without either cheating or giving up?
No. I cheated. I found the answer for Exercise 3.3 (I won't tell you where) and the problem made a sort of sense when I saw the answer. I copied it into a script and ran it and it worked. I think most of the required information was contained in the chapter, but I obviously don't "think like a computer scientist" because I couldn't intuitively put it together, even with the clue Downey inserted in the question for the exercise.
Actually, even after looking up the answers (or what were supposed to be the answers) for Exercise 3.4, they still don't make sense. This is typically where I get stuck trying to learn to program, think like a computer scientist, or whatever you want to call it. In a classroom setting (which is where I appear to belong), I could always tuck my tail between my legs and slink off to the instructor's office to ask what I'm doing wrong, but working alone (with everyone who reads this blog watching) at home, it doesn't quite work out so well.
Allen, are you out there?