On motivating a Ruby nubie

Hey all. I wanted to dive into a topic that's been on my mind for
years. I've been interested in programming for a very long time and
yet somehow I've only ever dabbled.

* I've never been forced to learn anything through school (a half-year
of turing and another half of ms access 1.0 does NOT count). Frankly,
I do not respect school for learning real programming skills and would
never pay someone money to teach me something I could learn by myself
for "free" (buying books, taking the time, searching for answers
myself).

* I've never used such skills at work (batch files don't count). I
don't think I'll ever do anything programming-related until _after_ I
learn the skills and choose to use it. Honestly, I have an
opportunity to sneak in Ruby in my (small) business.. if it does the
job. Ruby on OSX gives us extra motivation too.

* I've never had motivation to program as a hobby (batch files and
4dos scripting doesn't count, vague interest in c or asm/machine
language doesn't count). I have no problems which I see solved by
programming myself more than using someone else's tool. So instead of
developing the programming skills, I have developed effective
researching and troubleshooting skills.

And yet where I see that my problems can be solved by other people's
tools.. I feel as though I could make better tools myself. I
especially want to be able to create scripts and software solutions
for some of my stranger issues. I already know that I can be valuable
to the community being who I am and having the skills I do, but I
yearn to do more.. to solve problems MY way.

···

---

And so after a lot of thought I ended up looking seriously at Ruby.
Lots of time passed and I revisited the subject to learn that a
community had self-organized, that issues with documentation and such
were being solved, that entertaining tutorials were being written
(props to wtls on that one).

Fine. I like Ruby. I want to learn Ruby. How do I work on the
problem of motivation?

Hack a little every day? Read a little every day? What books, what
tutorials, what news channels? I am not overwhelmed by the amount of
choices.. but I am confused at what order to do things in and why.
The biggest challenge to a complete nubie is the number of tools Ruby
uses..

I had a hand in resurrecting my local RUG. We had our seventh meeting
this month and every time feels like a real success. I did all this
knowing that I wasn't a "real programmer" and that.. I don't know
Ruby! I look back and wonder where all the time went.

I'm a smart guy, so I am making do.. I am learning what I can but I
don't feel _effective_ or _motivated_. I don't want my hand held, I
just need a guiding light.

Has anyone thought about founding a "Ruby nubie" mailing list or
creating nubie-sized short-tutorials, quizzes and challenges? I'd be
very interested in participating.

Fine. I like Ruby. I want to learn Ruby. How do I work on the
problem of motivation?

That's a pretty personal issue and I doubt I have any helpful advice.

