top | item 14472716

(no title)

DEinspanjer | 8 years ago

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.

discuss

order

ken|8 years ago

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.

ken|8 years ago

Thanks! First-time user feedback is incredibly valuable, and hard to come by.

> After reading through it, I discovered that I was supposed to use - to select an argument and = to enter a value for it.

You can also double-click the right part of an operation. I agree, though, on-boarding is one of my weaknesses right now.

> 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?

I'm having a little trouble unpacking the triple-negative here, but basically, yes. The Mac App Store requires sandboxing, and the sandbox prevents the app from accessing a file until the user shows some intent to access it -- like by drag-n-drop, or a system Open File panel.

There are some exceptions, like public files in /System, or if an app has the "com.apple.security.assets.music.read-only" entitlement then it can read your ~/Music folder. In the general case, though, an app can only access files once it's been given explicit permission.

(Oh, and in case you didn't try this: you can drag-n-drop a file onto the Strukt icon in the dock, or into an existing pipeline window, and it'll add the appropriate "Load File" operation, and also automatically add that to the list of authorized files. I do try to save you a step, where I can.)

> 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.

You can use control-O (like Emacs -- or Mac text fields) for this. It's also in the Edit menu, though one thing I've learned recently is that nobody looks in the Edit menu, so I'm working on some alternative methods that are more discoverable.

> 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. :(

Good point. CSV/TSV don't actually mandate that the first line contains headers (even though it often is), so those operations should let you bypass that functionality.

One hacky workaround, for now (which I admit there's no way you would have guessed): you can use "Literal Value" with string="foo<tab>bar" where="before" to prepend a line to your data, before the Parse TSV operation.

> 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.

Hmm, it looks like my JSON parser is expecting an object at the top-level, and doesn't seem to work with an array, or anything else. It should really be more lenient.

I do want to have native JSON support (not just strings, or atoms) someday. If you have a sample file you can share with the structure you've got, I can make sure it works well. I'm not familiar with Kafka but "JSON-in-TSV" sounds like exactly the sort of thing I should support.

> 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.

I don't take it as negative at all. You took a chance on a new app, and even when it failed for you, you took the time to write down exactly what I need to do to make it better! I wish everybody did that. This is my favorite comment so far, because it's loaded with actionable feedback.