
Show HN: Strukt – a visual shell for tabular data - ken
https://www.freerobotcollective.com
======
fiatjaf
Before you think about doing a demo version or whatever, I suggest that you
make a video screencast. Or multiple small video screencasts.

------
chenster
The UI somehow reminds me the Tableau [https://www.tableau.com/new-
features/10.0](https://www.tableau.com/new-features/10.0) but much more
keyboard friendly by leveraging *inx command line. BTW, Tableau is a $6B
industry.

I too agree with putting up a screencast or a free lite version.

------
garyclarke27
Looks v interesting and tempting to buy, but lack of documentation, videos and
trial put's me off. You don't even say how much it is?? Just a broken app
store link, that doesn't work on iPad. If you add Postgres data source I would
probably buy sight unseen. If you add a simple form builder that can call
Postgres functions (Not direct to table) for basic CRUD I would most definitly
buy and happy to pay $200+.

------
vinceguidry
I purchased it sight unseen.

I'd love to see database interfaces added, so I can pull from and dump
directly to a database, but this looks really cool!

~~~
ken
Thanks! Is there a particular database you're interested in? I have about 5 on
my to-do list, for the near future, but the order of implementation is still
flexible.

~~~
vinceguidry
PostgreSQL is the only one I use really. Would be great if it could accept a
connection string.

~~~
ken
Good news: that's at the top of my list already! I'm also planning to have
some way to easily save/reuse data sources (like connection strings) to
accompany this, because you're not going to want to type in a connection
string more than once.

------
mrmondo
Looks really interesting and really pleased to see it's a native app and not
javascript in a web frame, thanks for taking the time to start this. The price
is quite high though - do you have a demo?

------
wizzard0
If it really works as advertised, I'd happily purchase it right away. But I
need Windows or Linux version.

~~~
Void_
How about Plot.ly?

~~~
wizzard0
I'm mostly interested in rich data retrieval/query building UI, and Plot.ly
seems focused more on the second part of the problem, where your datasets are
already prepared.

------
Void_
This solves a slightlu different problem, but with a very interesting
approach:

[https://median.tech](https://median.tech)

~~~
ken
Agreed, on both counts. Someday I hope my charting module is as slick as
theirs!

------
neoCrimeLabs
This looks potentially useful and I would love to give it a try.

Any chances of supporting an operating system other than OSX in the future?

~~~
ken
It's a native Mac app, but the backend and frontend are pretty separate, so
it's not out of the question. That said, it's not a high priority at this
point, and it seems like it would be a ton of work, especially for just one
person (me).

A secondary concern is that, because it takes advantage of the Mac's built-in
frameworks, there are some things which look rather difficult to me on other
platforms. I can probably find a replacement for MapKit, and maybe QuickLook.
The features of Spotlight I'm using seem to have no analog on any other
platform. GCD is open-source and there seem to be some forks that have ports
but I'm not sure what the status is.

Overall, I'd rather provide a great experience on one platform than a mediocre
experience on several. To do cross-platform well, even if you're using a
cross-platform UI framework, you really need at least one person dedicated to
each platform. I would not be able to do justice to a Windows version at all.

Now, if anybody out there is interested in investing so I can hire a team of
people to help me do this, I'm all ears. :-)

~~~
ljw1001
If you don't mind sharing, Im curious what library you used for the charts?

~~~
ken
I wrote it myself. One of my key features has always been that everything is
streaming (unless it's algorithmically impossible, like Sort), and I couldn't
find any Mac charting widget that supported streaming input.

That's why its feature set is rather minimalist. I'm not opposed to using a
third-party charting library, if there's a good one that supports what I need,
but at the time I wrote that, there wasn't.

~~~
ljw1001
Very nice job. I've looked for mac plotting libraries and couldn't find much.
Hence the question

------
sandGorgon
Check out Handsontable or Ag-grid. This is a market you can address and sell
immediately too. Lots of us are keen to build internal tools that do
spreadsheet in the front end and server on the back end. If you can build a
turnkey aoliti2for the web (with an API), that's easily monetizable.

~~~
warpech
What is aoliti2for?

------
wellpast
Looks interesting. I would love to use over some of my sqlite data.

Unfortunately $30 is too steep for this with no reviews and no demo version.

~~~
ken
I think $30 is fair, considering the work I put into it. What price would you
be willing to pay for this?

For a demo version, in what way would you expect it to be limited? I've
considered making a demo version (or making it free with IAPs), but databases
would be the first thing to go. Would that still be sufficient for you to
evaluate it?

~~~
ejfox
Personally, I'd prefer a 14-day trial with all functionality that stops
working after the allotted period.

~~~
ken
How do these work? Does it drop a secret file on your computer somewhere that
says "installed at timestamp X"? Does each download include "downloaded at
timestamp X" as part of the app (so the user can just download it again)? Does
it send some piece of data back to the server saying "person X started the
trial at time Y"?

I'm leaning towards a partially-featured free version that works for all time,
but I'm willing to be convinced otherwise.

~~~
reitanqild
_How do these work?_

Some alternatives:

\- secret key file

\- some kind of hashing/crypto. Something like a hash of
<email>:<version1>:<yoursecrethash> and check against the customers keyfile.
Advantage: the file doesn't need to be secret, customer will have to sign up
and get a keyfile by mail. (Of course those who want to hack will just find
and nop out the relevant assembly instructions)

\- check online for valid license (can be also be patched out easily unless
you really put some effort into it)

\- of course there is hardware keys which again can be easily circumvented
unless you put some effort into the implementation

 _I 'm leaning towards a partially-featured free version that works for all
time, but I'm willing to be convinced otherwise._

Disadvantages on time limited:

People will find a way to reset all settings, reinstall and use it for another
14 days.

Disadvantages on feature limited:

Those who only need the limited feature set has it forever - those who need
the extended features won't get a chance to test them.

I'm leaning towards full featured, time limited. Those who want to hack it
will havk it anyway.

------
DEinspanjer
Why does it want to access my contacts?

~~~
ken
It has data source operations for listing Contacts, Calendars, and Calendar
Events.

One of the main drivers for this project was that a lot of my data was trapped
in these custom data stores, and I wanted to be able to access everything from
the same place. (Why _can 't_ I grep my calendar events?)

It only reads these when you explicitly use these operations, and it never
writes to them.

~~~
lgas
Probably better to wait to ask for the permission until someone is attempting
an operation that requires that permission.

~~~
ken
Ohhh ... is it asking you for permission, when you first start the app? That's
not cool.

I can see why it would do that, but that wasn't my intention. That should be
easy to fix. Thanks!

UPDATE: OK, confirmed, and a fix is ready. 1.2.1 will not ask to see your
Contacts until you use the relevant operation.

------
fiatjaf
Man, this is amazing.

If I manage to get some time I'll surely work on an open-source version of
this based on jq.

------
DEinspanjer
Well, I didn't do too well.

I saw the welcome screen offering to let me read the manual. I like manuals,
but I figured I'd poke around first.

I clicked on each of the samples, but none of them really appealed to me. The
closest was the "Hot Cities" one.

I then tried to load a file to look at.

I hit enter and got a new operation, typed file and saw "Load File", but
couldn't figure out how to enter the filename. :(

I did lots of enter and tab and such, but finally gave up and opened the
manual.

After reading through it, I discovered that I was supposed to use - to select
an argument and = to enter a value for it. _Still_ not quite used to that, but
I'll say you really need some sort of intro tooltip to help people figure that
out.

So, I entered the filename, and it gave me the little orange minus flag.
Clicked it and saw it didn't have authorization. Clicked the Help question
icon and read that I had to predefine a list of folders it could access. I
haven't purchased too many Mac Store apps, maybe this is some limitation of
that, but I've never had an app before that couldn't access a file without my
first telling it where it was allowed to look. Is that really necessary?

So I added a data directory to the allowed list and then I saw the contents of
my file. Yay!

This file is a dump of a Kafka topic. It has a line per record, each record
has a JSON key, a tab character, and then a JSON value.

So, I went to add the second operation to my pipeline. The first few tries, I
kept overriding my Load File operation, but then I got the hang of using the
down arrow to get a new one. I have an outstanding question on how to insert
one between two steps, but I haven't needed to do it yet so I haven't
experimented.

I first tried to use Split String to break up the key and value fields, but
found I couldn't enter a tab character either via \t or by pasting it. I saw a
note that said not to use Split String for CSV or TSV, so I next tried the TSV
operation.

TSV was able to break it up into two fields, but I don't have any control over
specifying the keys for the fields, it just automatically eats the first row
of data and uses it as the key name. :(

So I poked around looking for a way to fix that, saw the option to change key
names, but that wouldn't get my first row of data back, so I opened the file
in Vim and gave it a header.

Came back to Strukt and reloaded. I then tried to add a Parse JSON operator.
First tried to point it at the "key" field, got nothing back, so I tried the
"value" field. Still nothing. Hitting the Play button takes 1.85s but returns
zero rows. No indication of what went wrong.

That is where I stopped cause I have work to do.

Sorry that this is kinda a negative review. Don't let it get you down, there
is a lot of promise in the concept and interface. Feel free to poke me for
further info if you need it.

I'm coming from the world of Pentaho Data Integration and command line
utilities, and I love playing with data apps.

~~~
ken
Oh, missed this one:

> I first tried to use Split String to break up the key and value fields, but
> found I couldn't enter a tab character either via \t or by pasting it. I saw
> a note that said not to use Split String for CSV or TSV, so I next tried the
> TSV operation.

That's strange. You should be able to paste a tab character in a flag value.
You can also type it directly, using the Mac way to enter tab characters in
text fields: option-tab.

------
hprotagonist
>Your connection is not private > >Attackers might be trying to steal your
information from www.freerobotcollective.com (for example, passwords,
messages, or credit cards). NET::ERR_CERT_AUTHORITY_INVALID

~~~
ken
Can you give me any details about your setup? I can't reproduce this here,
with any browser.

------
willcodeforfoo
Looks very cool, would love to play with a demo before dropping $30 though...

------
aetherspawn
Looks great, was tempted to buy. Need a video/demo version .. or a limited
trial, or something.

Also, database support for MySQL, MSSQL and postgres would be the cherry on
top.

Does it support REST (json or even xml)?

~~~
ken
It has a "Load URL" operation, which can be used to GET resources. (You want
arbitrary verbs, I assume?)

It has a "Parse JSON" operation, though some people here have run into some
limitations of that. Next week I will have better JSON support!

It doesn't really support XML parsing yet. It can get data from HTML tables
and lists. There's a lot of possible ways to convert a tree (XML) into a
table, and many are not useful, so I'm going to have to give this some
thought. If you have an example of an XML document or API response that you'll
want to parse, that would be super helpful.

------
ummjackson
This looks fantastic. Agree with others that a trial or free version would be
great to test drive it.

~~~
ken
I agree that a trial would be great. My only excuse is that I'm (so far) just
one person. Not enough hours in the day! But message received.

------
avalonalex
Is is possible to use css selector to pick up content from html?

~~~
ken
Unfortunately, no, but that's a reasonable request. The only ways to get data
out of HTML right now are from a table or list.

------
beyondcompute
Can’t use it because it requires too new a MacOS version :)

------
positivecomment
They could have used Electron or Qt and supported all platforms. Also, why not
offer a trial version?

~~~
ummjackson
Handling and manipulating data in an obfuscated web environment (Electron) is
not fun. Native will undoubtedly offer better memory handling and performance.

~~~
yellowapple
Then use Qt, which is native and cross-platform.

~~~
fiddlerwoaroof
I find qt on mac to be really unpleasant.

