Celestial Coding

Archive => Archives => C# => Topic started by: mager1794 on March 13, 2014, 07:05:05 pm

Title: Project
Post by: mager1794 on March 13, 2014, 07:05:05 pm
I took a break from programming for a while (not my choice) but coming back things just feel strange, like a teenager trying to get a date I feel like I cant find a place to start.  I want to work on something that is kind of large, not quick script solutions. I would like to freshen up on my Object Orientation to complete my project. So I guess my question is...

Can you guys think of any projects that I could do? Preferably something with some problem solving. And Something that's going to require some real architecture to maintain if I were to choose to do so.

Appreciate the help guys, coders block is a bitch.
Title: Re: Project
Post by: Nathan on March 13, 2014, 08:50:57 pm
I have many ideas - are you looking for a game or application?
Title: Re: Project
Post by: mager1794 on March 14, 2014, 05:01:28 am
Applications, My struggle with games is the lack of any artistic skill at all. I get tired of looking at ugly games really fast :/
Title: Re: Project
Post by: Celestialkey on March 14, 2014, 01:15:16 pm
Applications, My struggle with games is the lack of any artistic skill at all. I get tired of looking at ugly games really fast :/

Make something similar to WinRAR or WinZIP. Create a program that can combine multiple files into one and still preserve the data of each file inside it. It's a fun little project I did in the past for my game.
Title: Re: Project
Post by: Nathan on March 15, 2014, 06:03:21 pm
Applications, My struggle with games is the lack of any artistic skill at all. I get tired of looking at ugly games really fast :/

Make something similar to WinRAR or WinZIP. Create a program that can combine multiple files into one and still preserve the data of each file inside it. It's a fun little project I did in the past for my game.

I believe this was done in either Quake 3, Duke Nukem 3D or Ken's Labyrinth. In any case - it is a pretty clever way to keep out the random people.

Applications, My struggle with games is the lack of any artistic skill at all. I get tired of looking at ugly games really fast :/

Here are some ideas:

* A script monitor type application - the idea is that automated scripts report to this central interface and can report on if a script hasn't ran or it was a failed run
* One that I REALLY WANT is a clone of codepad. I would like collaborative editing but compiling/running would be awesome. It's not a hard idea - but there are few caveats such as restricting internet access (don't want random people to build a malware application to attack or listen on a port - I think a short timeout period for anonymous, longer but still short for registered and longer for paid people), running it in a sandbox such that it can't access any files on the system except in the directory that was created to run it (which would also allow for registered users to upload libraries). Anyone attempting to exploit the system would be automatically banned.
*  A C++ garbage collector (I can explain my ideas if you are interested as well as what problems this is trying to solve)
Title: Re: Project
Post by: Celestialkey on March 18, 2014, 10:08:41 am
* One that I REALLY WANT is a clone of codepad. I would like collaborative editing but compiling/running would be awesome. It's not a hard idea - but there are few caveats such as restricting internet access (don't want random people to build a malware application to attack or listen on a port - I think a short timeout period for anonymous, longer but still short for registered and longer for paid people), running it in a sandbox such that it can't access any files on the system except in the directory that was created to run it (which would also allow for registered users to upload libraries). Anyone attempting to exploit the system would be automatically banned.

Isn't this the same as the CCTC thing I built a while back. Basically multiplayer notepad, right? I remember the developement went smoothly until for some reason my ISP derped my connection and I couldn't test/debug it anymore.
Title: Re: Project
Post by: Nathan on March 18, 2014, 07:59:07 pm
* One that I REALLY WANT is a clone of codepad. I would like collaborative editing but compiling/running would be awesome. It's not a hard idea - but there are few caveats such as restricting internet access (don't want random people to build a malware application to attack or listen on a port - I think a short timeout period for anonymous, longer but still short for registered and longer for paid people), running it in a sandbox such that it can't access any files on the system except in the directory that was created to run it (which would also allow for registered users to upload libraries). Anyone attempting to exploit the system would be automatically banned.

