PDA

View Full Version : Getting ideas for programming?


forkbomb
7th March 2010, 01:28 AM
Just a random coffee talk topic for any programmers.

I want to teach myself some programming, but I have the problem of not knowing what it'd really be worth programming. You don't really learn much by stepping through a textbook - and anything you learn atrophies after you finish a chapter. I figure the best way to learn something about programming is to actually figure out something worth coding and jump into it.

Problem is, I don't have any good ideas that haven't already be implemented. Any thoughts? How do you programmers get ideas?

I have almost zero formal training at programming, excepting some shell scripting (which is a whole other topic entirely). I know a bit of vbscript (which I've thankfully forgotten) and bash, along with a handful of PL/SQL (meh), perl (double meh), and PHP. Think is, the reason I know the most about the scripting languages I do know is that the classes involved being given specific problems and having to whip something up to meet the requirements. It's a better learning experience than "follow-along-in-the-book" labwork.

EDIT: Ooh! I did think of one thing I would like to code - a cross-platform "networkable clipboard" that allows you to share a clipboard between different computers on a LAN.

Firewing1
7th March 2010, 01:34 AM
That clipboard idea is great, come to think about it that would be something would be extremely handy. But networking is complex, I would stay away from anything network-related if it's your first programming project.

I find the best thing to do is think about what you find annoying when you use the computer and hack away at it until it works better. Chances are there are people who feel the same way and will like your program!

forkbomb
7th March 2010, 01:39 AM

Yeah... the problem is selecting something that's more complicated than "Hello World" but not too complicated. The only real other burning need I have is a Linux-native port of foobar2000, but that'd obviously be way over my head and I'd have no clue where to start.

stevea
7th March 2010, 02:09 AM
i disagree - I think the network clipboard is a good idea, and do-able.
You have to be willing to build up to the final result - diddle a bit with the clipboard, then diddle a bit with networking then put it all together in a couple of iterations.

How do you programmers get ideas?
Boss sez - "Customer needs xyzzy feature by Wednesday. I reply "How about Wednesday evening ?".

forkbomb
7th March 2010, 02:19 AM
i disagree - I think the network clipboard is a good idea, and do-able.
You have to be willing to build up to the final result - diddle a bit with the clipboard, then diddle a bit with networking then put it all together in a couple of iterations.
I think it is, too. My BS concentration is in networking, so I at least (should) have a grasping of the networking behind it. Thing is, we don't do much above, oh, Layer 4.

The biggest obstacle to me trying it is picking a language. Python appeals to me for some reason (they say it's simple and good for beginners), but I don't think it'd necessarily be the best fit. Then again, there are some awfully complicated cross-platform Python-based apps out there, like GRAMPS. Python even works respectably well on Windows, if I went cross-platform.

I wonder if PyGTK would be a decent fit...


Boss sez - "Customer needs xyzzy feature by Wednesday. I reply "How about Wednesday evening ?".
I knew somebody was going to say that. :p

Nokia
7th March 2010, 02:26 AM
How about taking terminator and implementing the clipboard feature in it ? Imagine having control of 10 PC's clipboards in one window :)

forkbomb
7th March 2010, 02:48 AM
Clipinator? :)

tashirosgt
7th March 2010, 04:44 AM
tjvanwyk,
What fields interest you besides programming? Those fields are where you should look to get ideas for programs.

RupertPupkin
7th March 2010, 04:50 AM
How about a calculator? That's always a good one to start out with. If you want something simpler, try a font viewer.

forkbomb
7th March 2010, 04:57 AM
How about a calculator? That's always a good one to start out with. If you want something simpler, try a font viewer.
Actually, those are both great ideas. A calculator could help me get my feet wet with GTK or pygtk if I wanted to learn those.

Another idea I had was a program that reads a whole slew of system information and dumps it to HTML (similar to Belarc Advisor on Windows). Would be a good learning exercise even if those products are a dime a dozen.

A text editor would be relatively simple even though everybody and his mother has written a text editor.

tjvanwyk,
What fields interest you besides programming? Those fields are where you should look to get ideas for programs.Mostly alfalfa and sweet corn. Oh, wait...

OK, bad joke. I'm pretty close to earning my BS in CS (my official program reads "Bachelor of Science in Computer Science with a Concentration in Networking and Security Technology"). So, networking and security, I guess. As for hobbies, I'm into genealogy, but GRAMPS (http://www.gramps-project.org/wiki/index.php?title=Main_Page) has that area covered very well. And gaming, but games are one of the things I wouldn't bother coding (don't want to make gaming into work :p). A long time ago I considered making a satirical roguelike (http://en.wikipedia.org/wiki/Roguelike).

stevea
7th March 2010, 05:54 AM
There is still a lot of networking SW that is not IPV6 savvy. SCTP protocol is interesting as *%%&, has some very interesting potential apps, and has barely been touched.

Firewing1
7th March 2010, 05:28 PM
I wonder if PyGTK would be a decent fit...
Speaking from personal experience, if you're going for a networked cross-platform GUI stay away from Python and PyGTK... Qt will make your life a lot easier in this case ;)

forkbomb
7th March 2010, 06:58 PM
Any particular reason for that? What about your personal experience soured you on Python & PyGTK?

I know my personal recollection means precisely squat, but I guess I'm just thinking of the cross-platform stuff I've used. I can't recall ever (knowingly) using something that uses QT on Windows. I use a number of apps on Windows that use gtk, though.

Firewing1
7th March 2010, 07:17 PM
fwbackups originally started as a little script I used to backup my files, but then I extended it to include a GUI... At the time, I wasn't ready to start C++ and I wanted to include a GUI, so Python and PyGTK looked like an excellent choice.

Python and GTK are both great projects, but trying to get everything work cross-platform is an enormous pain.

On Windows, you'll have to not only install Python but install the GTK runtime environment before the users can run your program... You have a few options:
Use py2exe to bundle a compacted copy of your program and the required Python modules Still requires you package the GTK DLLs, and also has some disadvantages (can't capture stdout/stderr)
Run py2exe but don't use the exe file it generates, just copy python.exe and pythonw.exe and make wrapper scripts to launch the program. It's cumbersome, but on the other hand it allows you to capture stdout and stderr when needed (this is the method I am currently using, since it is also makes installations very easy to patch). As with the previous case, you still need to package the GTK DLLs
Automate the installation of the "official" Python MSI, GTK Runtime, PyGTK, PyGObject and PyCairo installers. This is a big pain as soon as you want to do upgrades since the Python MSI doesn't uninstall previous versions and you can easily get into GTK DLL hell.
So no matter which route you take, there's always disadvantages and it's just so much packaging work. OS X is a whole other story, you'll need to manually compile (http://gtk-osx.sourceforge.net) the GTK libraries, PyGTK & related dependencies for OS X and include that in your .app bundle. If you also want to support the new Snow Leopard, then you'll need to force 32-bit Python since OS X 10.6 defaults to 64-bit Python, but 64-bit GTK on OS X isn't very well supported yet.

Here's what the workflow looks like with Qt:
Compile your code and distribute the executables with the Qt shared library (either the DLL for Windows or dylib for OS X). It works on Linux, OS X and Windows natively.
Much simpler! :rolleyes:

Qt isn't just a GUI toolkit either, it has components for XML and networking too.

dmyersturnbull
7th March 2010, 07:22 PM
Any particular reason for that? What about your personal experience soured you on Python & PyGTK?

I guess I'm just thinking of the cross-platform stuff I've used. I can't recall ever (knowingly) using something that uses QT on Windows. I use a number of apps on Windows that use gtk, though.

I’d recommend avoiding GUIs entirely; having to deal with cumbersome graphics packages really detracts from the learning process, let alone the enjoyment.

Python is a great language to start with. Read the tutorial docs and start with something simple that doesn’t involve a GUI. Calculators are actually difficult with many languages (because parsing math expressions is difficult), but should be easier in Python. If you want something graphical (and arguably cooler), you could write a calculator–plotter using matplotlib (http://matplotlib.sourceforge.net/). But start simple. And avoid large graphics packages.

RupertPupkin
8th March 2010, 12:01 AM
Some one recently wrote a graphing calculator app, similar to a TI-83, which you can see here: http://code.google.com/p/graphingcalculator/

It's written in Java, so it works in Linux, Windows, and OS X. Maybe that will give you some ideas.

PopcornKing
8th March 2010, 06:28 AM
There are lots of programming ideas out there being implemented and many more that havent been thought of to date. I think as a start it is good to gain 1) some fundamental computer science EDUCATION/experience and 2) EXPERIENCE/education in a particular field. 2) will allow you to identify important problems and 1) should let you solve them. Hopefully you will be interested in both 1) & 2). As an added bonus if you are a 'pure' computer scientist then 2) has a good chance of overlapping with 1) substantially more than say economics or physics.

---------- Post added at 12:28 AM CST ---------- Previous post was at 12:22 AM CST ----------

I’d recommend avoiding GUIs entirely; having to deal with cumbersome graphics packages really detracts from the learning process, let alone the enjoyment.

I second that!