Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Induction: A Polyglot Database Client For Mac OS X (inductionapp.com)
283 points by matttthompson on March 5, 2012 | hide | past | favorite | 82 comments


Serious question:

Can't someone just add database drivers to Sequel Pro? It's far and away the best Database GUI I've ever used and its reliance on MySQL is actually keeping me from moving to PostgreSQL full time.

(i.e. http://www.sequelpro.com/ and http://www.sequelpro.com/docs/Source_Code - a little crazy they're still on SVN but oh well)


God I would love this. This really is the best GUI DB client. I use Navicat for PGSQL but its not free and its quite clunky (though to be fair, very powerful). In any case, SQLite and PGSQL support are supposedly in their roadmap.


It's open source, so anyone can add their own db drivers to it. The problem, as with other open source projects, is that the task is not trivial. (I tried to patch Sequel Pro last year) Which is also why I don't buy the oft-quoted benefit of OSS being that you have access to the source to fix/add things. BS.

Oh yeah, last time I checked, Sequel Pro doesn't build in XCode 4.


  > benefit of OSS being that you have access
  > to the source to fix/add things
The place where this is the most beneficial is when considering businesses looking to invest in a technology. If you invest in a company/software product that goes under, then you could be saddled with a piece of tech that you can't fix bugs for, etc. If it's open source you at least have the chance to do so, even if the community around it collapses and there is no new development.

The idea that access to the source is some sort of cure-all is a fallacy, but it may also just be a straw man. I don't know that anyone says that all open source projects are going to be manageable just because the source is available, but they are by definition more manageable than a project with no source available.


It's certainly not a small task, but an issue is open here:

http://code.google.com/p/sequel-pro/issues/detail?id=362&...

Developer input from mid-2011 is towards the bottom, but in short the gist is "that would be great, contributions welcome".


Blargh.

If only it were as easy as `gem install pg`.

I would totally throw $20 at a kickstarter to pay someone. That's what, optimistically? Two weeks of work? How quickly could we scrounge up $10k?

Shit. More like $100, now that I think about it.


> If only it were as easy as `gem install pg`.

It is with MacRuby, but that's a whole different set of problems :)


And with GC on the way out in OS X... MacRuby has their work cut out for them.


GC is on the way out? I haven't heard that before... have a link?


End of the page here: https://developer.apple.com/library/ios/#releasenotes/Object...

Apple highly encourages using ARC over GC for new development.


Well yeah. One is compiler-assisted reference counting and the other is garbage collection. Reference counting is nearly always faster than garbage collecting, and Apple has generally been a bit obsessed on speed, for however much that has gained them or lost them.

Their wording there is suspect though. Interesting - thanks for the link!


Reference counting is generally quite a bit slower overall than stop-the-world garbage collection.

I guess you meant latency, where reference counting generally has better latency than incremental garbage collection.


I've never used Sequel Pro, but I've used plenty of other RDBMS GUIs. What's so special about Sequel Pro? It certainly doesn't look like anything to write home about (compared to say the MS SQL tools).


I'll take a shot:

1) Every GUI function results in a SQL log entry so you can learn/improve your SQL if you're not a guru.

2) You can give this to an analyst (whose db user is restricted appropriately) and have them be productive in adding and updating data.

3) Any view can be exported to CSV, so the analyst can use what they know (ie, Excel) to do things you might not care about but are important (ie, pivot tables, etc).

4) It's free.


Thanks for the list. Those are nice features. The SQL Server tools can do all that (except the free part, but the cost of the client is kind of included in the SQL Server license cost). Still, sounds like a nice app.


I can't speak for the MS SQL tools. I used one of them once? and it was extremely lame but I can't comment.

Compared to every other RDBMS GUI I've used:

It crashes very infrequently. It doesn't randomly slow down whenever I click on something. The settings page is relatively straightforward. There aren't fifteen different windows with different functions. The UI makes sense and is also very straightforward.


re: MS SQL Server tools and lame - really? The SQL 2000 tools were pretty basic, but since about 2005 they've been pretty good. I'd be interested to hear what you found lame. I guess maybe you were using something else from MS' cornucopia of GUI database tools (a plethora of wizards inside visual studio, access etc).