When I was younger, I wanted to do all my programming projects with my friends, who were only lightly interested. We never really completed anything. One day, I just got tired of that and started working on things alone (when I couldn't get help) and getting things done. I don't know what changed; something just snapped internally. You have to have to find the motivation for yourself and just dive in!

On the positive side, I do think it gets easier the more you do. When I build something and see how perfect it came out (yes, I have an ego problem), I feel like I can do anything and I want to, right now! I'm working on as many programming projects as I can possibly juggle while still leaving a little room for sleep and I have ideas for my next 604 projects. You just have to get the ball rolling...

Hack a little every day? Read a little every day? What books, what
tutorials, what news channels?

In my opinion, there is one true secret to learning to program. Ready? Here comes all my ancient wisdom in one rule:

Write code.

Yes, I read a lot of books and yes they really help. However, it's my opinion that there is simply no substitute for quality time spent talking to a compiler. For me, that's the key.

(When you get more experienced the rule changes to "Read code.", but that's another topic...)

Has anyone thought about founding a "Ruby nubie" mailing list or
creating nubie-sized short-tutorials, quizzes and challenges?

Not really an answer to your question, but I welcome beginner quiz material submissions to Ruby Quiz. Next week's quiz is a nice early project, I think. Everyone is welcome to send in more.

Good luck and I hope you find what you're looking for!

James Edward Gray II

···

On Apr 13, 2005, at 9:57 AM, Sy wrote:

Hey all. I wanted to dive into a topic that's been on my mind for
years. I've been interested in programming for a very long time and
yet somehow I've only ever dabbled.

<snip>

---

And so after a lot of thought I ended up looking seriously at Ruby.
Lots of time passed and I revisited the subject to learn that a
community had self-organized, that issues with documentation and such
were being solved, that entertaining tutorials were being written
(props to wtls on that one).

Fine. I like Ruby. I want to learn Ruby. How do I work on the
problem of motivation?

Why do you want to learn Ruby? Why do you want to learn to program?

···

On 4/13/05, Sy <sy1235@gmail.com> wrote:

Has anyone thought about founding a "Ruby nubie" mailing list or
creating nubie-sized short-tutorials, quizzes and challenges?

Well, I did create a tutorial especially for nubies (people who have
never programmed in *any* language, I mean). You might want to check
it out:

Learn to Program, by Chris Pine

It starts very gently, and has lots and lots of examples. Also, the
examples are all guaranteed correct: the code samples are run every
time you request the webpage! (So you can reload the random number
examples and see different outputs, for example.) In fact, the whole
tutorial is actually being generated by a Ruby program. It seemed
appropriate. :slight_smile:

As far as motivation is concerned, I must admit that I have the
opposite problem: I'm notivated in for more directions that I have
time to work on! I think that, for me, it's a matter of taking any
tedious aspect in my life, and trying to see how programming could
help do that for me. At first, perhaps it's harder to see what
aspects of your life could be made easier by programming, but with
practice you'll start to see things all over. Right now I am:

- updating our website, all of the pages of which are generated by
Ruby (why not just write the html? because the pages are
automatically updated every time we add new pictures to our site,
which we do daily, so writing it Ruby has already saved us countless
hours of work (it generates thumbnail, too))
- writing a program to turn vaguely-logo-like instructions into a nice
truetype programmer's font (monospaced, no 0-O confusion, etc) and
it's almost done! you'll never "courier new" again!
- writing a music-organizing program so I can say things like "Play me
some upbeat jazz and lounge, but only stuff I haven't listened to
recently, but after two hours or so, tone it down to some mellow,
instrumental lounge... with a sprinkling of Stereolab"
- writing an interpreter for a language I have been playing with...
certainly no Ruby competitor, but it's been an unparalleled learning
experience
- writing a book on Ruby

So those last two aren't really saving me any time... they are more
just for fun. I don't know what to tell you about those... hopefully,
once you learn more Ruby and use it to save yourself time, and you
have fun doing it, you might be motivated toward more "just for fun"
projects.

Best of luck, in any case,

Chris

In my experience, the motivation comes from choosing something that you
really think would be neat and want to accomplish, not just a pretend
goal. If you just play the "what if" game and pretend that you're, say,
designing a grocery store inventory system, you'll peter out rather
quickly. You'll hit some difficult problem and say to yourself, "this
is dumb--why am I bothering with this? I don't work for a grocery store
and I find inventory rather mundane, plus there are thousands of great
programs that could do this better." Also, making something you want to
see, rather than following through tutorials, works better in my
opinion because you seek out knowledge that you know you need; with
tutorials, you're given knowledge and left to decide whether and when
that knowledge will be helpful.
Therefore, I've found that you should do one of two things:
1) Create something that's very personal and enjoyable;
2) Create something that helps you do a needed task.
What I mean by #1 is to make something that you'd love to see,
something like writing your own video game or making an interactive
website. Making a website is perfect because you have a built-in
audience of the entire world. When I was learning ASP programming years
ago, I built a hiking website where you could choose the difficulty of
the hike you wanted, and the site would then query a database to
retrieve the results. Had I chosen to design a pretend-Ebay with
auction bidding, or some other fake e-commerce site like you learn in
so many tutorials, it would've taught me the same skills, but I
wouldn't have been motivated enough to struggle through the hard parts
to accomplish anything, and thus wouldn't have learned. It just
wouldn't have meant enough to me to create a bidding site because
auction-bidding doesn't interest me. However, hiking does interest me,
so I struggled through those parts and learned. It's those dead-end
points where you really learn, because that's when you web-search, and
ask questions, and web-search some more, and drop by Barnes & Noble to
browse the books, and stay late into the night taking "just one more
crack at it," and eventually you get it right, it feels great, and
you've learned a lot.
The other neat thing about designing a website is the minimal cost. You
can find a webhost who is Ruby-enabled and it probably wouldn't cost
more than $10-$20 a month, plus $10 for a domain name, and that's it!
You can make an interactive website on any topic you love, learn a lot
of Ruby in the process, and millions of web surfers in the US, Italy,
Russia, England, Argentina, etc. can see it. How cool is that?
Now, regarding #2, I agree that many tasks can be done by existing
tools if you search for them. For example, you could write a Ruby
script to find/replace in text files, or you could find a freeware
program like "fgrep" to do the same thing, so you probably feel like,
"why should I bother writing code when I have a tool that can do
this?". In my experience, there will eventually be some annoyance or
wrinkle even with the tools that requires weird maneuverings on your
part--like a tool that requires files to always be put in a certain
folder, or doesn't search subfolders, or must be secondarily processed
by a subsequent program after the first one. A good example is photo
resizing. My 6 megapixel digital camera takes large photos which must
be sized smaller to be emailable. Adobe Photoshop does do batch
resizing, but it costs $700. There are freeware programs like
ImageMagick to do this, but you need to memorize lots of confusing
command-line switches. There are freeware GUIs built on top of the
freeware resizer, but they're frequently as confusing as using the
command-line. I faced this dilemma and finally wrote a Ruby GUI on top
of ImageMagick that just includes the parts that I need, so it's simple
to use and customized to exactly what I want. 3 weeks from now, when I
want to do more image resizing, I don't need to relearn all the
command-line switches, I can just use my nifty little program.
Designing your own Ruby tool can be frustrating if you're starting from
knowing nothing, because there are so many "gotchas" to get past and
disparate things to learn; it's one of those situations where you
"don't know what you don't know," so you're not even sure where to
start. If this is the case, try looking for some text-based task that
you do repeatedly and is somewhat cumbersome. Do you ever have a list
of names that you need to sort and remove the duplicates from? Or do
you ever have 2 lists of names and you want to find out the
intersection of the lists (that is, which names are in common)? Or a
list of numbers formatted as 3101234567 and should be formatted as
310-123-4567? These are things that can certainly be done with
Microsoft Word or Excel, but they can require an awful lot of manual
steps like sorting, replacing, sorting again, etc. These are tasks that
are great for learning Ruby because Ruby's arrays are powerful and easy
to use (far easier than VB and other languages), and only require 3 or
4 lines of code to do useful things. It can take longer the first time
because you're learning how to write the code, but once you've written
the code it will save you time everytime after that.

