Justin Does SICP

I started working on SICP a bit. I’ll be posting about this on my own blog. I’ll post links in this thread when I’ve made a new post along with comments related to this project.

I was doing a chapter a post with Simply Scheme, but that gets to be too long sometimes. I think I’ll try to not go past like 3k words and break things up once I get to that point (I followed that policy here).

I encountered some wonkiness with ghost blog/Ulysses integration when there are multiple bits of code in a blockquote. I emailed Ulysses support a video of the issue, as I suspect it’s on their end.

FWIW I found it helpful to spend lots of time looking at other answers when doing my Simply Scheme stuff. And the harder a time I had with the problem (or especially if I couldn’t solve it myself), then the more important it was for me to look at other people’s answers and do detailed analysis.

The internet is helpful cuz there are so many Githubs and blogs out there so that if you’re working through some standard material you can find answers that you can check your answers against. And you can also get a sense over time of who the good people are (people with succinct high quality solutions) and focus on them.

Anyways I think it’s interesting cuz I had a perspective shift where trying to solve the problem on my own kind of became more of a beginning or intermediate step than the final step. Like you read some material, then you try an exercise, and that’s where most people stop. But you can look at a bunch of different ways of solving the problem and do detailed analysis on them, or do some super detailed analysis about why your solution works, or various other things.

One issue I’ve had is not wanting to look at answers and getting stuck when I can’t solve a problem. But by figuring out other stuff I can do even if I need to look at the answer, I’ve addressed that problem somewhat

1 Like

I’m having some thoughts about the best way to organize the material.

I think I like the basic blogging format, cuz I’m familiar with it, and it encourages me to go on at length about my thoughts regarding some issue.
So I’m not sure I want to do exercise-first organization (where people have a bunch of small posts on each exercise).
My previous solution was to just blog a whole chapter at a time. That keeps things reasonably organized, but like, I think I had some simply scheme posts over 10k words, which is a bit long…
OTOH if i’m going to be doing smaller chunks, then that’s going to break the content of a chapter across posts in unpredictable ways, which could make it harder to find stuff later.

I welcome thoughts on this

One idea for facilitating finding stuff later is just to have a useful “excerpt” description like this (below the title of the post). That helps some

Another thought I had: one of the nice things about reading several other people’s solutions is seeing how they are approaching the problem, what sorts of tests they are running, and just general methodology issues. That stuff is often more important and helpful than the actual solutions. If you’re having a hard time, you can see if you are doing things in a different way than other people and try to calibrate your approach more to what they are doing and see how that goes.

On that theme, I had the thought today that I should do more organized testing going forward and have an explicit step where I consider a bunch of different cases. I was kinda winging it on the first chapter.

I noticed this cuz I looked at a couple of other people’s solutions and their testing was more thorough.

I’m doing okay at trying to be clear in my own head about what I think is happening and being honest about my mistakes, which are important goals for me.

That actually helps make clear part of the reason I like the blogging format rather than trying to have a bunch of answers in a more organized/polished presentation - cuz I treat the blogging format more like a journal of my thoughts as they are happening and find it easy to talk about misconceptions or errors that come out in that context. It’s not supposed to be like a final polished thing.

When I realized I made an error today, initially I got kind of upset about it, but then I thought about how I could just use that as an opportunity to think and write some more content, so that wasn’t too bad :slight_smile:

Reading through a bit of this faq from the learnprogramming subreddit and making comments

  1. Find some small problem or project that you’re interested in tackling. You could try building a tool to solve a small problem in your life, or try implementing a program you find interesting from scratch. This project will help motivate you to continue to learn to code and will give you opportunities to practice applying what you’re learning.
  2. Do some research to figure out which programming language is most appropriate for your project. (See below for recommendations)

My learning efforts thus far were focused on the Simply Scheme book. I found the problems in that book interesting to think about and was planning on continuing on with SICP. I do occasionally do some more practical coding things but those aren’t actually using Scheme. They might use Ruby or whatever. I think that’s okay? Like the Scheme stuff is more about learning how to think-like-a-programmer, not so much about practical stuff. I think practical stuff would involve using Ruby or Python or something in my case.

  1. Don’t just simply passively follow along whatever resource you’re using. Do the exercises and homework assignments; practice is an absolutely essential part of learning to code.

Do people just try reading passively and not doing anything? I mean I know they do but it seems bizarre.

How active have your readings of Popper, Goldratt, Rand or Mises been? A lot of times people don’t know what activities to do or how to do them. And they hated homework in school and did not find it useful even when they did it…

I think the FAQ advice is not gonna solve people’s problem. To many people it reads as “Do a thing you hate or you won’t learn to code.” And then some people will force themselves to do it but that self-coercion isn’t going to result in much learning either. It’s easy to sabotage your practice. You need to know how and why to practice, and see the value, just skipping the practice is a reasonable option over doing unwanted, ineffective practice. (But if you make yourself practice, sometimes you see the point and it ends up helping. But that’s unreliable.)

A reasonable policy for many people would be to make themselves start practicing, but let themselves stop. Lots of people won’t even try it but could actually get into it if they started doing it. Making yourself throughout the entire activity is awful and destructive, but only making yourself at the start and not the rest of the time could easily be better for people than not doing that. (You may respond that all coercion is awful. But they’re also gonna be coerced by giving up at the start of everything and not being able to do much. Not being coerced in any way isn’t an easily attainable alternative here.)

i wonder if i should keep my blog posting format but make a more finalized/organized/canonical version of my answers using https://pages.github.com/

i don’t wanna duplicate content but if the idea is making a more polished version then that’s not duplicating but a different thing

Kinda liking this idea.

I started my aelanteno site to post polished versions of SICP exercise answers. I spend a significant amount of time there on making my answers look pretty and on making them clear to someone who is working on SICP and maybe a little confused. That’s time well spent for me, since I want to learn how to do both those things better. But spending time on formatting especially takes away from time spent on learning content.

I want to use my aelanwave site to post my learning process, although I haven’t posted there in a while. I had been using Basecamp some for that.

I can use this discourse site to ask questions or start discussions about particular things.

This split seems similar to what you’re thinking of doing. I’m still working out how much to post and what to post where, but these are my ideas for now.

1 Like

that makes sense Anne.

For me I think posting my learning process is primary but having the cleaned up/finalized archive of canonical answers still seems like a good idea

not just for helping other people, which is fine, but as another pass through the material and error correction/integration step

1 Like

What’s your workflow like here? Maybe there is something you can do to be more efficient :thinking:

Well, I’m still learning Markdown and html and css and github. I expect to get more efficient as I get more used to them. They are all things I want to learn about.

For posting the answers though, do you need much more than markdown?