Heh.

So, I was rescuing an MS Access application that imperfectly synched from a MySQL instance powering the Rails app from which it got data, that had been exported to MS SQL that was running (surprisingly well) inside a Windows XP VM I was accessing via Remote Desktop Connection.

So: I have no idea. I totally forget. It was some really-complicated-looking MS tool that allowed me to look at the table row by row and run some queries :). The guy I was working for set it up; my excuse is I stopped using windows back in 2004.


There's nothing particularly special about it, except for the fact that it just works significantly better than any other RDBMS GUI program I've ever used. The UI is great, it's fast, it's simple to use, and I've never found a feature I needed that it doesn't already have.


I would hope there are more reasons that a particular client app that determines your platform choice.


Of course there are.

How easy it is to install and maintain. How performant it is. How good are the tools associated with it.

I've yet to run into a situation where MySQL was holding me back. Since the only thing postgres has got going for it, from my standpoint, is that my friends prefer it and it is cooler… I think that until I have a better reason I will stick to the one with the better toolset.

Right now, Sequel Pro is that tool. I use it almost every single day.


This idea is friggin awesome and definitely something I'd pay for. My apps are pretty evenly divided at this point between MySQL, Postgres, and MongoDB, and I don't see that trend going away any time soon (we always pick the db that makes the most sense for each particular project). Having them all available in the same app would be amazing.

With that in mind, just to warn everyone, this is very alpha-level software. It only supports postgres and redis right now. If you put the wrong credentials in, there's no feedback, it just seems like nothing happened. Also, trying to resize the window turned everything white for me and the app had to be rebooted.

If you decide to use it (and please do, because I want this to work), be sure to have your Mac's system log opened in console, so you can see what's going on.

UPDATE: Looks like someone has already submitted a pull request for the "no feedback on wrong credentials" bug I mentioned [1], and I created a ticket for the resize issue [2].

[1] https://github.com/Induction/Induction/pull/8

[2] https://github.com/Induction/Induction/issues/10


"for Mac OS X" breaks my heart, because this is exactly the kind of open-source DB client I want on Linux.

At least I can use this when I'm on my Air, but I recently went looking for a multi-DB client app like this for Linux, and this looks like what I was wishing I would find.


Written to what API? Gnome, X, Qt? You'll be addressing a slice of a fraction of potential users. It'd be great if it weren't the case, but the diversity that makes linux interesting to hackers also makes it really tough to roll out GUI apps like this and have it 'just work'. I get the sense that's a good part of the appeal of OS X for the developer community lately - mostly Linux-ish when you need it, but a unified GUI experience for the pretty tools (e.g. TextMate, Base, and so on)


That's just patently untrue: either GTk or Qt would work perfectly. I don't see why the desktop environment would matter--the program doesn't have to (and probably shouldn't) care whether I'm on Gnome or KDE or Unity.

Moreover, all the popular environments support both GTk and Qt fairly well, and both are cross-platform, so you would actually be supporting more users than with a Mac OS-only program.

Really, fragmentation like this is not nearly the issue people make it out to be. Basically, everybody can use everybody else's programs on Linux, with the exception of very odd or customized systems. And the sort of people who have very odd and customized systems can fix problems themselves.

EDIT: Also, you could use wxWidgets. That would give you a native look on all the platforms you support.

I would also like to clarify that I understand an OS X user wanting to write an OS X-only program. The real issue is dissuading others from supporting Linux because of non-existent fragmentation issues. They simply do not affect people using GTk or Qt, in practice.


> Moreover, all the popular environments support both GTk and Qt fairly well, and both are cross-platform, so you would actually be supporting more users than with a Mac OS-only program.

By that logic Windows should be first since it has the most users. Also, are you sure that the installed base of Gtk+ or Qt (or both) is greater than the installed base of OS X?


Well yes, because unless I'm much mistaken, Qt and GTk are both supported by OS X so they are both supersets. (This is obviously ignoring Windows, which is also supported by Qt and GTk but is probably difficult for other reasons.)

There are also cross-platfrom native options like wxWidgets. These also work both on Linux and other systems.