Sy wrote:

Hey all. I wanted to dive into a topic that's been on my mind for
years. I've been interested in programming for a very long time and
yet somehow I've only ever dabbled.

* I've never been forced to learn anything through school (a

half-year

of turing and another half of ms access 1.0 does NOT count).

Frankly,

I do not respect school for learning real programming skills and

would

never pay someone money to teach me something I could learn by myself
for "free" (buying books, taking the time, searching for answers
myself).

* I've never used such skills at work (batch files don't count). I
don't think I'll ever do anything programming-related until _after_ I
learn the skills and choose to use it. Honestly, I have an
opportunity to sneak in Ruby in my (small) business.. if it does the
job. Ruby on OSX gives us extra motivation too.

* I've never had motivation to program as a hobby (batch files and
4dos scripting doesn't count, vague interest in c or asm/machine
language doesn't count). I have no problems which I see solved by
programming myself more than using someone else's tool. So instead

of

developing the programming skills, I have developed effective
researching and troubleshooting skills.

And yet where I see that my problems can be solved by other people's
tools.. I feel as though I could make better tools myself. I
especially want to be able to create scripts and software solutions
for some of my stranger issues. I already know that I can be

valuable

to the community being who I am and having the skills I do, but I
yearn to do more.. to solve problems MY way.

---

And so after a lot of thought I ended up looking seriously at Ruby.
Lots of time passed and I revisited the subject to learn that a
community had self-organized, that issues with documentation and such
were being solved, that entertaining tutorials were being written
(props to wtls on that one).

Fine. I like Ruby. I want to learn Ruby. How do I work on the
problem of motivation?

Hack a little every day? Read a little every day? What books, what
tutorials, what news channels? I am not overwhelmed by the amount of
choices.. but I am confused at what order to do things in and why.
The biggest challenge to a complete nubie is the number of tools Ruby
uses..

I had a hand in resurrecting my local RUG. We had our seventh

meeting

···

this month and every time feels like a real success. I did all this
knowing that I wasn't a "real programmer" and that.. I don't know
Ruby! I look back and wonder where all the time went.

I'm a smart guy, so I am making do.. I am learning what I can but I
don't feel _effective_ or _motivated_. I don't want my hand held, I
just need a guiding light.

Has anyone thought about founding a "Ruby nubie" mailing list or
creating nubie-sized short-tutorials, quizzes and challenges? I'd be
very interested in participating.

Sy wrote:

Hey all. I wanted to dive into a topic that's been on my mind for
years. I've been interested in programming for a very long time and
yet somehow I've only ever dabbled.

Hey Syeed-- Welcome to the fray! :wink:

<Snip!>

Fine. I like Ruby. I want to learn Ruby. How do I work on the
problem of motivation?

Hack a little every day? Read a little every day? What books, what
tutorials, what news channels? I am not overwhelmed by the amount of
choices.. but I am confused at what order to do things in and why. The biggest challenge to a complete nubie is the number of tools Ruby
uses..

Find a (small) project to do on your own and begin to write the code. Make it simple to start. I began by rewriting the coWiki text parser in ruby.

It's sort of like learning any language-- Put yourself in a position where you need it and you will learn it.

The people here are very good at answering reasonable questions. *I* haven't gotten flamed yet! :wink:

I started by using SciTE for it's ability to easily run the code I'm editing. But I think I'm going to spend some more effort on working doing the same with FreeRIDE, as it has more bells and whistles. :wink: jEdit is also a choice. I don't like how long it takes to start FreeRIDE and jEdit, SciTE is very quick and seems to understand about many languages-- It will run PHP scripts, if the computer is set up for it!

Paul

Sy wrote:

Hey all. I wanted to dive into a topic that's been on my mind for
years. I've been interested in programming for a very long time and
yet somehow I've only ever dabbled.

