

Induction: A Polyglot Database Client For Mac OS X  - matttthompson
http://inductionapp.com/

======
phillmv
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)

~~~
josephcooney
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).

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

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

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

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

~~~
hinathan
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)

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

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

~~~
tikhonj
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...](https://www.surveymonkey.com/sr.aspx?sm=2RYrV_2bFw2aZ2RfedWHNW_2f0DgNnatyQnvvrorWEYhuAQ_3d)

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

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

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

~~~
matttthompson
Builds are available at <https://github.com/Induction/Induction/downloads>.

~~~
lux
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 ;)

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

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

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

~~~
matttthompson
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)

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

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

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

------
dguaraglia
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)

~~~
matttthompson
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)...

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

~~~
matttthompson
Yeah, that should do it :)

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

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

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

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

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

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

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

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

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

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

------
bokchoi
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/>

------
sheraz
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!

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

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

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

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

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

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

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

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

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

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

~~~
methoddk
Theres a binary hosted on the github page somewhere.

------
TomatoTomato
Is there a visual query designer?

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

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

