Share alpha, beta..., release projects

How to share alpha, beta…, release projects

First

First of all I must express my deep gratitude to all folks involded in the the progress of Crystal. I really appreciate the quality, speed, the possibility to implement algorithms and information structure so they become understandable! without any technical wrapping like in other compiled languages.

How to

At the moment I have a project in some kind of pre-pre alpha state. Poor source documentaion, poor README, poor formal verify but strong working!

It is not at all a good example of a well developed Crystal project at the moment, so there is a risk it might cause a bad reputation if one publish it on a hub. So how to share? Other forum than github, more modest perhaps?

I have no intentions to maintain it as git but will probably publish a full replacment only. Cloning not meaningsful but download .zip possible will work. Of cource I look forward to discussion via issues…

Why share a certain project early

The project holds some intresting solutions I think…

Of cource it’s about SQL. At my age, 75, one must have built a pocket SQL at least. It is quite comprehensive actually. A grammer to parser generator, code generator and and executor. Most elements in SQL query part is implemented like CTE with Recursive, subquery wherever accepted, join, group by, window, aggregate and standard functions, set operations, values, having, limit, order by, comments.

Queris can be compiled and saved for later resuse as precompiled queries. Faster and smaller footprint.

It is memory resident only. No disk wites (at the moment).

It will load one or more files in csv style with ... FROM 'ACSV.csv' AS ONETABLE ...

There is a loose branch in project with full referential integrity (foreign key) algorithms on insert, update and delete. Thoose integrity index can also be utilized in joins and where.

Example

You collect a lot of files on disk during years. Now and then, at move to new hardware, you need to clean up somewhat.

There is one target in the project which will scan all filenames for a folder and downstairs
and pick some attributes and write them to a csv file.

(This is a kind of saving about from ls, fd, exa or similair tools)

list = Dir.glob("#{dir}/**/*")
  list.each { |file_name|
  fileinfo = File.info(file_name)
  ...
  "dir,name ... ">stdout
  }

I used that .csv to ask about duplicates, filenams like ‘copy’, ‘Untitled’, same name and size (and date), huge directories using plain SQL!

The file holds some 130 000 rows (files) . Most questions was answered below 0.5 sec (using unix time only) print result included and debug built.

The directoy (on Macos) for brew is /opt/homebrew and holds some 80 000 files. Took 1.91 to scan.
Interesting scan!

Theese targets can be built today the standrad way with shards. No hands on.

Again

I’m looking for aspects on how to share software which is in pre alpha. Or not share at all until beta?

/willy

1 Like

Since you are working on an app, and not a package, I see little harm on publish on github the work in progress as long as it’s stated in the README what’s the repo about and what to expect. Even if it’s just for sharing and gathering feedback.

Regarding dealing with csv with sql, you might enjoy csvs-to-sqlite - a tool for Datasette , but do keep playing with Crystal

1 Like

Thank you for that distinction app/package. Of course I look into other solutions around the topic.

And keep playing with Crystal? I’m kind of obsessed. Comes with age

4 Likes

Friends.

I recently published a rep https://github.com/willy610/pocketsql mainly on EAR (Entity Attribute Relationship) and how to implement that using SQL.

Full SQL Data Manipulation on csv files. Optional Referential Integrity FK using Schema. crystal all the way!

It’s not a release but more shared experience, but working, source. I’m sorry for running kind of off-road. Hopefully one can inspire folk in there doings and not hesitate in there advanced ambitions.

3 Likes

I’ wish more developers published repositories of pre-alpha, not-even-drawing-board-just-rough-ideaware. From a well-developed repo, an experienced colleague will be inspired to … what? A very similar idea?

From a collection that’s well shy of release candicacy, others can feel freer to let their imaginations run with it, I think.And the bumblers like me? We might feel encouraged because every project might resemble ours at some very early stage.

1 Like