Slashdot Mirror


Short Coding Projects?

sapped asks: "Whenever somebody advocates a new programming language for you to try, they will usually suggest writing something in it that will take you an hour or two to code, so that you can get a feel for it. My problem is that I tend to go from extremely trivial ideas straight to stuff which will keep me busy, for at least a few days. I don't seem to have a handy in-between size project that I can test stuff in. The closest I came to this was writing a little ad-blocking proxy for my browser, a few years back. Any ideas on neat small non-trivial projects?"

122 comments

  1. Pfff lots of things by arcanumas · · Score: 4, Funny

    There are lots of things you can write in two hours man!!
    voice recognition software, compilers, parser generators , browsers , OS kernels etc etc.
    Come on, be creative... :)

    --
    Slashdot Sig. version 0.1alpha. Use at your own risk.
    1. Re:Pfff lots of things by lostchicken · · Score: 3, Interesting

      I know you were kidding, but a parser generator really can be written in a couple of hours with a logical programming language like Prolog.

      --
      -twb
    2. Re:Pfff lots of things by Anonymous Coward · · Score: 0

      And a Web browser takes about half a page worth of calls to wininet.dll.

    3. Re:Pfff lots of things by Anonymous Coward · · Score: 0

      or it's close cousin Erlang

    4. Re:Pfff lots of things by Anonymous Coward · · Score: 0

      Okay, then let's say lisp. You can code up the prolog implementation (probably only interpreted unless you're real good or have read PAIP) and the parser in a couple of hours.

    5. Re:Pfff lots of things by bhtooefr · · Score: 2, Insightful

      What language? I can get you a web browser using MSHTML.DLL or Gecko in five minutes in VB (implementation is the same, as someone made mods to Gecko so that it worked as an ActiveX control, and IDENTICALLY to MS's HTML control).

    6. Re:Pfff lots of things by flonker · · Score: 2, Interesting

      Which brings up the point, can IE be changed to use Gecko as the rendering engine?

    7. Re:Pfff lots of things by bhtooefr · · Score: 1

      Not without the source code to the IE shell. My guess is that IE 6 is written in Visual C++ 6.0, which will help if one wishes to decompile it. However, any vulnerability in the shell that is not connected to the rendering engine (*cough*most of the URL spoofing bugs*cough*) would also be in this mod (unless they were also fixed), and any IE patches will most likely damage your new executable beyond repair.

      Now, if an IE-based shell (Avant, MyIE2 (I know that's not its name now, it's something else, I forget what)) is open source (*cough*FeedReader*cough*), it's trivial to make it Gecko-based.

    8. Re:Pfff lots of things by bhtooefr · · Score: 2, Interesting

      Also, I don't think you want to change IE, because Windows Update doesn't work with Gecko.

      However, I think I DID find a way to get Gecko working in IE. Make it a Gecko plugin that associates itself with everything that IE does itself, without handing off to a plugin. I don't know if that will actually WORK, but it's worth a shot.

    9. Re:Pfff lots of things by Pseudonym · · Score: 1

      Not quite. To implement a parser generator as quickly as possible, the backtracking features of Prolog are going to be crucial.

      In Erlang, it's going to take a little bit longer to write. On the other hand, unlike the Prolog version, it will probably work.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    10. Re:Pfff lots of things by Oscar_Wilde · · Score: 1

      And a Web browser takes about half a page worth of calls to wininet.dll.

      Or no code at all if you're a Cocoa programmer.

    11. Re:Pfff lots of things by Short+Circuit · · Score: 1

      Can Gecko be embeded in a compatible mshtml.dll replacement?

      Note that it'll break things like Windows Update.

    12. Re:Pfff lots of things by relaxrelax · · Score: 1


      Compilers and parsers have actually been written in 2 hours... ...for the Obfuscated C contest. So while they can be written in 2 hours and they work, you can't READ them in a million years.

      --
      Microsoft is pure dog-ma. FreeBSD is pure cat-ma.
  2. a little easy but... by coolhoot2447 · · Score: 4, Interesting

    I usually start of with implementing some simple math related things. For example, a prime number generator or a program to calculate pi. The algorithms that you can use to write such a program tend to be heavily documented so you don't have to worry about the design and can concentrate on the implementation in that specific language.

    1. Re:a little easy but... by ddewey · · Score: 2, Interesting

      Or how about graphing fractals? My personal favorite is the Mandelbrot Set.

    2. Re:a little easy but... by saden1 · · Score: 4, Informative

      you can always got to Topcoder and check out some the problems they have over there. They have all sorts of coding problems with varying difficulties.

      --

      -----
      One is born into aristocracy, but mediocrity can only be achieved through hard work.
    3. Re:a little easy but... by cperciva · · Score: 2, Interesting

      ...or a program to calculate pi.

      Funny you should mention that. The first code I ever wrote in C was PiHex (a distributed project computing project, back in the days before those became cool, which computed the 5 trillionth, 40 trillionth, and quadrillionth bits of Pi. All of them were zero.)

    4. Re:a little easy but... by zuzulo · · Score: 2, Informative

      Some of the older languages have what they used to call 'finger exercises' or 'idiom lists' which are basically a long lists of small algorithms you can implement to get a very deep feel for a new language. I know idiom lists exist for APL, k, perl, and similar things likely exist for whichever language you are interested in learning.

      It might be helpful if you were to mention which particular language you were currently trying to master, however. ;-)

      --
      "They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety."
    5. Re:a little easy but... by gnu-user · · Score: 2, Interesting

      Do you have pointers such lists?

    6. Re:a little easy but... by zuzulo · · Score: 1

      Ok, a few pointers - unfortunately the ones I am familiar with offhand are fairly academic languages. And now that I look for them, it appears that other languages do not provide the same sort of lists of 'training problems'.

      Therefore, a great way to learn a language that would also help others would be to take the k language idiom list and build a similar one implementing the problems in whatever language you are trying to learn. Maybe even post the resulting idiom lists for various languages on sourceforge... Heck, if someone starts a project, I might even contribute solutions for a couple of languages. ;-)

      APL idiom library link

      K language idiom list in MS word format

      --
      "They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety."
    7. Re:a little easy but... by nocomment · · Score: 1

      I usually start off by writing mad lib programs. Take input, print output.

      --
      /* oops I accidentally made a comment, sorry */
      /* http://allyourbasearebelongto.us */
    8. Re:a little easy but... by slapout · · Score: 1

      "you can always got to Topcoder "

      i thought _goto_ "is considered harmful" :-)

      --
      Coder's Stone: The programming language quick ref for iPad
  3. what about a Trivial Pursuit ? by da5idnetlimit.com · · Score: 1

    ah, no trivial ?

    sorry ...

    --
    It takes 40+ muscles to frown, but only four to extend your arm and bitchslap the motherfucker
  4. school/college programs by selfsealingstembolt · · Score: 5, Insightful

    Try to get your hands on some programming exams. The programs there are usually designed and written within one or two hours (to fit into a typical lesson). Also they touch all subjects that are of interest in your case, for example the 8-queen-problem for recursion, simple algebra (prime numbers) for number handling, pointers, etc without going to deep into details not necessary if you are not writing productive software.

    --
    Keep open minded - but not that open your brain falls out...
    1. Re:school/college programs by ottothecow · · Score: 1
      Definately a good suggestion.

      I remember my VB class and the lessons were mostly "type exactly what is shown in the book and press run" but the tests were writing programs that had enough functionality to write and test and be sure that everything worked right but were designed to be done in a shorter period of time.

      Consequently, they were not useful at all...what good is a homemade text editor that consists of a toolbar for save/open/new/font and the standard VB text box.

      --
      Bottles.
  5. open ended by MikeRepass · · Score: 2, Informative

    My suggestion is not to focus on a particular problem -> solution, but to think more open-ended. In essence, think of some general functionality that can be continually extended. Maybe an example will help clarify :)

    When I taught myself python, I first wrote a program that determined the word-wrap properties of a text file. It detected wrapping behavior across lines, and then constructed a range of possible wrap settings. I then added tabwidth detection. After this, I began to think about interpreting text structure from a document. So, if a block of lines exhibit wrap behavior, they're a paragraph, otherwise perhaps a section of code or a title. Then, I wrote a parser that accepted call backs, so, for example, it could (very roughly) convert etexts into html. Of course, this all took place over a week or so, and my knowledge of python evolved accordingly.

    So, my suggestion is don't think "final product," but rather work on a general library of functionality that you can extend as you go.

  6. Rock Paper Scissors by xanderwilson · · Score: 3, Insightful

    Or War (the card game), or a slightly more complex turn-based card game.

    Or, if you're terrible at programming or the programming language or compiler sucks, "Hello World!" might take a few hours.

    Alex.

    1. Re:Rock Paper Scissors by BlueCodeWarrior · · Score: 2, Insightful

      Games are good. I usually code up a short (9 or 10 room) text adventure...nothing overly complicated, but something that usually can use objects, pointers, functions, i/o...test out a bunch of different features.

  7. RPN Calculator by readams · · Score: 5, Insightful

    A friend of mine suggested a reverse-polish notation caclulator. It's a pretty good project since you'll have a chance to use a common data structure (stack) along with all the basic features of the language.

    1. Re:RPN Calculator by Anonymous Coward · · Score: 0

      Or you could use recursion and not implement the stack structure yourself...

    2. Re:RPN Calculator by Anonymous Coward · · Score: 0

      Or you could use whatever stack datastructure the language/libraries provides (if any, most do) and not implement the stack structure yourself...

    3. Re:RPN Calculator by Anonymous Coward · · Score: 0

      All the basic features? You don't get out much, do you?

  8. What I do... by NetNifty · · Score: 5, Interesting

    What I do first of all after the basic "hello world" examples and stuff when learning a new language is a simple "guess the number" game - computer randomly generates number between 1 and 100.

    User then guesses, and computer replies if the guess is higher or lower until number is guessed. Teaches use of loops, random number generation, text input & output etc. Can also go on to store lowest number of guesses in "high score" table etc, or use TCP to make it playable over telnet, if you so wish.

    1. Re:What I do... by Quill_28 · · Score: 1

      Funny you say that I did the same thing when learning perl.

      Keeping just one high score, my nephew and niece played it for at least 2 hours.
      I couldn't believe it.

  9. My issue by robotoil · · Score: 2, Funny

    My issue is not that I can't think of anything to write, but that I have writers block.

  10. Tic Tac Toe... by OneDeeTenTee · · Score: 1

    Or any other simple game.

    Nim would work nicely also.

    Once the basic two human player version is done you can have them add a simple ruleset to let the computer play the game.

    --
    Stop the world; I need to get off.
    1. Re:Tic Tac Toe... by CuteAlien · · Score: 1

      That's exactly what i do usually. Small games, Tic Tac Toe has even been one of them. Other games i did where Space Invaders (with circles attacking-didn't do sprites), Backgammon, a worm game, a wizard of war clone (that one took me longer than expected), mastermind (that was too short). Programming small games is great for learning something new, as you can usually put in the things you like to learn. You can use Graphics, Sound, Menüs, Fileoperations, Inputdevices, Parsers and so on.

    2. Re:Tic Tac Toe... by sapped · · Score: 1

      Funny you should mention that as I just did a tic-tac-toe version. I didn't teach it how to play - just the basic rules. I then saved each game to disk and allowed the program to learn how to play from this history. After about 60 games it started playing "properly" and after about 90 games I could no longer beat it.

    3. Re:Tic Tac Toe... by OneDeeTenTee · · Score: 2, Funny

      Cool.

      I did a self learning tic-tac-toe game once, using Martin Gardner's matchbox learning algorithm.

      It learned so well that it started to cheat.

      --
      Stop the world; I need to get off.
  11. An implementation of CipherSaber by Julian+Morrison · · Score: 1

    Because it's fun, and the knowledge might save your ass some time in the dystopian future.

  12. Couple I've done by jbester1 · · Score: 5, Interesting

    Something simple like a basic Webserver (GET/PUT/HEAD) or a FTP server.

    You get:

    a) simple string parsing/processing/manipulation
    b) File I/O and filesystem manipulation
    c) Network I/O

    Optionally or language dependent:

    d) Threading
    e) Packaging

    If a dynamic language (e.g. lisp):

    f) Write something like JSP on top of it: dynamic dispatch to handling method/function

    Optimizations are easy as well. Caching will give you a good overview of data structure speed.

    1. Re:Couple I've done by innosent · · Score: 1

      I was going to say the same thing. A basic multithreaded HTTP server is perfect for learning a new language. Of course, if you're trying to learn a functional language, this will be either impossible or at best a real pain, so don't. I haven't seen a web server written in Lisp yet, but I don't think I would want to even if it could be done.

      --
      --That's the point of being root, you can do anything you want, even if it's stupid.
    2. Re:Couple I've done by Anonymous Coward · · Score: 2, Funny

      Lisp is a multiparadigm language, not a pure functional one. Mature web servers written in lisp have existed for years, and are typically not written in a functional style. AllegroServe and Araneida are probably the big two (they have different focuses, think apache vs. zope). http://www.cliki.net/Web

  13. how about... by Anonymous Coward · · Score: 5, Funny

    A random idea generator?

    1. Re:how about... by socsuj · · Score: 1

      Or an electronic "Jump to Conclusions map"

  14. A couple of days by MerlynEmrys67 · · Score: 1

    I'd still consider that a trivial problem. Things don't start getting interesting until you are dealing with Staff Years to develop them. Anything under that and you can actually keep the full design in your head

    --
    I have mod points and I am not afraid to use them
  15. Lots of stuff by comwiz56 · · Score: 1

    Card games, some sort of parser, math tools, maybe a text-based web browser. Think back to some of your CS 101 days.

    1. Re:Lots of stuff by ImTheDarkcyde · · Score: 1

      oh man, i dont know where to start. Computer science, i took CS1 last year, the first year of Java for my teacher. Thus, we were learning it with him, at a slightly faster rate (he'd assign stuff he didnt know how to do, forcing us to buy books and google) Anyway, here I am now in CS2-AP, and we still dont know jack. This year (11 weeks or so in) we've only programmed 1)Dots and Boxes 2)EtchaSketch and 3)some crappy file reader. We could do Tic-Tac-Toe, but it would take alot longer than 2 hours

  16. Benefit the world: A program to show data splits. by Futurepower(R) · · Score: 4, Interesting


    Here's a simple program that would benefit the whole world:

    Make a program that shows what parts of a huge folder fit on individual CDs or DVDs. The output of the program would say, for example, that all the files from sub-folders A to Information would fit on the first CD, and all the files from sub-folders Installers to Netgear would fit on the second CD, and so on.

    It is necessary to store backup sub-folders in alphabetical order on the backup CDs or DVDs because then they can be found easily.

    Right now there is no good way to decide how to apportion the data. Breaking any file into two pieces just causes problems later, so the Easy CD Creator method does not work well.

    Later, it would be excellent if the program made .ISO files, of course, and even more excellent if the program asked the user to insert a CD or DVD, and burned the media.

    --
    100 Facts and 1 Opinion -- The Non-Arguable Case Against the Bush Administration

  17. Short coding project? by Andreas(R) · · Score: 3, Funny

    How about solving NP-problems in polynomial time? That should keep you busy for a few hours.

    1. Re:Short coding project? by Olathe · · Score: 1

      NP problems are solvable in polynomial time.

      NP encyclopedia entry.

    2. Re:Short coding project? by damiam · · Score: 3, Informative

      Some NP problems are solvable in polynomial time. NP-complete problems, which the parent was probably referring to, are currently not.

      --
      It's hard to be religious when certain people are never incinerated by bolts of lightning.
    3. Re:Short coding project? by Anonymous Coward · · Score: 1, Informative

      They're solvable in polynomial time with a
      NONDETERMINISTIC TURING MACHINE. Creating one of
      those would be a nice project.

    4. Re:Short coding project? by Anonymous Coward · · Score: 2, Funny

      Or coding an algorithm for generating Slashdot humor. Actually, that might be trivial.

      1. If the question is for something that is easy, suggest something that is hard.
      2. ???
      3. Laugh!

      Yeah, real funny. Sheesh.

    5. Re:Short coding project? by Spy+Hunter · · Score: 2, Informative
      No, you're confused and still thinking of NP-complete problems. NP problems and NP-complete problems are quite different.

      NP: problems whose solutions can be VERIFIED to be correct in polynomial time (as opposed to exponential time or some even faster-growing function of time). NP includes all trivial problems which can be solved in constant or linear time, since constants and linear functions are low-order polynomials. No non-deterministic turing machine is required to solve those.

      P: problems whose solutions can be FOUND in polynomial time. P is a subset of NP, and also includes all trivial constant- and linear-time problems.

      NP-complete: problems in NP which are reducible in polynomial time to any other problem in NP. This means that if you find a polynomial time solution to one NP-complete problem, you can solve any other problem in NP by the following process: translate the hard problem to the solvable one (in polynomial time), solve it (in polynomial time), and translate the answer back to the hard problem (in polynomial time), resulting in 3*polynomial time to solve the hard problem, which is still polynomial time. All those trivial problems in P and NP aren't included in NP-complete, since you can't reduce every hard problem in NP to those trivial problems (or at least, nobody has proven that you can; nobody's proven that you can't either, which is the whole problem).

      --
      main(c,r){for(r=32;r;) printf(++c>31?c=!r--,"\n":c<r?" ":~c&r?" `":" #");}
    6. Re:Short coding project? by rp · · Score: 1

      Thanks for explaining damiam's meaning.

  18. IRC bot by Tobias+Luetke · · Score: 4, Insightful

    I implement a simple irc bot in whatever language i test. Usually takes few hours and you can write it as top down script or as oop monster, up to you.

    The good thing is that you can use this irc bot to test just about every aspect of the language later on. Its not a project which is just done and discarded. Possible enhancements are user recognition or even something fancy like cvs commit reporting.

    For example when i decided to play with sqlite took the ruby version of the bot and added a funny quotes database.

    1. Re:IRC bot by pherris · · Score: 1
      Like this:
      <Zybl0re> get up
      <Zybl0re> get on up
      <Zybl0re> get up
      <Zybl0re> get on up
      <phxl|paper> and DANCE
      * nmp3bot dances :D-<
      * nmp3bot dances :D|-<
      * nmp3bot dances :D/-<
      <[SA]HatfulOfHollow> i'm going to become rich and famous after i invent a device that allows you to stab people in the face over the internet
      --
      "And a voice was screaming: 'Holy Jesus! What are these goddamn animals?'" - HST
  19. Gravity by Mawbid · · Score: 3, Interesting

    I've written variations of this in a few languages. This small example exercises classes and operator overloading, collections and iteration, math, graphics, modularization, so it gives a pretty comprehensive view of what the programming system is like in real use. But the real reason I like it is because the output is mesmerizing.

    --
    Fuck the system? Nah, you might catch something.
    1. Re:Gravity by LostFish · · Score: 1

      How did you implement this? I'd like to try to do this.

  20. Mastermind by Cliff_F · · Score: 1

    The game Mastermind. The computer chooses a random string (generally of colors or numbers), the user then inputs a guess. As feedback, you get a number of black pegs (one token in the right position) and a number of white pegs (one token in the wrong position). The user's guess history should be displayed, and they should try and solve it in a given max number of guesses.

    Gets some simple algorithms, simple data structures to store things in, and a UI of your choosing (can be text only, or graphical)

  21. Programming challenges by ReKleSS · · Score: 4, Interesting

    My preference is the OSIX GEEK challenges, but anything with decent complexity will do fine. Solve the challenge first in a language you know, then reimplement in the new language. Just note that the first few geek challenges don't require much/any programming skill, and the first one could take a while. Take a look at Hackergames for more sites with the same type of challenges.
    -ReK

    --
    md5sum -c reality.md5
    reality: FAILED
    md5sum: WARNING: 1 of 1 computed checksum did NOT match
    1. Re:Programming challenges by gauchopuro · · Score: 2, Informative

      How about the ICFP contests, which have been featured on Slashdot many times? Entries are usually made for just about every language out there, so there is a good chance that someone else may have already used your language to implement a solution. After working out your own solution, looking at others' solutions could teach you even more about the language.

  22. Scratch That Itch by WhyCause · · Score: 1

    When I wanted to see what Java was all about, I wrote a little ROT13 converter. It was straightforward (simple algorithm), but somewhat useful in that I did not have a converter on my Windows machine at the time. As a bonus, I think I was trying to convert someone's sig on /.

    The nice thing about something like this is that you can extend the project as you learn more aspects of the language. For example, your first try might open an input file and dump the results, with the next version adding code for the program to print the results in a window.

    My little Java converter eventually had two text boxes where I could copy/paste input and output, buttons to start the conversion, an icon in the jar file so it would look like a Windows program in the task bar, and other little things that I wanted to know how to do. A lot of what I did was relatively trivial, but when trying to learn a new language, it helps if you learn what you want to learn.

    1. Re:Scratch That Itch by Anonymous Coward · · Score: 0

      A ROT13 convertor is something I'm always wanting (I frequent spoiler-heavy newsgroups), but somehow I never get round to writing one... maybe I'm oldfashioned, but "echo (whatever) | tr A-Za-z N-ZA-Mn-za-m" has always seemed a good enough interface...

    2. Re:Scratch That Itch by Rysc · · Score: 1

      echo whatever | caesar 13

      It's faster to type. Or do you not have BSDGames?

      --
      I want my Cowboyneal
    3. Re:Scratch That Itch by WhyCause · · Score: 1

      I think you missed the part where I said I was running Windows.

      Plus, I wanted to learn some Java.

    4. Re:Scratch That Itch by Rysc · · Score: 1

      Never heard of it. Is it a new shell?

      --
      I want my Cowboyneal
  23. Re:Benefit the world: A program to show data split by Anonymous Coward · · Score: 0

    did that already. My version splits your directory of stuff to be burned into seperate DVD sized pieces, ready for burning. I plan on adding automatic SFV generation and some other stuff, and making it possible for other people to use it

    http://blackice.whitetrash.cx/ProjectMayhem

    of course, my goals are quite a bit more lofty then what I have now, but it will split files in a few different ways. I use it for all my archiving.

    Another issue is that noone besides me can use this project - no documentation etc. But it will get there eventually.

    Not that this helps the original poster, as he's looking for a project and not a solution - but I thought you might be interested.

    Oh, btw, it's entirely perl based so it will probably behave friendlier on a unix-ish system. Note that this is due to my laziness, and not Perl's fault.

  24. Ruby or Perl quizzes by Anonymous Coward · · Score: 0

    Check out these sites:

    http://perl.plover.com/qotw/
    http://www.graypro ductions.net/ruby_quiz/

    They are for Perl and Ruby, but you can use any language of course. Just read the description and see if it's an interesting challange. Code it up and then go back through the mailing list archives to see what other people said about it.

    If you are actually learning Perl (boo) or Ruby (yay) it's more fun of course. But it can still help you learn any language, because you have to go look up how to do stuff, etc.

    It's not exactly the same as writing an ad-blocker or an http server or whatever, but if you like puzzles you'd probably like playing around with them.

    And if you're the creative type you can then extend your program with opengl graphics, SOAP service, whatever, just have some fun.

  25. Depends on your programming language by Nice2Cats · · Score: 3, Informative
    I think you need to be a bit more specific about which programming language you are talking about. In Python, a program that lets you write an email with your favorite editor and send it via SMTP is something you can do a few hours; however, in assembler, some of the most easy problems quickly get tricky:

    .file "helloworld.c"
    .section .rodata.str1.1,"aMS",@progbits,1
    .LC0:
    .string "Hello World"
    .text
    .p2align 4,,15
    .globl main
    .type main, @function
    main:
    pushl %ebp
    movl %esp, %ebp
    subl $8, %esp
    andl $-16, %esp
    movl $.LC0, (%esp)
    call puts
    leave
    ret
    .size main, .-main
    .section .note.GNU-stack,"",@progbits
    .ident "GCC: (GNU) 3.3.3 20040412 (Gentoo Linux 3.3.3-r6, ssp-3.3.2-2, pie-8.7.6)"

    Now try doing that without looking up things in a book -- obviously I cheated here and just used the GCC. You see what I mean, though: Writing a mail program in assembler is somewhat more tricky than Python.

  26. Pr0n to the rescue! by Bob+Cat+-+NYMPHS · · Score: 3, Funny

    Write a porn collector that will crawl through unlinked collections on free porn sites. I'll bet you've done this by hand already (no pun intended). It will have to figure out the directories and filenames from evidence in the linked parts. You'll be using simple AI and network stuff, but if you also want to look only for redheads, you'll be doing some graphics work too.

    If you use my idea, you should send me some redhead pix. Thank you.

    1. Re:Pr0n to the rescue! by msully4321 · · Score: 1

      try gnu wget in recursive mode

      --
      Slashdot: You will never find a more wretched hive of spam and zealotry. We must be cautious.
    2. Re:Pr0n to the rescue! by Anonymous Coward · · Score: 0

      The trick is to be able to determine if the models are really redheads.

    3. Re:Pr0n to the rescue! by KlaymenDK · · Score: 1

      You never know what you'll find ...

      Here's and old entry in my reading list: We'll Return, After This Message

    4. Re:Pr0n to the rescue! by CoolMoDee · · Score: 1

      Been there..done that. Well, not exactly that, but it was a similar idea. At the time I was learning Python and wrote (for my first script in it) a pr0n leecher for usenet. It had multiple search and filtering capabilities, as well as duplicate prevention. Maybe I should rewrite it and release it ..for the good of humanity.

      --
      Jisho - A Japanese English German Russian French Dictionary for the rest of us.
  27. Windows exploit? by Anonymous Coward · · Score: 0

    How bout a worm which exploits holes in Internet Explorer or Outlook?

  28. Open Source as a source for projects by iankerickson · · Score: 1

    If you're that bored and that good at coding, consider become a developer for Debian or one of the BSD projects. I mention these projects in particular because they have very specific membership procedures for accepting new developers and excellent tools to help you document and package your code into new packages. NetBSD is particular really could use some more developers, and the people on the netbsd lists are low-key and friendly. There are also many open source projects for Windows, DOS, MacOS X, and web platforms, so don't feel that this is a UNIX-or-nothing answer. The FreeDOS project is a good example.

    You might learn more and make more tangible progress working on pre-existing, concrete problems with an open source program. Trying to find your own worthwhile problems/projects to work on out of just your own head can really just be a form of procrastination.

    --
    Democracy. Whiskey. Sexy. Pick any two.
    1. Re:Open Source as a source for projects by Anonymous Coward · · Score: 0

      NetBSD packaging system, pkgsrc is pretty okay. It's great, I mean - it is portable, it allows patching for various platforms, operating systems, it's flexible. But, NetBSD developers? They're a bunch of fucked ego-problem type of people. I wonder, how the project did manage to that shape you can see nowadays with so fucked packaging crew. I hope they all get better soon.

  29. These are pretty easy by dtfinch · · Score: 3, Interesting

    You can try to reproduce some classic arcade games. Many of them are very easy to code in an afternoon.

    Here's an asteroids clone I wrote in javascript. It renders everything with divs.

  30. Katas by Anonymous Coward · · Score: 0

    Try the Code Katas on the website of one the Pragmatic Programmers.

  31. How about a knowledge base? by sproketboy · · Score: 1

    I usually write a version of a knowledge base (for web apps anyway).
    They're pretty strait forward - a couple of tables and a couple of pages. But they have enough to cover the bases.

  32. Two things by Sludge · · Score: 2, Interesting
    First, I write a CLI calculator. This gets me understanding simple I/O and type conversions.

    If the language has compelling semantic separation (usually object orientation), I'll write some form of random song guitar tab generator. That's a personal project of interest to me.

    Then I go back to Python.

  33. Write an HTTP / SMTP server by blake182 · · Score: 1

    I'm a server guy, so I usually write an HTTP server or an SMTP server. This gives me a feel for how I/O is done in the language, threading, exceptional cases, parsing, regular expressions, etc. Everything a growing boy needs. HTTP and SMTP are pretty simple protocols, and are actually useful to have once you've completed them -- my need for an RPN calculator or an eight queen solver or a wandering ant trail follower or a trainyard simulator or a Pavlov's triangle solver or a Towers of Hanoi seems to be less. I learned Java and Python this way, and my plan is to do the same in C# with Mono.

  34. A couple of ideas by pamar · · Score: 1
    Two things I have already re-implemented a couple of times, and which are (IMO) easy enough to do in a couple of hours, and good enough to get a feel for a specific language:

    1) Today
    An old program (may had different names on different OSes) that, given the system date, will spew forth a list of things that happened in the past on the same date.

    Tricky part: you can augment its files adding programmable stuff like "on the third sunday of august, show this message" or "if the 4th of October is a Saturday, print this" plus reminders that appear n-days before the actual event.

    2) Simplistic accountancy
    This is even easier. Write a small program which consumes .csv files containing date, short description, amount and a specific string which acts as a sort of "EXPENSE TYPE" marker. Sum up all expenses by type (i.e. FOOD, RENT, CAR, MAGAZINES, BOOK...) and calculate the percentage for each different type vs. the total of all expenses.

    Example of a record:
    "20/05/2004","Sony Clie' battery",-23.45,"PDA"



    Make it work for single files, or for all files matching a regexp:
    account exp_may_2004.csv (may expenses)
    account exp_*_2004.csv (year expenses)
  35. Re: BTTB by Tolomak · · Score: 2, Interesting

    For its own benefit, the world should give Burn to the Brim a try!

  36. I pretty much ... by schmu_20mol · · Score: 2, Interesting
    ...consider the approach Alex Stepanov describes in http://www.stlport.org/resources/StepanovUSA.html one of my favourites...
    ...And if they cannot implement max or swap or linear search, what chances do they have to implement really complex stuff? These are my litmus tests: if a language allows me to implement max and swap and linear search generically - then it has some potential.
    --
    "Nae Kin! Nae Quin! Nae laird! Nae master! We willna be fooled again!"
  37. Calculator - 4 functions to start, then trig funcs by astrojetsonjr · · Score: 4, Interesting
    I teach advanced programming at a local university. I often get students that want to get into the class without having the prior classes. I tell them to set aside 90 mins and to call/email me when they are ready to start.

    For the first hour (or whatever) it takes I have them write a four function calculator (FFC). Once they get that done, I have them extend it to add trig functions like sin / cos in the last 30 mins. If they can't do that, they are not going to be happy with harder assignments.

    I also use this as a mini-test of a new language. Try my new language COAL, better than Cobol, faster than VB, a true OO language with VM's that run on any Timex watch!! A short stint creating a FFC lets me know how well it works out.

    The FFC is also good since you can use it for GUI checkout to see if that new tool rocks as much as Freshmeat would like you to think.

  38. Go big by HeyLaughingBoy · · Score: 2, Insightful

    I'll skirt around your question and instead suggest after you get done with helloworld.lang you go straight to something interesting even if it's huge.

    Why? Well most 1 day projects aren't very challenging or interesting. But most major projects will have subsystems that you can do in one day, and the project in its entirety can hold your attention long enough that you may eventually complete it, by which time you're an expert in the language.

    This is pretty much the approach I had to take to learn C++ and OOP. I started a job knowing only C and the basic ideas of objects, and took on small bits of the C++ project until I could handle larger chunks.

  39. Not Burn to the Brim: No alphabetical by Futurepower(R) · · Score: 1


    Burn to the Brim does not work the way I described. When I last checked it, there was no way to put the files in alphabetical order. That makes them difficult to find. There were other problems, too. I wrote to the author, but he did not want to make changes.

  40. Hello World? by l0rd · · Score: 2, Insightful

    Hhmmmm....You'd figure somebody would have made this lame remark already.

    But seriously, a good project for learning a language depends on the language itself and the problems you yourself face. You're not gonna write a simple 3d engine in python and you're not gonna write a log parser in C (actually you could, but that wouldn't be the easiest/quickest solution).

    Just pick something trivial that bugs you at any given moment that's the right job for the language.

  41. lisp interpretter by Anonymous Coward · · Score: 0

    Write some sort of lisp interpretter. Most people perfer some sort of Scheme sub-set but each his own. If afterwards, if it looks promising you can continue, release it, or whatever. People actually do this.

  42. C/C++ by big+daddy+kane · · Score: 1

    Does anyone know any projects to get one started with c/c++? It doesnt matter which one i'm learning them both at the same time, but most of the above sugggestions involve gui libraries, which are built into some languages like java, but theres really no standard for c/c++. what library would someone suggest learning to be able to start a simple project?

    1. Re:C/C++ by chochos · · Score: 1

      For C I think you can use GTK. For C++ I think Qt is a good option.

  43. Code what you need by Anonymous Coward · · Score: 0

    Every new language I learn, I code a program that takes a simple command-line input to download all pornographic images off a given site. Given the variability of porn-site layouts, etc., and also given that some languages don't have a standard or easy-to-use networking library, this isn't quite trivial.

    Programmability is the thing that makes computers cool; if you have a problem to be solved, like I do, you just code your solution. Let the machine do the work.

  44. pr0n script by Anonymous Coward · · Score: 0

    write a program to automate your pr0n downloads!

  45. Try writing a perl extension by Anonymous Coward · · Score: 0

    Grab some library written in C and write a wrapper perl module. Keywords: XS, Inline C, SWIG.

  46. Format converters by retrosteve · · Score: 3, Interesting

    A serious suggestion --

    Look at your favorite text, sound, or graphic format that you've had trouble converting to or from some other format. Write the converter.

    This can range from 1 hour to a week's work, but it's always instructive and usually fun.

  47. Graph algorithms by cakoose · · Score: 2, Informative

    Graph algorithms are good for testing out a language's data structures. Dijkstra's single-source shortest path function is a good one to start with.

  48. I've got a good one... by crazyphilman · · Score: 3, Interesting

    Do "Towers of Hanoi".

    You've got three posts, and up to 64 disks, with the largest disk slid down to the bottom of the first post and the smallest disk at the top, and the diameters of the disks tapering.

    You have to move all the disks from the first post to the third post in such a way that no disk is ever placed on a smaller disk, and only one disk is moved at a time, one post at a time. It's harder than it looks.

    Your goal: model the three posts and the 64 disks. Write a program that moves the disks from the first post to the third via the middle one, without ever violating the rules. Record the sequence, and let it run, finding the shortest sequence that works.

    It's kind of a fun one.

    --
    Farewell! It's been a fine buncha years!
    1. Re:I've got a good one... by typhatix- · · Score: 1

      While it is a classic problem, I don't see how an implementation of the "Towers of Hanoi" would take more than 5 minutes or be over 10 lines of code.

      How about the Sieve of Eratosthenes, matrix decomposition, or a recursive descent parser? None of these should take more than 20 or 30 minutes.

  49. Make a chess game... by Ramses0 · · Score: 3, Interesting

    I like writing a chess game... there are sufficient enough ways to implement a two-player (human) game, and enough corner cases that it's an interesting problem with well-defined rules. Have fun!

    --Robert

  50. Code for others! by sachachua · · Score: 4, Insightful

    When I'm studying a language, I like finding an open source project I care about and looking for something to tweak. Advantages of this include feedback from other developers, an instant framework to fit your small changes into, and the warm and fuzzy feeling you get when you make something other people will use. You can pick up the idioms of the language quickly by reading code used in real life. Participating in an open source project also connects to a lot of other people who already know the language you want to learn, and you can ask them for help.

    Don't be intimidated by the size of projects. Pick a project, browse through the source code, try to get the feel of things. You can usually find a bug report small enough for you to work on. If not, think of a feature you'd like to have and try to implement it. =)

    Great way to get into a language.

  51. Useful first exercise - cubic equation solver by viking_kiwi · · Score: 2, Interesting

    I do numerical modelling for process engineering and my first programming exercise with a new language is to write a cubic equation solver based on that in the Numerical Recipies books. This exercises all of the basics, particularly math funtions (square roots, powers and trigenometry) as well as basic conditionals. The resulting code is actually useful in my work - I now have versions in Fortran (the original NR Fortran book didnt actually supply code), C, C++, Java, Tcl, and Python!

    On a related note the very first significant program I ever wrote was as an exercise in Fortran programming on punched cards - a quadratic equation solver. Most of the same elements were there - mathematical functions and conditionals, with the additional complication of requiring formatted output - you had to decide if the roots were real or imaginary and print them in a suitably formatted way, so the exercise also taught you how to do output of strings. I seem to remember it took about three days to complete the exercise, but in those days of submitting batches of punched cards the compile - run - debug cycle was 24 hours!

  52. depends by Anonymous Coward · · Score: 0

    it depends on what you WANT in a language.

    Like recently I was frustrated with how difficult it is to whip up a UI in Java with existing tools. So I wrote a simple issue tracker in:

    - VB
    - Java w/JBuilder generated Swing
    - Java hand coded Swing
    - MS Access

    Though MS Access won hands down (even though I don't know that much about it), my hand coded Swing was better and faster to generate than using JBuilder's Visual Creator (which proves my point).. I couldn't figure out what to use for loading data in VB (too many options : and I'm not a VB programmer). This tests UI generation capabilities (how easy/quick is it to get a nice UI out).

    Another alternative is writing a web server. I did it in less than an hour with no experience in Java (108 lines, mostly catch blocks :) ). This tests networking APIs and multithreading features.

  53. Reasonably short; definitely nontrivial by VernonNemitz · · Score: 1

    Back in the 1970s a little game came out called Master Mind. It's still available today, uses a plastic board and colored pegs. Great game -- except that if the person who creates a puzzle for you to solve makes a mistake in handing out clues, it is very upsetting. So the first significant program I wrote (BASIC) was Master Mind. Keyboard input, graphical output, clue algorithm, etc. Took me about a week, but back then I was just a beginner. NEVER makes a mistaking handing out clues! As years go by and I learn more languages, I usually turn to Master Mind as something significant to write. Clipper, C, Delphi, and Javascript. I like that last one because just viewing the page means you have loaded the program. Save the page and you can play the game offline. (Ok, so the output of that version isn't graphical. Feel free to improve as you like.)

  54. Tetris by marcovje · · Score: 4, Informative


    I usually write a tetris clone.

    Basic operation is 400-1000 lines typically

    1. Re:Tetris by Anonymous Coward · · Score: 0

      I usually write a Halo sequel.

  55. Python is the current language by sapped · · Score: 1

    For those that have asked the question. I am currently learning Python. However, I wanted to keep the question general enough so that if I came up against a new language then I would have an "arsenal" of small problems that I could throw at it quickly to tweak out the difficult areas to code in and to highlight the strengths of the language.

  56. Address Book by complexmath · · Score: 1

    I one had a coworker who said he always writes an address book as a first project when learning a new language or api. It covers a fairly broad range of stuff--common ui components, collections, sorting, searching, file io, etc--while being conceptually pretty simple.

  57. Mandelbrot Set! by Bros · · Score: 0

    Usually I start with the Mandelbrot set in ASCII or graphics, depending on the abilities of the language/system. This is also the first thing I did for the 3 CPUs in embedded systems I had to deal with lately... Manddelbrot in ASCII over 9600 baud line, well, not pretty but nice :-)

  58. 21 short exercises by Dave (Pragmatic) Thomas by mahlen · · Score: 2, Informative

    http://pragprog.com/pragdave/Practices/Kata

    For the lazy or doubtful, here's the list of descriptions:

    KataOne: Supermarket pricing. Pricing looks easy, but scratch the surface and there are some interesting issues to consider.
    KataTwo: Karate Chop. A binary chop algorithm is fairly boring. Until you have to implement it using five totally different techniques.
    KataThree: How Big, How Fast? Quick estimation is invaluable when it comes to making design and implementation decisions. Here are some questions to make you turn over the envelope.
    KataFour: Data Munging. Implement two simple data extraction routines, and see how much they have in common.
    KataFive: Bloom Filters. Implement a simple hash-based lookup mechanism and explore its characteristics.
    KataSix: Anagrams. Find all the anagram combinations in a dictionary.
    KataSeven: Reviewing. What does our code look like through critical eyes, and how can we make our eyes more critical?
    KataEight: Objectives. What effects do our objectives have on the way we write code?
    KataNine: Checkout. Back to the supermarket. This week, well implement the code for a checkout system that handles pricing schemes such as "apples cost 50 cents, three apples cost $1.30."
    KataTen: Hash vs. Class. Is it always correct to use (for example) classes and objects to structure complex business objects, or couple simpler structures (hash as Hashes) do the job?
    KataEleven: Sorting it Out. Just because we need to sort something doesnt necessarily mean we need to use a conventional sorting algorithm.
    KataTwelve: Best Sellers. Consider the implementation of a top-ten best sellers list for a high volume web store.
    KataThirteen: Counting Lines. Counting lines of code in Java source is not quite as simple as it seems.
    KataFourteen: Trigrams. Generating text using trigram analysis lets us experiment with different heuristics.
    KataFifteen: Playing with bits. A diversion to discover the pattern in some bit sequences.
    KataSixteen: Business Rules. How can you tame a wild (and changing) set of business rules?
    KataSeventeen: More Business Rules. The rules that specify the overall processing of an order can be complex too, particularly as they often involve waiting around for things to happen.
    KataEighteen: Dependencies. Lets write some code that calculates how dependencies propagate between things such as classes in a program.
    KataNineteen: Word chains. Write a program that solves word chain puzzles (cat -> cot -> dot -> dog).
    KataTwenty: Klondike. Experiment with various heuristics for playing the game Klondike.
    KataTwentyOne: Simple Lists. Play with different implementations of a simple list.

    mahlen

  59. Re:Benefit the world: A program to show data split by DavidYaw · · Score: 1

    Make a program that shows what parts of a huge folder fit on individual CDs or DVDs. The output of the program would say, for example, that all the files from sub-folders A to Information would fit on the first CD, and all the files from sub-folders Installers to Netgear would fit on the second CD, and so on.

    It is necessary to store backup sub-folders in alphabetical order on the backup CDs or DVDs because then they can be found easily.


    As described, there's a major problem with your algorithm for deciding the splits. It would result in lots of wasted space on the backup media.

    As an example, let's say we have three directories we want to back up. Directory A is 100 MB, Directory B is 610 MB, Directory C is 100 MB, and the backup medium is CDRs.

    If a human were to decide what directories should go where, it would put A and C on disk 1, and B on disk 2. Your algorithm would put A on disk 1. There isn't enough space on disk 1 for B, so that goes on disk 2. But now, there isn't enough space on disk 2 for C, so because everything has to be in order, C must go onto disk 3. You now have two CDRs with over 500 MB each of wasted space.

    Burn to the brim (mentioned by another poster) appears to do the same thing that the human would do.

  60. A single-file database server and client by rjshields · · Score: 2, Interesting

    Use a simple data file format and allow for CRUD operations. Write a network server and GUI clients. Covers file IO, collections/data structures, networking and GUI. Bit boring, mind :)

    --
    In this world nothing is certain but death, taxes and flawed car analogies.
  61. Some data sets have no huge files. by Futurepower(R) · · Score: 1


    we're paying 14 cents for CDs now. We don't care if some space is wasted. Also, for many data sets, there are no huge files. We have about 5.8 gigabytes of miscellaneous software that we and our customers may need. We don't put anything over 50 Megabytes on the hard drive.

    Burn to the Brim doesn't work well when you need one single file from 110,000 small files. It could be on any one of the backup media. There is nothing wrong with my proposed algorithm for that kind of data set.

  62. Might as well earn some money by cerberusss · · Score: 1

    Pick a project from http://www.elance.com/, http://www.rentacoder.com/, or some other freelance platform to test your coding skills. If you have an account, you could even earn some money.

    --
    8 of 13 people found this answer helpful. Did you?
  63. make a program that can... by themuffinking · · Score: 1

    Make a program that can determine the exact size, shape, and position of everything in the universe by examining how the atoms in a piece of fairy cake are arranged. While you're at it, bake a fairy cake. And create something capable of measuring every single atom's position in that fairy cake.

  64. Re:a little easy but INSTRUCTIVE by museumpeace · · Score: 1

    Yep. little math bits are a good choice because typically I/O programming [which tends to be steep learning curve in a new lang.] is, or can be minimal. and though its certainly a trivial exercise, one of my favorites was to type in an infinite loop Fibonacci number generator...its as small a program as you can write that lets you find out how the language handles printf, arrays and arithmetic overflow for integer types.

    --
    SLASHDOT: news for people who can't concentrate on work or have no life at all and got tired of yelling back at the TV.
  65. Google Bomb by Anonymous Coward · · Score: 0
  66. puzzles by andyfaeglasgow · · Score: 1

    Last Xmas I got a little puzzle that involved arranging 16 cards, each having one of about 9-10 images on each side so that each image was next to a similar one. (Maybe a wee diagram will help)
    __________
    __|__|__|__|
    __|__|__|__|
    __| __|__|__|
    __|__|__|__|

    I'd just started learning Java at the time and thought it would be fun to try and solve the puzzle using Java.

    It was great for learning purposes. It required fairly complex logic (a brute force alg would take weeks), used a couple of classes, and also made use of most of the control structures that Java has to offer (break, switch..etc as well as the usual for/while loops)

    I can't remember the title of the game off hand but I'm sure there are loads of games like this around - especially now we're getting close to xmas again.