Isn't this the same as the CCTC thing I built a while back. Basically multiplayer notepad, right? I remember the developement went smoothly until for some reason my ISP derped my connection and I couldn't test/debug it anymore.

This would be way different. This isn't just storing a copy of the code like a gist but rather compiling it, running it, and showing the output. These tools are great for showing examples/explaining things - especially if the user can "fork" an example and modify it. I think it would be extraordinary if for an OpenGL example - run it, and run some commands with it (such as press and hold w key for 5 seconds) record it and show it to the user. I think something like this would have to be queued but I think it could provide an amazing new experience to people. I write something simple - then you fork it add some stuff - then I fork it etc etc.
Title: Re: Project
Post by: Celestialkey on March 18, 2014, 09:18:22 pm
* One that I REALLY WANT is a clone of codepad. I would like collaborative editing but compiling/running would be awesome. It's not a hard idea - but there are few caveats such as restricting internet access (don't want random people to build a malware application to attack or listen on a port - I think a short timeout period for anonymous, longer but still short for registered and longer for paid people), running it in a sandbox such that it can't access any files on the system except in the directory that was created to run it (which would also allow for registered users to upload libraries). Anyone attempting to exploit the system would be automatically banned.

Isn't this the same as the CCTC thing I built a while back. Basically multiplayer notepad, right? I remember the developement went smoothly until for some reason my ISP derped my connection and I couldn't test/debug it anymore.

This would be way different. This isn't just storing a copy of the code like a gist but rather compiling it, running it, and showing the output. These tools are great for showing examples/explaining things - especially if the user can "fork" an example and modify it. I think it would be extraordinary if for an OpenGL example - run it, and run some commands with it (such as press and hold w key for 5 seconds) record it and show it to the user. I think something like this would have to be queued but I think it could provide an amazing new experience to people. I write something simple - then you fork it add some stuff - then I fork it etc etc.

So... compile locally, upload feedback to remote users from local machine? Due explain, sounds interesting.
Title: Re: Project
Post by: mager1794 on March 19, 2014, 01:26:02 am
Feels like for collaboration I would need servers being hosted, That way you could connect with others interested in collaboration.
Title: Re: Project
Post by: Celestialkey on March 19, 2014, 01:05:20 pm
* One that I REALLY WANT is a clone of codepad. I would like collaborative editing but compiling/running would be awesome. It's not a hard idea - but there are few caveats such as restricting internet access (don't want random people to build a malware application to attack or listen on a port - I think a short timeout period for anonymous, longer but still short for registered and longer for paid people), running it in a sandbox such that it can't access any files on the system except in the directory that was created to run it (which would also allow for registered users to upload libraries). Anyone attempting to exploit the system would be automatically banned.

Isn't this the same as the CCTC thing I built a while back. Basically multiplayer notepad, right? I remember the developement went smoothly until for some reason my ISP derped my connection and I couldn't test/debug it anymore.

This would be way different. This isn't just storing a copy of the code like a gist but rather compiling it, running it, and showing the output. These tools are great for showing examples/explaining things - especially if the user can "fork" an example and modify it. I think it would be extraordinary if for an OpenGL example - run it, and run some commands with it (such as press and hold w key for 5 seconds) record it and show it to the user. I think something like this would have to be queued but I think it could provide an amazing new experience to people. I write something simple - then you fork it add some stuff - then I fork it etc etc.

So... compile locally, upload feedback to remote users from local machine? Due explain, sounds interesting.