Finally, the last StackOverflow survey[1], which I think is pretty representative of the sort of people who would use a program like this, had both Linux and OS X at about the same level (~20% each). So Linux is certainly not negligible.

[1]: https://www.surveymonkey.com/sr.aspx?sm=2RYrV_2bFw2aZ2RfedWH...


Qt works just fine on *nix, Mac, and Windows. GTK+ isn't quite so nicely polished, but is still viable on all three.

Installed base is irrelevant if you include the libraries or statically link. You'll bloat your download a few MB, but it's manageable.


I wasn't taking anyone to task for not building it. I was saying what I, as a user, wish I had available to me for my primary dev environment.

I don't care what toolkit it gets built in. I typically use Gtk-based environments and stick with Gtk apps but have no problem using a Qt or other toolkit app when it meets a need.


"Written to what API? Gnome, X, Qt? You'll be addressing a slice of a fraction of potential users."

Both GTK and QT are available on OS X, Windows, and Linux. Cocoa is available on OS X only.


> Both GTK and QT are available on OS X

For very, very low values of "available", especially when it comes to GTK. If you're going to release a GTK application for OSX, you can just step the release part entirely.


Nobody targets X as an API anymore and haven't since Tk, this is a canard.

In general, given the demographics of desktop Linux, it's safe to assume everyone has GTK and Qt working, so pick whatever suits you and go for it. (Spotify is Qt IIRC)


Honestly it wasn't meant as a canard — this was basically my thought process when I was thinking through an app idea. I'm surely uninformed and some of that is a function of my own laziness, but it's also a reflection of how much diversity there is. I feel like it's akin to Kissinger's rhetorical (at the time) question "Who do I call if I want to call Europe?"


>"Who do I call if I want to call Europe?"

You just pick whoever people listen to at the time you make the call. In this case, GTK and Qt have been calling the shots and all Linux installs worth targeting are going to support them or support installing the dependencies necessary (which you can specify in your package, as spotify does).

Flailing about and perpetuating this myth that Linux is impossible to target just makes things worse.


I imagine this should be quite easy to build with JavaScript and lightweight Node.js server.

If somebody was going to work on something like that, I would love to help. Mail in the profile.


Try Navicat. Works cross platform and is extremely powerful and robust. Best GUI RDBM I've ever used.


I just wish it worked in OS 10.5.x ...I'm not interested in installing SL or Lion on my Air and demolishing my current stack.


Isn't this just reinventing ODBC?

Back in the day you could whip together an app like this using Borland's dev tools in literally a matter of minutes, and it worked with any data source configured on your system.

And I think there's a YouTube video that has Steve Jobs demoing that same sort of data access using only Interface Builder on NeXTSTEP.

What am I missing?


ODBC is fairly complex (both to work against and to implement providers for) and is very much tied to relational databases.

It's also unevenly implemented: On Windows there's native Microsoft-provided ODBC (but in terms of focus it has been superceded by ADO, which superceded OLE DB, which was supposed to be the replacement for ODBC — it's not like Microsoft ever settles on a single technology), and on Unix there's UnixODBC. I don't know about the driver quality; I suspect Windows ODBC drivers are quite good, whereas JDBC has been favoured by the server/enterprise world for a while, and I would not be surprised if UnixODBC drivers were a bit behind the times.

As for the Borland dev tools, they also used their own proprietary data source tech: The BDE (Borland Database Engine), which had an ODBC bridge built in. I remember being quite fed up with the BDE at the time, and eventually started using a set of native ODBC components that someone developed.

Cocoa does have a sort of rich data framework that you refer to: Core Data. Unfortunately it's quite complex, and not really designed to be a common interface to databases, but rather a sort of data abstraction layer where you work with objects and never see any SQL.


Does anyone have an actual build of this? I just uninstalled XCode this morning and replaced it with Apple's new CLI dev tools, otherwise I'd try building it myself.



The built copy only seems to support PostgreSQL and Redis, but the site mentions MySQL, SQLite, and MongoDB too. Is that coming soon?

Edit: I could have answered this question for myself by reading... Skimmed the line that explains that on the site and just caught it now. Oops ;)


I didn't notice the note at first either. They should probably revise the whole sentence to make it clearer that it doesn't yet support those "out-of-the-box" instead of a note afterwards.