* I've never been forced to learn anything through school (a half-year
of turing and another half of ms access 1.0 does NOT count). Frankly,
I do not respect school for learning real programming skills and would
never pay someone money to teach me something I could learn by myself
for "free" (buying books, taking the time, searching for answers
myself).

* I've never used such skills at work (batch files don't count). I
don't think I'll ever do anything programming-related until _after_ I
learn the skills and choose to use it. Honestly, I have an
opportunity to sneak in Ruby in my (small) business.. if it does the
job. Ruby on OSX gives us extra motivation too.

* I've never had motivation to program as a hobby (batch files and
4dos scripting doesn't count, vague interest in c or asm/machine
language doesn't count). I have no problems which I see solved by
programming myself more than using someone else's tool. So instead of
developing the programming skills, I have developed effective
researching and troubleshooting skills.

And yet where I see that my problems can be solved by other people's
tools.. I feel as though I could make better tools myself. I
especially want to be able to create scripts and software solutions
for some of my stranger issues. I already know that I can be valuable
to the community being who I am and having the skills I do, but I
yearn to do more.. to solve problems MY way.

---

And so after a lot of thought I ended up looking seriously at Ruby. Lots of time passed and I revisited the subject to learn that a
community had self-organized, that issues with documentation and such
were being solved, that entertaining tutorials were being written
(props to wtls on that one).

Fine. I like Ruby. I want to learn Ruby. How do I work on the
problem of motivation?

Hack a little every day? Read a little every day? What books, what
tutorials, what news channels? I am not overwhelmed by the amount of
choices.. but I am confused at what order to do things in and why. The biggest challenge to a complete nubie is the number of tools Ruby
uses..

I had a hand in resurrecting my local RUG. We had our seventh meeting
this month and every time feels like a real success. I did all this
knowing that I wasn't a "real programmer" and that.. I don't know
Ruby! I look back and wonder where all the time went.

I'm a smart guy, so I am making do.. I am learning what I can but I
don't feel _effective_ or _motivated_. I don't want my hand held, I
just need a guiding light.

Has anyone thought about founding a "Ruby nubie" mailing list or
creating nubie-sized short-tutorials, quizzes and challenges? I'd be
very interested in participating.

Just my personal 2 cents:

As a non programmer I decided to learn Ruby and in the past a bit of c php and tried lots of langs. What has been the drive? I had a simple but repetitive task or a desire to organize stuff or wanted a simple-to-not-so-simple personalized app/script/utility.

Things are personal while learning on your own. Personally I like to learn just for the sake of it,but that's me, maybe applies to You maybe not. But one thing I can assure You; if You have a need an Ruby can solve it, the way to go is: coding, experimenting with code ,testing snips of code, but above all: coding!.

Find little needs that You have, even if silly(hey!! it has worked for me). i.e. "Damn I got this lot of files containing lyrics and I would like to ensure that the filename is *always* "Artist - The Name of the Song.lyr", well make a lil' util, done!, mmmh now I would like that those would get organized in a base directory c:\stuff\lyrics with subdirs a,b,c,d,e,f...z and have subdir a containing the lyrics of artists whose name start with 'a',done!...well what about having a local website! or those lyrics in a db or ...keep wishing, keep wanting , keep coding, remember to congratulate yourself everytime you succed, and try harder when not(but take a rest,get away to gain a better perspective, heck ask for help here).

*start small*, You'll get more and more ambitious about your "needs" and better at designing how the code would be.

*when feeling stuck* Every time You have doubts how to "do x" don't overthink,plan,etc. instead type code and experiment, todays lame experiments migth be tomorrows clever solutions.

*code and achieve* nothing motivates *me*(and maybe others) like getting something done, the feeling of "Damn I'm good" and "whoaa I solved it myself". Since You're solving small problems that *YOU* have, motivation shouldn't be a problem, keep getting ambitious and You'll keep on coding and (hopefully)getting better at it.

now back to porting that eruby app to Rails...(experimenting phase ;-))
Greetings
Adartse.

James Edward Gray II wrote:

Sy wrote:
> Fine. I like Ruby. I want to learn Ruby. How do I work on the
> problem of motivation?
...
> Hack a little every day? Read a little every day? What books, what
> tutorials, what news channels?

In my opinion, there is one true secret to learning to program. Ready?
Here comes all my ancient wisdom in one rule:

Write code.

I agree: write code

In the past to learn a new language or technology I've thought up a
personal project to work on, which gave me motivation to achieve a
certain goal.

Contributing to or starting your own open source / free software
project makes things more exciting as there is the potential others
might start using your code. This can be a great motivational aid -
careful though, it can become addictive!

Cheers,
Rob

"James Edward Gray II" <james@grayproductions.net> answered:

Fine. I like Ruby. I want to learn Ruby. How do I work on the
problem of motivation?

That's a pretty personal issue and I doubt I have any helpful advice.

When I was younger, ...

