Any ideas for a new project? - Programming On Unix
Users browsing this thread: 4 Guest(s)
|
|||
Hi everybody! Long time no see.
I am looking for ideas for new software projects, I just ran out of them for the first time in a few years. I want to make something that is not web based, preferably on the desktop. Desktop or text console, GUI, TUI, CLI, anything. So if you have a good idea or concept, leave a reply and you will get the chance of seeing it happen! The first idea that passed through my mind, although a rough one, was to make a new shell, with a new command language and mode of operation based on channels and coroutines. Didn't thought too much on that but it might be an idea worth exploring. |
|||
|
|||
There are already too many shells.
Hmm, a Gopher client? -- <mort> choosing a terrible license just to be spiteful towards others is possibly the most tux0r thing I've ever seen |
|||
|
|||
Doesn't matter if they are too many. I would take it as a research project. Much fun!
|
|||
|
|||
Hm, if yall don't mind, I'll do an idea dump of some smaller stuff.
erle: Code: rlwrap replacement/enhancement, takes ideas from the fish shell Maybe use linenoise and tweak it a bit for what is needed. fle: Code: suckless pager, with command [f]orwards, [b]ackwards, [u]p, [d]own, [j], [k], [g], nager: Code: sxhkd for the mouse. syntax: pau: Code: plan9 alt unicode. implement plan9 style unicode typing bnf: Code: program that accepts one backus-naur form grammar and checks if it's cap: Code: simple language for assembling different files into one. syntax very sif: Code: simple text processing filter that takes only one instruction Now I know that this is quite a lot of stuff, but these are probably my best ideas for programming projects. They are quite text-processing heavy, though, so if you're not into that... |
|||
|
|||
Although, after thinking a bit, it'd probably be better if you looked for projects in the open source world that need help and worked on one of these. I don't want to be all like "oh you evil person polluting the internet with new code", quite the opposite (do what you want), but if you are indifferent to making something yourself and contributing somewhere, implementing some other person's project is probably going to be less "good for the world" than improving existing software.
|
|||
|
|||
Every year there is a software project competition for high school students here, and I would like to participate with my next project. I am also considering improving other concepts or existing programs.
|
|||
|
|||
If you need to write something cool from scratch to "impress" other students, one cool idea would be to make something they'll find useful or funny, amd that they'll use after the competition is over.
From the top of my head, wjen I was a student: - RSS feed reader - 2D platform game - Sharing platform for documents - ... Now if they're more geeky, amd you want to go with CLI, you can make more specific stuff, like the following: - coreutils subset - text editor - picture renderer with ascii blocks - ... Now for ideas that I find useful: - automatic filesync between hosts (torrent based) - deduplication + compression software - mk(1) and redo(1) implementation in C |
|||
|
|||
redo has been done already: https://github.com/chneukirchen/redo-c
|
|||
|
|||
(10-11-2018, 01:33 PM)pranomostro Wrote: redo has been done already: https://github.com/chneukirchen/redo-cSo has mk. That does not mean it cannot be done again :) Diversity in implementations is the key to solid software! |
|||
|
|||
I know this a little outside of the interest area of people on nixers, but I've been working at optimizing algorithms to generate prime numbers.
Im slightly addicted to project Euler. |
|||
|
|||
Quote:Diversity in implementations is the key to solid software! I disagree politely: http://www.catb.org/esr/faqs/hacker-howto.html#believe2 Especially if it has been solved well, as in these cases. |
|||
|
|||
(11-11-2018, 07:07 PM)pranomostro Wrote: I disagree politely I think for a lot of people, the closer the software is to their daily workflow, the more likely they will want to make their own implementation. Think of the sheer number of terminals, shells, window managers, all these system basics. I would argue that this software diversity is due to the simple want that people have for the tools that often use to be to their exact specifications. Reinventing the wheel is not the same thing as creating an implementation of an existing piece of software that works for your workflow. |
|||
|
|||
I know of no single GNU tool that was not just reinventing the wheel.
-- <mort> choosing a terrible license just to be spiteful towards others is possibly the most tux0r thing I've ever seen |
|||
|
|||
(11-11-2018, 08:33 AM)Steph Wrote: I know this a little outside of the interest area of people on nixers, but I've been working at optimizing algorithms to generate prime numbers.Project Euler *is* very addictive. I started using sagemath but had to drop it for lack of time. |
|||
|
|||
|
|||
Which is quite a pointless thing.
-- <mort> choosing a terrible license just to be spiteful towards others is possibly the most tux0r thing I've ever seen |
|||
|
|||
I really liked z3bra's idea of writing something that the participants may use after the competition.
The situation is slightly more complex, this is an official competition with professional judges, not a casual, friendly thing made by some students. I can't just write an RSS reader without making it extremely unique, making it essentially a different type of program, not an rss reader anymore. If it's not unique I don't get points, so I have to innovate quite a bit. I didn't have any ideas for what such an innovation may be, so I created this thread to exchange ideas. I'm sorry for letting this confusion happen. I am currently working on a new shell based on posix shell and the sam text editor. It will allow you to manipulate text using sam-like commands and use other unix tools on the system for text processing and scripting. With the power of sam addresses and commands, and unix tools, you could use this shell i'm building either as a script-friendlier shell or as an alternative for awk! |
|||
|
|||
Make it a graphical shell with sam's window system!
-- <mort> choosing a terrible license just to be spiteful towards others is possibly the most tux0r thing I've ever seen |
|||
|
|||
To experiment with the idea of using structural regular expressions in a shell, I started implementing some sam commands as cli programs. I made three of them:
The mode of operation is by chaining them with pipes. Here I open plan9's man(1)'s page, go to line 20 and select the whole nroff paragraph. Here, I am searching for some random text in a lorem impsum and I want to get the whole line where the matched text is: I will implement actual text manipulation facilities in the near future. |
|||
|
|||
That is really interresting! This is a radically different approach to "shell scripting" there, that is more text-oriented than today's shell!
Can't wait to see how it evolves. |
|||
|
|||
Happy New Year nixers, I'm back again with status updates.
https://github.com/tudurom/usam it's public now. Read the readme! I implemented basic editing commands (a, c, i, d) and a basic loop (x). You can also do text manipulation on a pipe to better integrate the thing with the shell. The programs don't read from the pipe while data is written to the pipe. The data must be written, then the programs read it. It's a known limitation. |
|||
|
|||
(03-01-2019, 12:07 PM)tudurom Wrote: <span>Happy New Year nixers... Happy new year tudurom! usam looks extremely cool. I recently read the sam man page (or some page about it on catv), and this take on regexp have to be great. I haven't really started using it myself, but thought that i will force myself to get used to it (sam saturdays) and then try to implement it (with it i mean what you have done with usam basically) in my favorite editor, Sublime (yeah i know, muh freedom...), as a package. I guess that implementation will be easier with either, using usam directly or porting some functions to python. |
|||