Any ideas for a new project? - Programming On Unix

Users browsing this thread: 1 Guest(s)
tudurom
Long time nixers
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.
jkl
Long time nixers
There are already too many shells.

Hmm, a Gopher client?
tudurom
Long time nixers
Doesn't matter if they are too many. I would take it as a research project. Much fun!
pranomostro
Long time nixers
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
interactive mode
-normal readline like behaviour (but using something simpler, like
        linenoise/dietline)
-history file is loaded during startup
-<text>[UP] shows the last command containing <text>, again [UP]
        the one before that, and so on
-<word1> <word2>[TAB] expands <word2> into the last word (string separated
        from the others with a newline/space) beginning with <word2>
-no input for more than half a second/a second shows a suggestion
        of the last command beginning with the current line.
-ideas for speeding it up:
        -use char** for storing each history and words
        -benchmark and optimise, of course

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],
[G] and [/] for searching, with [n]ext and [p]revious match
support for arbitrary length files, loading lazily, unicode is displayed properly,
big lines are dealt with properly.

nager:

Code:
sxhkd for the mouse. syntax:
[MOUSEEVENT] [, MOUSEEVENT]* COMMAND

pau:

Code:
plan9 alt unicode. implement plan9 style unicode typing
with the alt key. have a simple configuration file for it.
similar to the plan9 description file.

bnf:

Code:
program that accepts one backus-naur form grammar and checks if it's
input or other files match that grammar. read into parsers and stuff
like first, evaluate if myrddin might be a sensible choice for that.

cap:

Code:
simple language for assembling different files into one. syntax very
sed/ed like, mostly like this:

    [line,]line@file[<|^|>][line,]line[|comm]

where line is a regex enclosed in '/' with an optional number suffix
or a line number, file is a filename and comm is a shell command in
single quotes.  the text from each file is inserted into a buffer and
printed at the end of the cap script.

sif:

Code:
simple text processing filter that takes only one instruction
(single instruction filter). the instruction should have the form

    [^]/str/[,[^]/str/]((a|i|c)/str/)|d|p

str is a literal string here (no regex), sif does not do
input/output buffering and does treat whitespace as any
other character.

a=>append, i=>insert, c=>change, d=>delete, p=>print. '^' means
that the following str is excluded from the matched text.
normally, everything is printed, unless the option '-n' is used.

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...
pranomostro
Long time nixers
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.
tudurom
Long time nixers
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.
z3bra
Grey Hair Nixers
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
pranomostro
Long time nixers
redo has been done already: https://github.com/chneukirchen/redo-c
z3bra
Grey Hair Nixers
(10-11-2018, 01:33 PM)pranomostro Wrote: redo has been done already: https://github.com/chneukirchen/redo-c
So has mk. That does not mean it cannot be done again :)

Diversity in implementations is the key to solid software!
Steph
Long time nixers
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.
pranomostro
Long time nixers
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.
Steph
Long time nixers
(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.
jkl
Long time nixers
I know of no single GNU tool that was not just reinventing the wheel.
Dworin
Members
(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.

Im slightly addicted to project Euler.
Project Euler *is* very addictive. I started using sagemath but had to drop it for lack of time.
Steph
Long time nixers
(11-11-2018, 08:45 PM)jkl Wrote: I know of no single GNU tool that was not just reinventing the wheel.

For the GNU project:
The license > the software

They don't care about reinventing the wheel as long as its under the GPL
jkl
Long time nixers
Which is quite a pointless thing.
tudurom
Long time nixers
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!
jkl
Long time nixers
Make it a graphical shell with sam's window system!
tudurom
Long time nixers
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:
  • e - this one opens the file for editing
  • ca - changes the dot
  • p - prints the contents of the dot

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.
[Image: dgyQ.png]

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:

[Image: epGJ.png]

I will implement actual text manipulation facilities in the near future.
z3bra
Grey Hair Nixers
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.
tudurom
Long time nixers
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.
budRich
Long time nixers
(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.