I wrote games. Blackjack is good, because you can fairly easily get a
computer dealer to challenge you at the game.

Hack a little every day? Read a little every day? What books, what
tutorials, what news channels?

Write code.

I agree.

For books, I recommend Why's (Poignant) Guide to Ruby, which is a hilarious
romp through the Ruby language.

Has anyone thought about founding a "Ruby nubie" mailing list or
creating nubie-sized short-tutorials, quizzes and challenges?

The Quiz provides a few ideas for places to start writing code, too.

Instead of games and other people's quiz suggestions, you could also rewrite
something you've already written (i.e. those batch files, or anything you've
done in C) or, perhaps even better, build something you need. If you can
identify a repetitive computer-based task you do a lot, if you can imagine
that some of the repetition could be relieved, figure out how. Ask this list
when you're stuck - we love to help with this kind of thing.

And here's something you might not hear too much around here: not everyone
is a programmer. Not everyone even ought to be a programmer. If there other
skills that are more important to you practically or however else, work on
those. Nevertheless, programming is a useful skill in a bunch of ways, and
is quite easy (IMHO) to learn to the stage where it becomes useful.

All the best,
Dave

···

On Apr 13, 2005, at 9:57 AM, Sy wrote:

James Edward Gray II wrote:

In my opinion, there is one true secret to learning to program. Ready? Here comes all my ancient wisdom in one rule:

Write code.

Let's not forget: Read good existing code.

Learning to write code is much like learning to write in "natural" languages. I'm not saying software is directly analagous to literature, but the learning processes are quite similar. You can't learn to write without writing, but you can't learn to write *well* without reading.

As for motivation, it will not come from outside your own head. If there is something you really want to accomplish that requires learning to program, then you will find the necessary motivation. Find a pragmatic goal, and the rest will follow.

···

--
Glenn Parker | glenn.parker-AT-comcast.net | <http://www.tetrafoil.com/&gt;

James Edward Gray II <james@grayproductions.net> writes:

In my opinion, there is one true secret to learning to program.
Ready? Here comes all my ancient wisdom in one rule:

Write code.