Please elaborate in a bit more detail how you think something like this will work. I'm getting pretty interested in this project idea.
Title: Re: Project
Post by: mager1794 on March 19, 2014, 01:56:21 pm
Same, anyone have any idea how utorrent knows where to download from? Because I feel like that could be useful in this project.
Title: Re: Project
Post by: Vlykarye on March 25, 2014, 04:07:22 pm
Torrents use trackers for that. A tracker is a server that houses the addresses of people who have torrents to be uploaded and downloaded. When you start a torrent file, the client asks the servers for other users who posses some or all of the torrent.
Title: Re: Project
Post by: Nathan on March 26, 2014, 12:31:22 am
* One that I REALLY WANT is a clone of codepad. I would like collaborative editing but compiling/running would be awesome. It's not a hard idea - but there are few caveats such as restricting internet access (don't want random people to build a malware application to attack or listen on a port - I think a short timeout period for anonymous, longer but still short for registered and longer for paid people), running it in a sandbox such that it can't access any files on the system except in the directory that was created to run it (which would also allow for registered users to upload libraries). Anyone attempting to exploit the system would be automatically banned.

Isn't this the same as the CCTC thing I built a while back. Basically multiplayer notepad, right? I remember the developement went smoothly until for some reason my ISP derped my connection and I couldn't test/debug it anymore.

This would be way different. This isn't just storing a copy of the code like a gist but rather compiling it, running it, and showing the output. These tools are great for showing examples/explaining things - especially if the user can "fork" an example and modify it. I think it would be extraordinary if for an OpenGL example - run it, and run some commands with it (such as press and hold w key for 5 seconds) record it and show it to the user. I think something like this would have to be queued but I think it could provide an amazing new experience to people. I write something simple - then you fork it add some stuff - then I fork it etc etc.

So... compile locally, upload feedback to remote users from local machine? Due explain, sounds interesting.

Please elaborate in a bit more detail how you think something like this will work. I'm getting pretty interested in this project idea.

The compilation would happen server side. The only thing the user uploads is code. Like jsfiddle.com, codepad.org etc.
So lets say for example you have an OpenGL example. You would upload the cpp file, it compiles it server side and perhaps even records a video/screenshot of it automatically. It would then generate a link that you can give to other people and they can copy the code to their program or fork it from the site (github style) make their own modifications and recompile/record and have another unique link for their example. I think this would be amazing - especially considering I can spit out Windows exes from Linux using mingw (not optimal - but it would work until we get a Windows build server online running Visual Studio). Click here to download source + binaries for this sample code/whole program.

The problem comes in is in theory someone could upload malicious code. Simple port scan or even a root level exploit. It's almost like such a service would need a hierarchy of approvals - it would be almost impossible to create an automatic silver bullet that would recognize malicious code.
Title: Re: Project
Post by: Celestialkey on March 26, 2014, 09:13:03 am
What if instead of using a server model, it used a p2p model? The host would 'lend' their compiler to other users and the results would be compiled on their machine and sent back? I can't see a server doing this as a good idea since you would run into dependency errors. Not to mention the fact that the program would by default be compiled for that local system architecture. If it is a teaching tool, there would be a teacher hosting the source, or so I'd assume. What do you think?
Title: Re: Project
Post by: Nathan on March 27, 2014, 11:07:02 pm
What if instead of using a server model, it used a p2p model? The host would 'lend' their compiler to other users and the results would be compiled on their machine and sent back? I can't see a server doing this as a good idea since you would run into dependency errors. Not to mention the fact that the program would by default be compiled for that local system architecture. If it is a teaching tool, there would be a teacher hosting the source, or so I'd assume. What do you think?

The dependency issue would be solved by allowing people to upload a zip or multiple zip files of libraries. Either headers, so, DLLs ect. This is exactly what jsfiddle - http://jsfiddle.net/ does - if you click on external resources you can include external javascript or CSS. Again though this does open up more issues and would probably require an approval system.

I think it would be cool to spawn a pip of C++ - so like for example:

(pip plus plus)

Code: [Select]
ppp install irrlicht
It would pull down all the libraries for irrlicht - either precompiled or just the source to be compiled. It would then contain a compile script such that:

Code: [Select]
./compile project
And project would contain the source files and compile is a script that would automatically invoke g++/gcc with the proper parameters telling the compiler where to find the libraries.

(In case you didn't know what pip was - it's a package manager for Python applications that are uploaded to https://pypi.python.org/pypi . You can say do a pip install project and it will automatically install that package and any dependencies)