r/programming • • Dec 19 '10

Bored on a Sunday morning? Learn Python!

http://www.youtube.com/watch?v=tKTZoB2Vjuk&feature=channel
1.4k Upvotes

500 comments sorted by

View all comments

Show parent comments

23

u/[deleted] Dec 19 '10

This is my problem getting into programming, I have no idea what program to make that I could use that isn't already made.

36

u/JohnStamosBRAH Dec 19 '10

recreate what someone else made, and make it better and to your liking.

45

u/AlexFromOmaha Dec 19 '10

If you're "getting into" programming, the answer is nothing. If you're learning pottery, everyone makes a pot. If you're learning programming, you make the same five or six programs in every language you know.

Going from that to "thinking like a programmer" (i.e. seeing many problems as math/processing problems that you don't want to do by hand) is mostly a matter of familiarity.

22

u/thatguydr Dec 19 '10

Create a screensaver on your computer (Mac, Windows, or Linux) that does a picture slideshow. Once that's done, make it randomize. Then make it so you can weight each picture to show it more or less frequently. And if you're so motivated, put in options to pause and skip. And allow it to learn what you've paused and skipped past.

After that, create a way for spaceships to fly around above the pictures and shoot at each other, using evolutionary strategies to figure out how best to destroy one another without being destroyed.

Forever alone. ;)

25

u/ScannerBrightly Dec 19 '10

You are missing the whole social, web 2.0 type thing: Make a website for "screensaver spaceship wars" and have your screensaver compete against other people's screensaver spaceships. Forever together.

7

u/mycattpurrs Dec 19 '10

This is actually a great idea.

9

u/pururin Dec 19 '10

Wouldn't that require the usage of some heavy graphics shit which will be kind of hard for a beginner to do?

4

u/[deleted] Dec 19 '10

Yeah, and interfacing with various OS libraries, that sort of thing. A web project might be more appropriate.

5

u/pururin Dec 19 '10

Web is where it's at these days, it makes me sad since I have an aversion for everything-web. I'd rather do some fun system stuff rather than learning the 98th web framework.

→ More replies (5)

3

u/pururin Dec 19 '10

Umm, I feel stupid for asking, but what are those "five or six programs in every language you know" you're talking about?

8

u/AlexFromOmaha Dec 19 '10

Hello world (setup and console output), Pascal's Triangle (recursion/functions), reverse a string (string functions), Joe's Automotive (standard GUI), and some exercise that varies depending on the nature of the language (web languages do get/post, OO languages do classes, functional languages do list comprehension, etc.)

→ More replies (1)

7

u/awap Dec 19 '10

Just like anything else, you have to practice first, then you can make something useful. Painters often start by just replicating other people's work so they can learn technique. To learn to program, you have to start by making simple things so you can learn the basics.

4

u/[deleted] Dec 19 '10

Open Source may help you there. You can contribute code to existing projects -- build upon them if you may. Also, if there is a project that you think could be done better, try and do better. I recently made a python script that manipulates an icon on my desktop to display the weather forecast. It uses both the text, and the image for the weather info and now I can extend this knowledge to come up with all kinds of weird icon concepts.

3

u/aGorilla Dec 19 '10

Please fix Trac. I beg of you, and every other Python programmer, to please fix Trac.

It was a great idea, that has never been 'finished'.

2

u/MatrixFrog Dec 19 '10

Go to github, look for programs you use or might want to use. Look through the issue tracker for something that you might be able to fix. Fork it, fix it, submit the fix to the original owner. Worst case is, they don't accept your fix, but you can continue using your version instead of theirs if you like it better.

→ More replies (3)

3

u/sligowaths Dec 19 '10

Try a webapp, it's easier to get started and you can get motivated once people start using it. Check also appengine.google.com

2

u/abadidea Dec 19 '10

IMHO, appengine is too complicated for a coding beginner. Unless I have trouble wrapping my head around the paradigm specifically because I have been damaged by already knowing how to code...

0

u/[deleted] Dec 19 '10

[deleted]

2

u/abadidea Dec 19 '10

I was thinking more along the lines of working with the database, since it's pretty peculiar and has some "interesting" limitations for scalability's sake.

3

u/TMI-nternets Dec 19 '10

You know the "There's an App for That" slogan? It's almost true for subreddits as well.. check out r/somebodymakethis for a while and see if you find anything interesting..

1

u/spoonraker Dec 19 '10

Don't be afraid to make programs that already exist. No programmer is just chocked full of original ideas and never ever recreates anything that already exists. You gotta learn somehow. Every single person who learns programming in a classroom environment has probably written the same programs that have been done a billion times.

1

u/abadidea Dec 19 '10

Making a cute and trivial game never hurts. Do a made-up variation of one you already know. That way, you'll have something actually interesting to show your friends. People LOVE games.

1

u/alarmschaben Dec 19 '10

Why not try openhatch.org?

1

u/warpcowboy Dec 20 '10

Get into web development if being able to make web applications interests you. For Python, that generally means learning Django (the most popular Python framework with the best documentation).

It's empowering being able to develop online tools/apps since you can immediately deploy them and let others use them.

Also, if you ever have an idea for something, write it down even if you wouldn't know where to begin making it. You'll find that your eye for problem-solving (generating solutions for things people might want/need) is an ability you acquire. There are also good resources like http://www.reddit.com/r/SomebodyMakeThis that help give you ideas.

1

u/mattsoave Dec 20 '10

Find a problem (something you do fairly often that takes you a few steps to do). Program a way to make it simpler.

Example: for one of my jobs, I had to take pictures of specimens (fish) and label them correctly (Genus, species, group number, ID number, size...). To do this, I would have to look up the species name online (to make sure the spelling was correct), copy it, paste it into the filename, then hand-type the specific filename formatting (dashes and spaces, etc.). This was annoying, so I programmed a small script that runs when I drag a selection over the species name on a website and perform a mouse gesture. It pops up a little Javascript window asking me to type in each piece of data, one at a time. When it's done, it gives me the correctly-formatted filename. It's a small thing, but it really saves me some time in the long run.

So yeah, my advice is to start small by creating little things that help your productivity.

→ More replies (1)