(When you get more experienced the rule changes to "Read code.", but
that's another topic...)

And when you're just before grandmastery, it is:

Write less code.

:slight_smile:

···

James Edward Gray II

--
Christian Neukirchen <chneukirchen@gmail.com> http://chneukirchen.org

I'm thinking along the lines of keeping a learning journal / snippets database.

···

On 4/13/05, Ara.T.Howard@noaa.gov <Ara.T.Howard@noaa.gov> wrote:

another peice of advice : share your work. it's suprising how motivating it
is knowing others will/might be reading/using your code and it also encourages
you to abstract your problem into a more general solution which, 98% of the
time, leads to a more elegant solution as well.

--

On 4/13/05, James Edward Gray II <james@grayproductions.net> wrote:

Yes, I read a lot of books and yes they really help. However, it's my
opinion that there is simply no substitute for quality time spent
talking to a compiler. For me, that's the key.

Ok.. so a little bit of coding every day.. finding little snippets to
learn and log.. keeping a bit of a database of my efforts so I don't
have to revisit the wheel. Sounds good.

(When you get more experienced the rule changes to "Read code.", but
that's another topic...)

That's still very necessary.. since people who are new and
enthusiastic will commonly turn to code examples for sections to
steal. Just take a look at everyone's experimentation with
mod_rewrite.. I know the first thing I did was borrow someone's
solution to jurryrig it to my own setup. It worked too.. but of
course the real learning has to begin when I break my setup and the
rewrite doesn't work.

So in the short run, ruby code is excellent to learn stuff from.. and
to borrow.. but as soon as my inventiveness kicks in and I shuffle a
design around it'll break all my borrowed code.. forcing me to learn
enough to rewrite those parts (and to learn proper coding practices,
troubleshooting skills.. and all that good stuff).

--

On 4/13/05, Rob . <rob.02004@gmail.com> wrote:

I agree: write code

Contributing to or starting your own open source / free software
project makes things more exciting as there is the potential others
might start using your code. This can be a great motivational aid -
careful though, it can become addictive!

Starting a project, especially an open project, is way away from my
current inspiration. I think maybe little embarrasing personal
projects which are coded in the open air would do pretty well. I
still have a kind of learning weblog thingy in mind.

--

On 4/13/05, Dave Burt <dave@burt.id.au> wrote:

For books, I recommend Why's (Poignant) Guide to Ruby, which is a hilarious
romp through the Ruby language.

I noted that. I read through some of it.. I understand some of it.
While it certainly cheers me up and gives a good introduction and
such.. It's not motivating in the least. It got very horrible very
fast and I've no intention to finish it until I can make better use of
the early chapters.

What I think I'm going to do is step back and begin to write my own
tiny tutorial as my learning tool. I'll grab some code snippets and
make them do stuff.. and write notes to myself as to how things work
and why. With this, I should be able to dump in various learning
examples and such. It should work out ok. I figure I can get away
with this functionality on my existing wiki.

Maybe (one day) my "big project" should be a simple ruby weblog? It's
a fairly straightforward concept.. but with lots of curious
intricacies that could keep me very occupied.

Instead of games and other people's quiz suggestions, you could also rewrite
something you've already written (i.e. those batch files, or anything you've
done in C) or, perhaps even better, build something you need. If you can
identify a repetitive computer-based task you do a lot, if you can imagine
that some of the repetition could be relieved, figure out how. Ask this list
when you're stuck - we love to help with this kind of thing.

I'm wondering if I can rewrite some of the crap I had tinkered with in
ruby. There isn't much point.. many of those tools are too specific
to DOS.. and I don't really use any of that anymore.

Maybe the most productive thing to think is that I would like to see
Ruby as my problem-solver for my not comprehending bash and most shell
tools.

Much of it would be reinventing the wheel. But in doing so I would be
learning ruby, solving my problems and .. well doing things in ruby
for others to maybe learn from too.

Some simple ideas:

* Search through directories, looking for file 'x'

* search through files in directories, looking through their contents for 'x'

* file split/merge

* simple backup solution

* disk / directory / file reporting -- which directories have the most
files.. which take the most space.. etc.

* Appointment book / calender

* clock / scheduler

Well.. I started a little project for this idea:

http://sysy.homeip.net/mw/index.php/The_Ruby_Nuby

···

On 4/13/05, Tanner Burson <tanner.burson@gmail.com> wrote:

Strangely enough, I often find that re-inventing the wheel is exactly
what helps me learn the most. I pick something I find at least useful
to me, then attempt to implement it myself, "fixing" anything I
disliked about the original. This method helps me have a clear "end
case" in mind, otherwise my projects tend to ramble on and never
really get finished.

That's exactly what I was thinking myself. There's always some piece
of me that thinks it's kindof dirty.. and possibly even insulting to
the original author. But what else can be done? I don't want to be
unhappy because of someone else's solution to a problem.

Maybe one day I can implement 4DOS scripting with Ruby.. but I'll
start with small problems and their simple tools.

--

On 4/13/05, Glenn Parker <glenn.parker@comcast.net> wrote:

Find a pragmatic goal, and the rest will follow.

Excellent point.

Write code.

(When you get more experienced the rule changes to "Read code.", but
that's another topic...)

And when you're just before grandmastery, it is:

Write less code.

To truly master the Zen of programming, you have to try to reach this goal:

Write no code.

There is no faster and more bugfree code than code that does not exist.

:slight_smile:

martinus

Strangely enough, I often find that re-inventing the wheel is exactly
what helps me learn the most. I pick something I find at least useful
to me, then attempt to implement it myself, "fixing" anything I
disliked about the original. This method helps me have a clear "end
case" in mind, otherwise my projects tend to ramble on and never
really get finished.

···

On 4/13/05, Sy <sy1235@gmail.com> wrote:

On 4/13/05, Ara.T.Howard@noaa.gov <Ara.T.Howard@noaa.gov> wrote:

> another peice of advice : share your work. it's suprising how motivating it
> is knowing others will/might be reading/using your code and it also encourages
> you to abstract your problem into a more general solution which, 98% of the
> time, leads to a more elegant solution as well.

I'm thinking along the lines of keeping a learning journal / snippets database.

--

On 4/13/05, James Edward Gray II <james@grayproductions.net> wrote:

> Yes, I read a lot of books and yes they really help. However, it's my
> opinion that there is simply no substitute for quality time spent
> talking to a compiler. For me, that's the key.

Ok.. so a little bit of coding every day.. finding little snippets to
learn and log.. keeping a bit of a database of my efforts so I don't
have to revisit the wheel. Sounds good.

> (When you get more experienced the rule changes to "Read code.", but
> that's another topic...)

That's still very necessary.. since people who are new and
enthusiastic will commonly turn to code examples for sections to
steal. Just take a look at everyone's experimentation with
mod_rewrite.. I know the first thing I did was borrow someone's
solution to jurryrig it to my own setup. It worked too.. but of
course the real learning has to begin when I break my setup and the
rewrite doesn't work.

So in the short run, ruby code is excellent to learn stuff from.. and
to borrow.. but as soon as my inventiveness kicks in and I shuffle a
design around it'll break all my borrowed code.. forcing me to learn
enough to rewrite those parts (and to learn proper coding practices,
troubleshooting skills.. and all that good stuff).

--

On 4/13/05, Rob . <rob.02004@gmail.com> wrote:

> I agree: write code

> Contributing to or starting your own open source / free software
> project makes things more exciting as there is the potential others
> might start using your code. This can be a great motivational aid -
> careful though, it can become addictive!

Starting a project, especially an open project, is way away from my
current inspiration. I think maybe little embarrasing personal
projects which are coded in the open air would do pretty well. I
still have a kind of learning weblog thingy in mind.

--

On 4/13/05, Dave Burt <dave@burt.id.au> wrote:

> For books, I recommend Why's (Poignant) Guide to Ruby, which is a hilarious
> romp through the Ruby language.

I noted that. I read through some of it.. I understand some of it.
While it certainly cheers me up and gives a good introduction and
such.. It's not motivating in the least. It got very horrible very
fast and I've no intention to finish it until I can make better use of
the early chapters.

What I think I'm going to do is step back and begin to write my own
tiny tutorial as my learning tool. I'll grab some code snippets and
make them do stuff.. and write notes to myself as to how things work
and why. With this, I should be able to dump in various learning
examples and such. It should work out ok. I figure I can get away
with this functionality on my existing wiki.

Maybe (one day) my "big project" should be a simple ruby weblog? It's
a fairly straightforward concept.. but with lots of curious
intricacies that could keep me very occupied.

> Instead of games and other people's quiz suggestions, you could also rewrite
> something you've already written (i.e. those batch files, or anything you've
> done in C) or, perhaps even better, build something you need. If you can
> identify a repetitive computer-based task you do a lot, if you can imagine
> that some of the repetition could be relieved, figure out how. Ask this list
> when you're stuck - we love to help with this kind of thing.

I'm wondering if I can rewrite some of the crap I had tinkered with in
ruby. There isn't much point.. many of those tools are too specific
to DOS.. and I don't really use any of that anymore.

Maybe the most productive thing to think is that I would like to see
Ruby as my problem-solver for my not comprehending bash and most shell
tools.

Much of it would be reinventing the wheel. But in doing so I would be
learning ruby, solving my problems and .. well doing things in ruby
for others to maybe learn from too.

Some simple ideas:

* Search through directories, looking for file 'x'

* search through files in directories, looking through their contents for 'x'

* file split/merge

* simple backup solution

* disk / directory / file reporting -- which directories have the most
files.. which take the most space.. etc.

* Appointment book / calender

* clock / scheduler

Sy wrote:

For books, I recommend Why's (Poignant) Guide to Ruby, which is a hilarious
romp through the Ruby language.
   
I noted that. I read through some of it.. I understand some of it. While it certainly cheers me up and gives a good introduction and
such.. It's not motivating in the least. It got very horrible very
fast and I've no intention to finish it until I can make better use of
the early chapters.

Can you spell out any of your criticisms further? I've never written a book before and I'm sort of guessing as to what really works. Genuinely, I thought of recommending the book here (except that it's incomplete) since the motivation provided by my book is in the narrative. The story motivates learning because our right brain and left brain both become engaged.

But I can't presume to know for sure. It's an experiment that I only hope will click.

_why

···

On 4/13/05, Dave Burt <dave@burt.id.au> wrote:

"Martin Ankerl" <martin.ankerl@gmail.com> schrieb im Newsbeitrag
news:425e8508$0$79460$14726298@news.sunsite.dk...

>>Write code.
>
>>(When you get more experienced the rule changes to "Read code.", but
>>that's another topic...)
>
> And when you're just before grandmastery, it is:
>
> Write less code.

To truly master the Zen of programming, you have to try to reach this

goal:

Write no code.

There is no faster and more bugfree code than code that does not exist.

Well, as nothing really exists anyway, I guess there is no problem with
writing code. :slight_smile:

"What is the sound of one function calling?"

    robert

Martin Ankerl <martin.ankerl@gmail.com> writes:

Write code.

(When you get more experienced the rule changes to "Read code.", but
that's another topic...)

And when you're just before grandmastery, it is:
Write less code.

To truly master the Zen of programming, you have to try to reach this goal:

Write no code.

There is no faster and more bugfree code than code that does not exist.

:slight_smile:

Yet another one of these MDA guys. :wink:

···

martinus

--
Christian Neukirchen <chneukirchen@gmail.com> http://chneukirchen.org

The tone of the writing somehow changes. It's very difficult to put a
finger on. Early on there is a kind of lighthearted exploration and
comedy, but later on it really does feel like you're reaching. The
volume of insanity increased for me as I progressed.

There was a signal:noise ratio which at the beginning meant that I
could be plesantly distracted by both relevant and irrelevant things
inbetween the fairly serious bits. This was extremely valuable to me
as the entire notion of sitting down and learning a programming
language is intimidating.

Basically, a regular person -- nomatter how enthusiastic -- has an
attention problem. Their head gets full. They run up against big
ideas they can't quite process. Some people are stubborn enough to
think to themselves that they'll digest the ideas later and so they
press on.. reading even more.

In the traditional environment, that's suicide.. a person isn't
building on a good foundation. That's like skipping out of math
class.. there are concepts a person would miss out on which are
assumed to be understood later. This is even more visible when
learning programming. So the idea of introducing intentional "noise"
with both relevant and irrelevant topics, side-notes, pictures, etc..
really helps force the most enthusiastic person to pause from their
thinking about the learning and gives them just enough time to have
that all trickle in.

Your notion about left/right brains is a good one.. I found myself
thinking one way and then I was thinking another way.. while the other
side of me healed from the brutality that is learning. :wink:

Now later on in the subject matter there is an increasing amount of
complexity. You began building on the earlier-laid foundation.

The unfortunate thing is that people like me figure we're smart and
can continue to follow along without doing much ruby hacking on our
own time. This is a serious overestimation of ability. I'm actually
a complete idiot and I should have repeatedly taken additional breaks
to think about things, experiment in my own time.. my brain needs time
for the swelling to come down. =)

Now I didn't read it all in one sitting.. I did take breaks.. and I
did experiment. But I didn't quite have the set of tools I should
have had to take full advantage of those breaks. This is the gap I'm
trying to fill in here.

Ok, the subject matter got more complex. This brings many problems.
However, the lunacy-level also increased somewhat exponentially. The
signal dropped from the complexity, and the noise was raised by the
irrelevance of the distraction. I suppose my issue is that the
"quality of noise" was reduced.. it was not topical enough.

My basic problem with the complexity later on stems from my not
building a good foundation earlier on.

Frankly, that narration of yours is why I got into Ruby. Thanks.

···

On 4/13/05, why the lucky stiff <ruby-talk@whytheluckystiff.net> wrote:

Sy wrote:
>I noted that. I read through some of it.. I understand some of it.
>While it certainly cheers me up and gives a good introduction and
>such.. It's not motivating in the least. It got very horrible very
>fast and I've no intention to finish it until I can make better use of
>the early chapters.
>
Can you spell out any of your criticisms further? I've never written a
book before and I'm sort of guessing as to what really works.
Genuinely, I thought of recommending the book here (except that it's
incomplete) since the motivation provided by my book is in the
narrative. The story motivates learning because our right brain and
left brain both become engaged.

But I can't presume to know for sure. It's an experiment that I only
hope will click.

Just to follow up on this topic, I've finally begun my quest into
Ruby[1]. Instead of doing things the way I've always thought of
learning.. I decided to have my learning experience be the original
hobbyest approach.

You all remember when you were young and in love with some hobby or
other.. and you just hacked around with it and picked things up. This
learning process is "no big deal" and wasn't about "learning a skill
in 30 days" or "adopting a new skillset" or "adapting your portable
skills" or whatever other bs buzzphrase you want. It was about trying
something new and having a lot of fun.

Well I haven't lost that child-like mindset, so I spent some time
redefining my core motivations to just hack around at Ruby and learn
as I go. No hands on the handlebars for this one.

It all began with my rewriting a simple application launcher[2]. It
accepts an input and launches a command:

I recently adapted it so it'll work on Windows. I also looked at
wrapping it up into a standalone executable with tar2rubyscript[3] and
rubyscript2exe[4].

I'm focusing my learning so that in the next few weeks I can get a
basic installer[5] put together that will replace a simple batch file.
I hope to end up converting in into a GUI installer thingy using
WxRuby[6] (recommended by Erik Veenstra of tar2rubyscript fame). I
am hesitant to use it, but RubyWebDialogs[7] was also recommended
(well.. Erik did make it).

The important thing about all of that is that it's for work. Yes, I
have an opportunity to wriggle some Ruby scripting in work. I made a
couple of "bonus disks" for our main product, which stealthily inserts
additional content that the main developer is too lazy (!) to do
himself.. and the idea has been a huge hit and is one of the driving
forces of our success.

I wrote a batch file which has grown increasingly more complex. All
it really has to do is copy a tree of files into a specific directory
and delete a few files. I'd like to expand it to allow a
user-selected or automatically-detected directory. The big push is
that soon this'll need to work on a mac. So.. although there are
probably excellent products out there which do what I need, I figure
this is simple enough that I could write an installer in Ruby!

So I think I've met my learning goals with this..

* it's a real-world thing
* it's something I'm genuinely interested in
* it's easily defined and also has existing products for me to help
define what it should do and how it should look
* it starts both small and simple and can become complex as my
abilities improve.

I'm into my second week, and my enthusiasm hasn't wavered.. so I think
that I'll do well in the long term.

[1] http://sysy.homeip.net/mw/index.php/The_Ruby_Nuby
[2] http://sysy.homeip.net/mw/index.php/TRN_-Launcher
[3] http://www.erikveen.dds.nl/tar2rubyscript/index.html
[4] http://www.erikveen.dds.nl/rubyscript2exe/index.html
[5] http://sysy.homeip.net/mw/index.php/TRN
-_Installer
[6] http://trug.stok.co.uk/wiki/index.php?title=WxRuby
[7] http://trug.stok.co.uk/wiki/index.php?title=RubyWebDialogs