I'm yearning for the MongoDB support myself.


Ah, nice, they weren't there when I first checked but now it's there. Thanks!


no love for 10.6.8, Lion only


Came here to ask this exactly. Thanks!


I'd do this myself if I had time, but I'd love a homebrew formula for this.


Wonder if I'll be able to get this working with Oracle. Unfortunately (believe me, I've complained and hope to change it in the future) I have to use Oracle at work. Would love to use this.


Oracle support would be very awesome (and hopefully very possible). I designed the protocols to be extremely simple; check the Postgres one for an example (~500 LOC)


Looks interesting, but there are no binaries and the XCode project didn't compile right away.

(I guess, being a software developer, I should go and try to figure out what's breaking the building process. On the other hand, I've never used XCode and don't know enough about OS X library management to figure out broken deps)


Sorry about that!

Binaries are up at https://github.com/Induction/Induction/downloads

Let me know what build errors you're getting. I would do well to document the requirements (Postgres, Redis)...


I'm getting lots of "Unknown property attribute 'strong'" type errors (which I suspect would go away if I upgraded to XCode 4.2?)


Yeah, that should do it :)

Induction is my first real project with ARC, so I'm figuring this out as I go along.


Looks very interesting. Unfortunately binary doesn't run on osx 10.6.8. Requires Lion :(


The XCode project compiled and ran straight out of the box for me.


I wonder if this could be used to hook up something Excel-ish to a DB backend.

I use Excel frequently to model and ask "what-if" questions but I often wish I could store/retrieve information dynamically from a DB. (The ODBC connectors that Excel has leave much to be desired).

For my use case, that would be the holy grail.


This commercial solution seems to be languishing in relative obscurity: http://www.querycell.com/


Somewhat off topic, but I remembered the author of this Excel add in's "Ask HN" when it first came out ( http://news.ycombinator.com/item?id=794317 ). 2 or 3 years later, it looks like he's expanded and now has 2 software products and a SAAS ( http://www.OakFocus.net/ ), so very inspiring.


For someone thinking about building a java version - this might help: http://schemacrawler.sourceforge.net/

(I don't think that it supports noSQL.)


I got it to build using Xcode 4.3 (with warnings), but since my Postgres user and database names don't match, I can't connect to my local database.


You can specify the database as the path of the connection URL. I'll add a field for that ASAP.


This would have been great when I was taking the Stanford DB class a few months ago.

I like it, looks much nicer than any of the solutions I'm aware of currently.


really interesting. im excited to check this out. what are you using for the data visualizations?


d3.js embedded in a web view. That's a sister project I'm calling "Lies, Damned Lies", and will include a variety of canned charts to plug into.


This looks like it might be less painful for simpler postgres databases than Navicat. Very cool.


RazorSQL is excellent too, and connects to lots of different databases through jdbc.


DbVisualizer is a nice RDBMS client that is cross platform, supports many databases, graphs table relations, and comes in a free or $$ flavor:

http://www.dbvis.com/


It should be noted somewhere that this project currently appears to only work on OS X Lion due to usage of a few Lion-specific classes, namely NSOrderedSet.


This is incredible! Kudos. I can't wait to try this out.


Thanks! It's super alpha, but I hope to iterate quickly.


Very cool. This is my current suite of DB apps:

- Navicat - PGAdmin III - SeqlPro

Looks like I will add this as a fourth. Big win on the visualization feature!


The list of 5 databases are precisely the set of database technologies used across my entire projects folder... Suite!!


This looks great! I maintain a number of PostgreSQL DBs so being able to visualize it locally will be a great resource.


I like the design on that landing page. The most relevant bits are also the most apparent.


Oh, I'd love it if it supported the Google AppEngine datastore!


If I could just marry something like this to DataGraph. Sigh.


This is freaking awesome and I can't wait to build it.


I'm lazy, where's the binaries? :3


Theres a binary hosted on the github page somewhere.


Is there a visual query designer?


What's the appeal of this? Just use SQuirreL or DBArtisan.


DBArtisan, while a very good tool, is expensive, and Windows only. It is one of the few remaining reasons I keep a Windows VM.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: