Show HN: Talk – A free group video call app with screen sharing - <AUTHOR> https://github.com/vasanthv/talk <comment><USER3> Is this different from or better than Jitsi Meet? Not intending to criticize the effort, just curious if I should switch my goto choice of video conferencing software.

[https://meet.jit.si/](https://meet.jit.si/)

<comment><USER4> Jitsi is built to run with a server managing the call. This is peer to peer, it appears.

<comment><USER5> It still needs a server to relay the webrtc peer discovery stuff, at least by looking at server.js ?

<comment><USER6> Setting up a Jitsi server is non-trivial; this is simple (git clone / cd talk / npm install / npm start). And, if you don't want to trust the programme, you can do this from a dedicated unpriviledged user.

<comment><USER7> I thought so as well. Ended up rolling my own and encountering too many sync and error-handling issues.

Ended up deciding to spend the week configuring jitsi, but all it took was 1 hour to install and configure the server and I was done

<comment><USER6> Was this using Ubuntu or whatever it is they recommend or ``manually''?

<comment><USER7> Ubuntu, just apt install or whatever it was

The development of the frontend is a bit messy, but you'll manage

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> Another fully featured group video chat: [https://talky.io](https://talky.io)

It's based on this open source app [https://github.com/simplewebrtc/simplewebrtc-talky-sample- ap...](https://github.com/simplewebrtc/simplewebrtc-talky-sample-app)

They also run [https://www.simplewebrtc.com](https://www.simplewebrtc.com) which is an SDK for building custom WebRTC apps. They also provide TURN and SFU servers.

<comment><USER9> This appear to be client side only (it can even be statically deployed) - <USER2> project in the submission is a client + server that handles signalling.

And,i dont quite understand this bit:

> To get started, you will first need to edit public/index.html to set your > API key.

So, for any service using talky, I can just steal the Api key rather than subscribing? I mean, it's in the _index_ file, not even protected by login, but sent to all clients (and bots..)?

</comment></comment><comment><USER10> Is this hosted anywhere?

I created [https://omen.tv/](https://omen.tv/) just last weekend. Similar in that it's powered by WebRTC, but it's designed for casting your screen (e.g. Jackbox Games) to other people's TVs.

My greatest annoyances with WebRTC were:

1\. WebRTC _requires_ a STUN server, and despite the spec initially supporting default ICE servers, it has since been pulled out into an extension because browser vendors don't want to provide servers[1]. There are free STUN servers (Google etc.) but...

2\. Double NAT clients. STUN is inevitably going to discover double NAT clients. The _only_ way to connect these clients is through a proxy. Specifically a TURN server. Unlike STUN servers, these are not light-weight, and I can totally understand why browser vendors don't offer them by default. So inevitably any WebRTC use still requires a self-hosted TURN server.

3\. Inconsistent access to streams across browsers. In particular the getDisplayMedia[2] API provides poor availability of the audio stream. Courtesy of Apple doing Apple things, I don't believe it's even possible to implement this API on macOS as there's no audio loopback device. I worked around this for my use-case by installing BlackHole[3] (which is great software!) However, the loopback device appears as an input e.g. like a microphone, so isn't technically the display audio.

For this all to be smooth I think all these pain points need to be addressed.

Issue 1 and 2 require NAT to be kicked to the curb, come on IPv6! Issue 3, requires Apple to expose a loopback device _and_ browsers to implement support. These aren't insurmountable issues, but they're unfortunately out of our hands as day-to-day devs.

[1] [https://developer.mozilla.org/en- US/docs/Web/API/RTCPeerConn...](https://developer.mozilla.org/en- US/docs/Web/API/RTCPeerConnection/getDefaultIceServers)

[2] [https://developer.mozilla.org/en- US/docs/Web/API/MediaDevice...](https://developer.mozilla.org/en- US/docs/Web/API/MediaDevices/getDisplayMedia)

[3] [https://github.com/ExistentialAudio/BlackHole](https://github.com/ExistentialAudio/BlackHole)

<comment><USER11> I was playing around to create something similar and these problems were EXACTLY what I bumped into. STUN is a must for discovery, TURN is a must if both people are behind NATs, Apple support is meh...

So, to sum up, for a webRTC p2p app you need to:

1-3) The things you mentioned.

4) Code your own signaling server to transmit events like "call", "hung up", "room" tracking, etc.

<comment><USER12> > TURN is a must if both people are behind NATs

This is not what double NAT means. If both people are behind single NAT, STUN is enough.

I think it is also enough if one person (or both) are behind more than one regular NAT, which is what double-nat usually means.

Where STUN doesn't work is symmetric NAT [1], where different destination servers will receive a packet with different source ports, even if the original source port was the same.

It also doesn't work in a few, lesser-used NAT types [2].

[1] [https://en.wikipedia.org/wiki/Network_address_translation#Sy...](https://en.wikipedia.org/wiki/Network_address_translation#Symmetric_NAT)

[2] [https://en.wikipedia.org/wiki/STUN#Limitations](https://en.wikipedia.org/wiki/STUN#Limitations)

</comment></comment></comment><comment><USER13> The JS code is under 500 lines so this is at least simple and auditable.

I didn't see anything about encryption based on a cursory read. Does WebRTC have some built in or is this unencrypted?

<comment><USER14> WebRTC requires DTLS (the UDP version of TLS) for the media streams; it doesn't even allow unencrypted.

The signaling for call setup / maintenance / teardown can be whatever, though. It looks like this uses socket.io with HTTPS long-polling. So you need a publicly-addressable IP (or a proxy service like ngrok) in order to host this yourself.

Assuming you host it yourself, all clients should have encrypted signaling with your server, and encrypted voice/video packets between each other. If someone else hosts it for you, they can see your signaling traffic, but -- unless they change the code to forward the media stream elsewhere in order to MitM it -- your media should still be encrypted.

However, this does make use of public STUN servers to help with NAT/firewall hole punching, which will leak your IP addresses and possibly make it so an adversary can figure out the IPs of the people who were talking to each other, based on the timing of connections. There are also public TURN servers listed which will act as media relays if the NAT traversal fails. Usually the TURN servers are dumb packet forwarders and won't terminate the DTLS sessions, so that should be fine, but I don't remember how the protocol works well enough (it's been a good 7 years since I was knee-deep in this stuff) to say that for certain.

<comment><USER15> DTLS is only the first part of the encryption. The actual media is transferred of SRTP which is encrypted RTP. DTLS provides the keying material to derive keys for SRTP.

DTLS is however fully used for SCTP, which the protocol for data channels alongside the media streams.

<comment><USER14> Yes, I'm aware (I've implemented a WebRTC stack before); I didn't think diving into the finer details of SRTP would be necessary at this point.

</comment></comment></comment></comment><comment><USER16> Amazing! I think this is the better open-source alternative to Google Meet and Zoom. Of course, this may not be filled with all the features offered by them, but this is more than enough for meeting 6-8 people at a time.

</comment><comment><USER17> Is there a video call app with screen sharing that doesn't use WebRTC?

I often host online lectures and with screen sharing, it always uses up 100% of my CPU resources.

</comment><comment><USER18> >>> quality of the call is inversely proportional to the number of people on the cal

Interesting experiment would be to run locally on high speed LAN with LOTS of participants. Whats the limit to what the browser can handle?

Thanks for building, vasanthv ;)

</comment><comment><USER19> Is this pretty similar to zipcall.io? I've used it a few times and was surprised with how well it worked for video calls and screen sharing.

Only problem I had with it was one client that couldn't get his mic working. I'm assuming it was a browser permissions issue but I called him on Signal instead rather than trying to track it down remotely.

</comment><comment><USER20> I am surprised to see a video call and screensharing app build with less than 500 lines of JS code.

Did not know that.

</comment><comment><USER21> WebRTC is amazing, until you start getting users on iPads. The complaints of the Firefox users are easy to ignore (there are so few of them, after all), but the iPad users are too numerous (especially within my company).

</comment><comment><USER22> here's a similar webrtc app, but free of node.js dependency [https://ba.net/screen-share-party](https://ba.net/screen-share-party)

</comment><comment><USER23> I don't know anything about STUN or TURN servers. I saw some credentials in the script.js file. Is it dummy or is it okay to make this public?

<comment><USER10> The original ICE credential APIs make approximately zero sense. Basically the clients need the password, so there's nothing stopping them redistributing it, making the whole thing rather pointless.

There's now support for third-party auth (i.e. oauth). It's not really fool- proof on its own, however you can at least then disable access to those who abuse the system. However, for this to work you need to have an oauth provider i.e. sign-in, which may be non-desirable.

</comment></comment><comment><USER24> Couldn't the double NAT STUN/TURN thing be eliminated if the solution was modified to utilize Wireguard on all the endpoints?

</comment><comment><USER25> I thought WebRTC was the coolest thing since sliced bread until I ran into the whole TURN and STUN thing. I feel catfished.

<comment><USER6> What are TURN and STUN?

<comment><USER26> Ways for punching through NAT. STUN lets you discover NAT addresses and the like to try and establish a connection with a port on the WAN IP, or some other connection mechanism. TURN is effectively a proxy that can be used by both sides to establish a connection through NAT.

</comment></comment></comment><comment><USER27> Here is a demo:

[http://talk.vasanthv.com](http://talk.vasanthv.com)

</comment><comment><USER28> To share just one screen (mostly for my mom and me) I created [https://screenshare.43z.one/](https://screenshare.43z.one/) in just a few lines of client side js.

</comment><comment><USER29> Nice! The WebRTC samples tend to be a bit convoluted. This sample project is a great demonstration of simplicity. Going to use this for some data channel work.

</comment><comment><USER30> It would be great with a similar solution that also packaged you own STUN/TURN setup. Maybe there is someone who did that for Jitsi meet?

<comment><USER31> OpenVidu.io packs everything needed: an all-in-one Docker image that you can deploy and use to build any videoconference project upon it (or use the ready made Call app that is provided as a real-world project example)

Disclaimer: I am coworker with the people that write OpenVidu. Check it out!

</comment></comment><comment><USER32> Is there anything which doesn't use webrtc?

</comment><comment><USER33> How does the identity management work here? How do you know that you are talking to who you think you are talking to?

<comment><USER34> Can't we just manage this on layer 8?

</comment></comment><comment><USER35> There are lots of free options. We use zoom because it has the best and most consistent quality.

<comment><USER26> From a tech-org perspective I've had the opposite experience. Zoom crashes, behaves weird, has issues on some peoples machines but not others, does weird javascripty things to hide the "join by web" link which we get complaints about, etc.

From a non-technical persons perspective, my piano teacher was using Zoom but ended up having to switch to Jitsi Meet because (anecdotally) the audio quality was better and more consistent.

<comment><USER36> It's not anecdotal, Zoom applies significant audio filtering and "enhancement" as well as selectively attenuating "non-primary" speakers.

<comment><USER26> My casual observations of it were anecdotal, that is. Glad to see someone else has noticed similar behaviour.

</comment></comment></comment></comment><comment><USER37> Is there a way for multiple people to simultaneously share their screen with each other

</comment><comment><USER38> Could you add some screenshots on the README?

</comment><comment><USER39> Up to how many participants P2P WebRTC video calls work well in browsers?

<comment><USER14> Right from the first paragraph of the README:

> _The sweet number is somewhere around 6 to 8 people in an average high-speed > connection._

</comment></comment><comment><USER40> Doesn't look too secure.

<comment><USER14> Quite the contrary; if you host this yourself, remove the TURN server list, and host your own STUN server, it's much more secure than pretty much any of the third-party-hosted services out there. Assuming you trust your browser, that is.

Obviously I haven't audited the code, but it's pretty small, and wouldn't be hard to thoroughly audit.

It's surprisingly light on dependencies, just pulling in express as the webapp server, and socket.io for the call signaling. Personally I'd probably roll my own signaling over websocket to avoid that dependency (socket.io is an awful protocol, though for generally understandable reasons), but that would likely more than double the amount of code the author would've had to write.

<comment><USER41> Why is socket.io awful?

<comment><USER42> I was curious too, since I'm generally fond of socket.io. I've written my own small library around bare WebSocket API, and there are many aspects to consider, like fallbacks and reconnection. In my opinion, socket.io provides a simple and smallish interface that takes care of most needs.

Here's an article I found, with opinions on the good and the bad.

[https://dzone.com/articles/socketio-the-good-the-bad-and- the...](https://dzone.com/articles/socketio-the-good-the-bad-and-the-ugly) (2018)

<comment><USER14> The interface is nice (from Javascript; it's impossible to write something type-safe in any language where you like to care about type safety); the protocol and implementation itself is horrifying. Some of the protocol's handshaking gymnastics was necessary 15 years ago when you couldn't rely on there being a standards-conforming Websocket implementation, but those days are long gone.

Documentation is sparse, and when you find some docs, half the time it isn't clear which (incompatible) version of the protocol they're talking about.

Source: I was working on writing an interoperable server implementation of socket.io a couple years ago, and it was _way_ more work than it should have been.

</comment></comment></comment></comment></comment><comment><USER43> Great. Can I has hw encoding/decoding on linux, please? I don't need another software, I need my laptop not to boil.

<comment><USER21> That's not the developer of this app's fault.

</comment></comment><comment><USER44> Stop giving away great software for free. Sell it! :)

(P.S:: Didn't check out the source code. It's just a general sentiment of mine lately.)</comment>


Is Carmen Ortiz fit to lead prosecution of boston bomber - <AUTHOR>

This is the same Carmen Ortiz who's harsh prosecution of Aaron Schwartz may have contributed to his suicide.
this association is hardly brought up in the news.  But I felt it was important to point it out here.
I for one would like to see someone else leading such an important case.  I believe she has already shown her judgment to be questionable and this case is too important and precedent setting to leave to anyone but the best.
As evidence:  they are already waiving his Miranda rights which is a huge deal. <comment><USER2> That guy killed innocent people, killed cops, and hurt numerous people. It doesn't matter who is prosecuting the case. It could be Kim Kardashian of all people(heavy sarcasm), and this guy will get the death penalty.

<comment><USER3> There's no death penalty in MA.

<comment><USER4> There is the death penalty for some federal crimes like terrorism even in MA.</comment></comment></comment>


Ebay switching to terabytes of SSD storage, replacing racks of 15k-rpm drives - <AUTHOR> http://www.computerworld.com/s/article/9218811/EBay_attacks_server_virtualization_with_100TB_of_SSD_storage

<comment><AUTHOR> I wonder what they are going to do about the crazy-high failure rate:

[http://www.codinghorror.com/blog/2011/05/the-hot-crazy- solid...](http://www.codinghorror.com/blog/2011/05/the-hot-crazy-solid-state- drive-scale.html)

[http://www.tomshardware.com/reviews/ssd-reliability- failure-...](http://www.tomshardware.com/reviews/ssd-reliability-failure- rate,2923.html)</comment>


It's time to place the web in safer hands - <AUTHOR> http://www.kernelmag.com/comment/opinion/2012/01/its-time-to-place-the-web-in-safer-hands/ <comment><USER2> Why, oh why, does everyone assume that a plethora of TLDs implies that all those TLDs must contain a complete copy of .com?

I claim the problem with the first big expansion - .pro, .info, etc - is that it WASN'T wholesale. Yes, if half the Internet thinks that only .com exists, and you add .biz, every corporation has to go register .biz as well.

If you add a thousand real, active, well-used TLDs, they don't, simply because that is no longer how the Internet works. We already see the start of this with ccTLDs; Apple (a pretty aggressive trademark defender) does not own <http://www.apple.fm>, and nobody expects them to, and nobody is confused that they don't. I'm sure my grandmother sometimes confused Elvis Costello with Elvis Presley, but nobody thought the one was impersonating the other, because people have last names, and that's how it works, and that's normal.

Five years ago, the average American non-technologist's mental model of the Internet was "you type the company name and .com, except sometimes it's .net and I don't know why". Now it's probably a little more nuanced - but only a little, because .com is still Where Everything Is.

If you change that, you've changed that. Because you changed it. So it's not the same.

<comment><USER3> I'm in complete agreement except this:

> Five years ago, the average American non-technologist's mental model of the > Internet was "you type the company name and .com, except sometimes it's .net > and I don't know why". Now it's probably a little more nuanced - but only a > little, because .com is still Where Everything Is.

I would say it's even worse now. Many people's mental model is "I type it into Google and they take me there" or "I share this clickable text around and don't have to type anything".

<comment><USER4> I think it's worse in US; over here (UK) people are more used to .co.uk or .org or whatnot.

People don't really know what an URL is. During ealry days of WWW and broadcasting presenters would read the whole thing; aitch tee tee pee colon forward slash forward slash double you double you double you etc etc. There's still not much awareness of what the bits of an url breakdown to; you still see even the BBC make mistakes about domain names and TLDs.

And I'm always gently disappointed to see URLs delimited by () and not RFC compliant <>.

<comment><USER5> > And I'm always gently disappointed to see URLs delimited by () and not RFC > compliant <>.

Choosing a bracket character that resembles a tag, for use in the case when you are definitively trying NOT to create an HTML tag, seems a misguided choice in the RFC.

</comment></comment></comment></comment><comment><USER6> I don't see how this can be fixed. I have yet to see a single proposal for internet governance that makes me feel "safer" than the current arrangement.

Whatever entity is given control of the global name or number spaces has extraordinary power. Any such organization will be subject to corruption, both from within (the subject of the article) and without (e.g. SOPA). Moving governance up to higher levels of government (like the U.N.) isn't any better. Do we really want France or the WIPO to have any input, much less China or Russia? That's a rhetorical question for anyone concerned about censorship.

I think it inevitable that the Internet will continue to splinter along national boundaries. Ultimately, the internet will consist of national networks, separate and insular to varying degrees. The challenge for hackers will be how to connect to the networks outside of our own respective countries.

<comment><USER7> I'd much rather have a fractured internet with pockets of freedom than a globally censored and controlled internet.

</comment></comment><comment><USER8> While I don't advocate for breaking up ICANN, this article "Fixing DNS -- how to break up ICANN" (<http://www.templetons.com/brad/dns/fix.html>) presents a decent approach to the TLD 'problem' that would not focus on useless branding TLDs but instead encourage only TLDs that were going to add value to the Internet. In short, the idea is to only allow non-generic TLDs to be registered to force the TLD operator to differentiate their TLD from others, rather than just being the first one to register '.bank'.

It doesn't offer a solution to the complaint in the article that organizations will have to register 'apple', 'mcdonalds', or 'cocacola' in each new TLD, but I'm less sympathetic to that concern.

<comment><USER9> Who would get .nissan?

<comment><USER10> Whoever pays first. Or, more, maybe.

</comment></comment></comment><comment><USER11> This is a nice complaint against ICANN, but I'm disappointed that it didn't explain any potential solutions to the problem.

Whose hands should DNS oversight be in? What alternative solutions are out there?

<comment><USER12> DNS should be distributed. Eventually as the shadow P2P DNS system grows in response to the mainstream one being increasingly controlled and factionalized, it will become the dominant DNS system.

<comment><USER13> I've seen the idea of a distributed DNS system mentioned a few times but I still don't see how it would work out. What happens in the case of multiple people wanting the same domain? How are disputes between what foo.com points to resolved? With no central authority who collects payment? and without payment of some kind what it to stop someone from gathering up an inordinate number of domains as there is no cost to do so.

</comment></comment></comment><comment><USER14> non-latin TLD's? I really hope no one takes omicron for a new .com ...

<comment><USER15> There's a lot of Arabic and Chinese TLDs already.

<comment><USER14> I did not know this. I suppose that removes my argument.

</comment></comment></comment><comment><USER16> First time I've ever been to this site, and immediately a giant pop up appears over the content. I doubt I'll be back.</comment>


You can totally write unstructured code in C# - <AUTHOR> https://twitter.com/rottytooth/status/744968087221469184 <comment><AUTHOR>
            _01: int b = 0;
            _05: string t = "";
            _10: for (b = 99; b > 0; b--) {
            _20: goto _100;
            _30: t = t + " OF BEER ON THE WALL";
            _40: Console.Write(t + ", " + t);
            _50: Console.Write("\nTAKE ONE DOWN AND PASS IT AROUND, ");
            _60: if (b - 1 <= 0) { Console.Write("NO MORE BOTTLES OF BEER ON THE WALL"); } goto _80;
            _70: goto _200;
            _75: Console.Write(" OF BEER ON THE WALL");
            _80: Console.WriteLine();
            _85: goto _230;
            _90: Console.Write("GO TO THE STORE AND BUY SOME MORE, 99 BOTTLES OF BEER ON THE WALL");
            _95: return;
            _100: t = b.ToString() + " BOTTLE"; if (b > 1) { t = t + "S"; }
            _110: goto _30;
            _200: Console.Write((b - 1).ToString() + " BOTTLE");
            _210: if (b - 1 > 1) { Console.Write("S"); }
            _220: goto _75;
            _230:;}</comment>


Steve Wozniak explains how Steve Jobs came up with the name "Apple" - <AUTHOR> http://www.youtube.com/watch?v=mFdX29mVrxA&sns=em

<comment><USER2> That's a good cover.

Would hate to have to admit it's actually Luciferian.

An apple with bite a out of it. Doesn't anyone pay attention anymore.

There is a funny story about two people, an apple, and a snake. You guys should read it sometime.</comment>


Are mobile advertisers ok with accidental clicks? - <AUTHOR>

I think it's fairly obvious to say that a good portion of clicks in many Android and iOS games are not intentional.
When my son plays the Angry Birds version with ads, he occasionally clicks the ad without meaning to. My wife has done the same thing (this was before installing an ad block on my phones in annoyance). Multiply that by the millions of people who play these games, and you have a significant number of clicks being registered by people simply trying to hit that pig with a bird.
This reminds me of a number of years ago when Netzero was really $0 for internet and would show a banner/advertisements on the bottom 200px or so of your screen, or when AllAdvantage would pay you something like 40 cents an hour to display banners to you while you surfed the internet. Yes, you're exposing ads to eyeballs, but is the interest really there to justify paying $x.xx per click, when a good portion of those clicks belong to people who not only didn't mean to click the ad, but now are frustrated that they clicked it in the first place and see your product on their screen before going back to their game?
The problem is made worse by game and app makers "strategically" placing ads where they know they'll get a ton of mis-clicks. They're basically sending out trash traffic that has very little hopes of converting to sales.
I can't be alone in thinking this, can I? <comment><USER2> No, you are not allone :)

I actually work in a company that runs a small side business with writing apps. Most of them are free and only drive money by adds. Actually I don't understand why people download those apps at all. And I have no idea, why anybody should click any of those adds. Still we make some money with it. Enough anyway to keep our devs busy between larger app projects we do for customers or to get new devs into app development.

But then advertising is expensive anyway. Companies pay a lot of money only to have their names and products appear on tv or in magazines. So the main idea here is not necessarily to sell something right away, but to have a first contact and keep a faint memory of you brand name in the users memory.

Just by chance I hit the website of my internet provider today. They offer you up to 150 euro if you get somebody to make a new contract with them. That's what they earn in the first six months with such a contract. Obviously they expect to start making money only after a longer period of time.

</comment><comment><USER3> Sophisticated ad buyers track conversion rather than pure click through rate so the price they're willing to pay per click automatically reflects the lower quality of clicks you get on mobile compared to web.</comment>


How to take on a large Django project - <AUTHOR> http://gun.io/blog/how-to-take-on-a-large-Django-project/

<comment><USER2> On the same subject, I just finished uploading video of a talk given to the Django Boston Meetup Group on Wednesday night -- "Staying Sane While Taking Over An Existing Django Codebase" by Matt Makai:

[http://www.youtube.com/watch?v=psCVC9BdgsA](http://www.youtube.com/watch?v=psCVC9BdgsA)

<comment><USER3> Is it just me or does it look like the author of the gun.io talk copied liberally from the Boston Python talk?

<comment><USER4> i'm the author of the gun.io post and i have not seen the Boston Python talk. i just added it to my list to watch. the majority of the content came from my own experiences. i also started a reddit discussion to facilitate communication among other django developers - [http://www.reddit.com/r/django/comments/1h6msl/django_best_p...](http://www.reddit.com/r/django/comments/1h6msl/django_best_practicesconventionsbasic_checklist/)

</comment></comment></comment><comment><USER5> I still find the project/app distinction in Django pretty confusing. I wish there were just the app standalone, and some way to join apps together if you really need to.

<comment><USER6> I just put everything in an app called 'core'. That seems to be pretty normal.

Anything non-core obviously goes in a separate app, and usually if the project grows large enough there will be parts where it makes sense to break it apart.

<comment><USER5> I like this idea. Can you give us an example of something that wouldn't go in core?

<comment><USER7> anything reusable that you can package as an external utility (and would upload to pypi if it weren't for IP restrictions).

<comment><USER5> That's still too abstract for me. Does anyone have a concrete example?

<comment><USER7> [https://www.djangopackages.com/](https://www.djangopackages.com/)

[https://github.com/search?q=django-](https://github.com/search?q=django-)

[https://bitbucket.org/repo/all?name=django-](https://bitbucket.org/repo/all?name=django-)

</comment></comment></comment></comment></comment></comment><comment><USER8> Very informative post. I am new to python/django and am planning to use some of these code-review points to better understand django as well as my project rather than 'review' it as such.

I'm not sure about using excel to track the project layout, though I'm not sure what tool would I use for such a task. My current method of rapidly using my IDE to traverse between files while building a mental model in my mind is effective but I can retain only about 50% of the information in a week or two.

What do others do?

<comment><USER4> I am building a stack trace app to analyze the relationship between the urls -> views -> templates in a visual manner

</comment></comment><comment><USER7> > Pssst! Hackers, sign up here!

just tried to register at gun.io. it doesn't want my email from github auth, then asks for email on their site anyway, but the form doesn't work.</comment>


Partial loop unrolling in JavaScript - defun-fun http://james.padolsey.com/javascript/partial-loop-unrolling/

<comment><AUTHOR> [http://fatagnus.com/unrolling-your-loop-for-better- performan...](http://fatagnus.com/unrolling-your-loop-for-better-performance- in-javascript/) has a better variation on the technique. In any case I would not bother with any of this without careful profiling in different browsers. In particular a lot of them have JIT, and I would expect JIT to automatically optimize some of this stuff. (Either now or in the future.)

</comment><comment><USER2> If you're really having performance problems that will be fixed like that then why not use Duff's Device? It's (and this is sure sayin' something) easier to read than that.

<comment><USER3> Because Duff's device involves a switch outside a while with cases inside, syntax that is not allowed by JavaScript (which carefully defines a switch to consist of case clauses, each of which posessing a statement list). That said, you could still do something at least reasomably similar inside of the while (with an offset that you reset in the loop increment expression).</comment></comment>


Ask HN: Why is there no modern package manager for Java? - <AUTHOR>

Yes, there is Ant, Maven, Gradle, etc. but these are more dependency management. Why isn't there something more similar to npm, cpan, etc.? The closest thing I see is https://jpm4j.org/ but it seems to have slowed down. <comment><USER2> There are plenty already.

[http://leiningen.org/](http://leiningen.org/) [http://www.scala- sbt.org/](http://www.scala-sbt.org/)

</comment><comment><USER3> It sucks, but it's probably because Java is used so much by large enterprises - and big organizations often won't tolerate using other people's code or sharing their code with other people. Node and Perl are used more by individuals (or startups) doing small bits and sharing back and forth.

If you start one I'll use it though. :)

<comment><USER4> Pretty much everything of the Java ecosystem is open source and I don't think there are organizations that wont use any open source code written by other people.</comment></comment>


SAP buys 1.3B customer identities in data boosting acquisition - <AUTHOR> http://www.cbronline.com/news/big-data/analytics/sap-buys-1-3-billion-customer-identities-data-boosting-acquisition/ <comment><USER2> Is there a better article on this anywhere?</comment>


Haskell in the Real World - <AUTHOR> http://vimeo.com/24676617

<comment><USER2> We use Haskell intensively. It is a very useful and easy language. Once you mastered Haskell (and get used to the type system), it feels very natural. It is both usable for scripting and "real" tasks.

The trick with Haskell is to model the data you are going to use. Haskell has a good mathematical ground and if you model it right, you can leverage a lot of mathematical tools.

We use it on a web project in combination with PostgreSQL. These two match pretty nicely. Both have strong type systems. We wrote an JsonRPC server in haskell, which acts as a secure proxy between the database and the client.

We also use it for system scripting. We wrote a special embedded DSL based on arrows for critical tasks. And we use it for the analysis of data. This is mostly a pipeline ala: Parsing -> Interpreting -> Analyzing -> Storing, where every phase has his own data type. It is great for writing parsers.

It has the speed of a compiled language and the ease of a scripting language. It doesn't match c or c++ of course in speed. But you can get very close and in almost all cases close enough.

The main negative aspect is that it is difficult to reason about your code in terms of performance. And laziness can also do wonderful unexpected things. And bugs in the compiler.</comment>


Show HN: Boost – small coding tasks for Google Cloud Platform on demand - <AUTHOR> https://getboost.dev/ <comment><AUTHOR> Hi folks, OP here, my friend and I are working on a drag-and-drop backend builder[0].

To understand better what are frequent backend scenarios people want to build we created Boost. It's a service for small cloud coding tasks on demand. You simply fill the form on the website where you describe us what task you want us to build, we'll contact you to ask a few more questions, and build it.

There are only two restrictions. (1) the task must be on Google Cloud Platform, and (2) the task must not be a big feature (e.g.: full admin system) but a smaller part of your project. If you aren't sure whether your task is small enough, just send us the task anyway.

[0] [https://codelines.dev](https://codelines.dev)</comment>


"The pressure of academia drove me to heroin" - <AUTHOR> http://www.theguardian.com/education/2016/mar/25/the-pressure-of-academia-drove-me-to-heroin <comment><USER2> What allows some people to handle this pressure well while others collapse under the weight of it all?

<comment><USER3> Pressure is the wrong term to use because life doesn't have a difficulty level. For lack of a better term.. it's nonlinear.

Thought experiment: you're working at a charity for a cause you absolutely love. You're putting in 12 hour days, but you love it, you're happy to make the sacrifice. Everything is going well, your health is good, you're completely devoted to the cause.

Then, you make a discovery. Perhaps the CEO is embezzling company funds. Something like that, that you can't change and have no control over.

In an instant your motivation can disappear and you find yourself depleting willpower, forcing yourself to continue.

I personally think that ultimately it's a matter of people sticking on the wrong path for too long. If you find yourself losing faith, it probably is time to shake things up.

But the world makes this hard. We're not castles. Marriages, leases, etc, other people exist.

And so it goes.

</comment></comment><comment><USER4> No, you drive yourself.</comment>


Ask HN: Open source text highlighter with ability to add custom functions? - <AUTHOR> I'm working with Medium.js, trying to add some custom functions to it. But feel like I may be reinventing the wheel here.
Does anyone here know of any open source libraries that can do this a lot easier.
Really appreciate anyone's time here. <comment><USER2> You probably ought to rename the post with "ASK: " as a prefix.

<comment><AUTHOR> Cheers, just did.</comment></comment>


Summation of the multiples 3 or 5 from 1-999 - <AUTHOR> http://deadendmath.com/summation-of-the-multiples-3-or-5-from-1-999/

<comment><USER2> From the article: "No wonder people easily dislike mathematics, who would want to add so many numbers?"

But that's not mathematics, that's arithmetic. This may seem like arid pedantry, except that many people are exposed to this kind of bonehead arithmetic in elementary school and think that's all there is to mathematics. That's a shame, and a correctable error.

Mathematics isn't "2 plus 2 equals 4". Mathematics is Avatar:

<http://www.youtube.com/watch?v=cRdxXPV9GNQ>

Mathematics is hitting a target on Mars, within a new meters, after eight months of travel:

<http://www.youtube.com/watch?v=UcGMDXy-Y1I>

Mathematics is beauty:

<http://en.wikipedia.org/wiki/Mandelbrot_set>

I wish people could be taught mathematics _before_ arithmetic, not after. But this contradicts centuries of scholastic tradition.

</comment><comment><USER3> To quote you back "But that's not mathematics, that's arithmetic".

I can see your point of view, but arithmetic is one of oldest fundamentals of mathematics. This is the way I was thought. <http://en.wikipedia.org/wiki/Arithmetic>

Its like the old saying "Its not what you say, but how you say it". In this day and age, people generally get the perception that mathematics is all about counting.</comment>


Why (Regular) Releases Matter - <AUTHOR> http://www.modernperlbooks.com/mt/2009/05/why-regular-releases-matter.html

<comment><USER2> Regular Releases are important because they force you develop stable intermediate forms; which hearkens back to Simon's Parable of the Two Watchmakers:

There once were two watchmakers, named Hora and Tempus, who made very fine watches. The phones in their workshops rang frequently and new customers were constantly calling them. However, Hora prospered while Tempus became poorer and poorer. In the end, Tempus lost his shop. What was the reason behind this?

The watches consisted of about 1000 parts each. The watches that Tempus made were designed such that, when he had to put down a partly assembled watch, it immediately fell into pieces and had to be reassembled from the basic elements. Hora had designed his watches so that he could put together sub- assemblies of about ten components each, and each sub-assembly could be put down without falling apart. Ten of these subassemblies could be put together to make a larger sub-assembly, and ten of the larger sub-assemblies constituted the whole watch

</comment><comment><USER3> It took me 40 seconds of staring at the title and wondering "Who is regular and why is he releasing matter?" before I could properly parse that title.

<comment><USER4> That was my first parse as well. Did anybody get it right on the first try?

<comment><USER5> I didn't have any issues. It actually took me reading the title several times to see what you guys were talking about.</comment></comment></comment>


Kickstarter transparency report shows crowdfunding's copyright woes - <AUTHOR> http://www.engadget.com/2015/04/08/kickstarter-transparency-report/ <comment><USER2> And it shows the USA's copyright abuse woes. 123 creative projects were slapped for daring to build on the work of others or engage with popular culture. And even more projects were threatened with bogus legal action, taking resources away from new projects and scaring off many others.</comment>


How banks are refusing to shoulder responsibility for fraud - <AUTHOR> http://www.telegraph.co.uk/personal-banking/current-accounts/how-banks-are-refusing-to-shoulder-responsibility-for-fraud/ <comment><USER2> Today gmail offers more account security than a typical bank. Why can I get two factor authentication, device recognition and alerts on a free email account but not on a bank account?

From a risk management perspective it's never a good idea to separate liability from control. If the banks don't provide adequate security controls to their customers why should their customers be liable?

Even though the controls that a customer has are less than what Gmail provides the banks continue to push the the illusion that the customer is actually in control. Even the vocabulary they use implies the customer was always in control.

For example you were a victim of identity theft. How crazy is that? How can somebody steal my identity? Oh, I woke up this morning and I wasn't me!!!

Nope.. Checked my identity and I'm still me. Why did you allow somebody to steal all my money?

<comment><USER3> Out of my 5 banks, 3 use physical 2fa RSA tokens (and 2 support 2fa apps) and 2 use those crappy code cards for 2fa. Are American banks really that bad?

<comment><USER2> Yes US banks are that bad and they lag their European counterparts.

Fidelity is a large US brokerage with $2T under management. Only last year did they start to offer two factor authentication as an option (had to ask). I have accounts with one US regional bank and one US credit union which use basic device recognition and a security question when logging in from an unknown device.

Other anecdotes..

My account at Fidelity is a joint account. After setting up online access and funding the account I discovered a year later that it was possible to get full access to the account by creating online access under my wife's name using the account number and a semi-trivial validation process.

Accounts in the US typically have all features enabled by default or can be enabled in a trivial manner and this can't be disabled. Why should a typical account have the ability to wire funds internationally?

It typically isn't possible to configure a second level of authentication for higher risk transactions.

Limited ability to configure alerts based on unusual behavior. For example access from a new device or a transfer over a threshold. No ability to alert when those alerts are changed.

Opaque account recovery processes. Even if additional security measures are implemented it may be possible to have them disabled trivially by phone.

Almost zero customer education around risks and ways to reduce risk. stupid things like "Don't use your bank's password on other sites, it should be unique!"

<comment><USER4> I never imagined that an account without the ability to wire funds internationally even existed.

I have family oversees, I have friends oversees, I have bank accounts in three countries.

<comment><USER2> Of course is should be an option but from a risk management perspective it makes sense to reduce the attack surface that a fraudster has to work with.

In the US at least a typical customer will never initiate an international wire transfer. Even those with friends and family overseas will typically transfer funds through a money transfer service or via ATM networks to avoid the associated high fees.

When a US customer walks into a bank asking to initiate a wire transfer its usually a red flag they are a victim of fraud.

</comment></comment></comment></comment></comment><comment><USER5> Aside from the reference to sharing a PIN, I missed "How banks are refusing to shoulder responsibility for fraud".

What am I missing?

More importantly, the customer referenced in the article basically wired all the funds in her account to a scammer then asked the bank for it back. Sorry, but that is the customer's fault, not the bank's fault.

<comment><USER6> This isn't about "fault," this is about contracts.

One of the reasons I have a contract with a bank, and that I pay the overhead of having the money sit in a savings account instead of growing at market rate, is that they will protect my money from fraud. If the bank is looking into finding ways not to protect me, I'll look into ways not to keep my money with the bank but instead invest it at market rate. That's all.

<comment><USER7> They aren't going to cover something that is your fault. Sorry. That is just wishful thinking.

</comment></comment></comment><comment><USER8> I suspect it's a game theory situation - until banks are unilaterally made responsible at once (say by a new law) - none want to be the ones to make their workflows more complex and invest in better ways to remotely authenticate an identity.

<comment><USER9> They at the same time lobby to fight any such legislation...

</comment></comment><comment><USER10> Security and convenience exist on a spectrum.

For my ordinary checking account, I opt for convenience. I don't want transactions randomly declined and I don't want to have to wait for banking hours to authorise activity. To compensate, I limit the amount I keep in the account.

For certain other accounts, I opt for more security. Cheques are blocked; foreign transactions are, by default, blocked; online banking must be two- factor authenticated every time; transfers must be authorised with a phone call below certain amounts and in person at a branch, with ID and a passphrase verified, above certain amounts; _et cetera_. These are flags one can have enabled on most bank accounts. They're just debilitatingly irritating for ordinary use.

If you make banks responsible for user-authorised fraud, _e.g._ a customer wiring money to a scammer, you're also asking them to nanny you. Freedom and protection from your own stupidity exist on a spectrum.

<comment><USER11> This is asinine. Asking a bank to do their job is not asking to be nannied. Let's pretend only stupid people get defrauded, do they deserve it? Finders keepers losers weepers? This is a juvenile world view. Tricking people is not a service, is not a job, does not absolve a bank of their primary responsibility, which is safeguarding money.

<comment><USER10> > _Asking a bank to do their job is not asking to be nannied_

The only way this transaction could have been prevented is if the bank told the customer "you want to do X with your money but we aren't going to let you because we find it ill-advised". Not everybody wants that level of oversight and restriction.

You see blocking fraud as a bank's main job. There are times, however, when one can reasonably find facilitating transactions to be their main role. When I'm travelling, a constantly-declining debit card is more of a nuisance than the risk of having a thousand dollars pilfered from my checking account.

There's no way to do both risk management and transactional freedom perfectly, since the former means restricting the latter, even to the point of telling a customer what they can and cannot do with their money.

> _a [bank 's]...primary responsibility...is safeguarding money_

As with everything, there are trade-offs. Absurdly put, a bank which refused to allow anyone to withdraw or transact could score splendidly in terms of "safeguarding money". They'd also be useless, because that's not a bank's only job.

</comment></comment></comment><comment><USER12> I've heard those banking in the US should approach these incidents as "clerical errors" during the initial report. This terminology places the onus on the institution to investigate and correct the matter unless or until proved to be the fault of the client.

This is in contrast to the client reporting "identity theft" or "fraud" when they see an unauthorized charge, which makes it an at-fault issue for fraud & liability.

I thought it seemed believable, but can anyone confirm whether this represents actual internal banking policy?

<comment><USER5> Intentionally reporting a crime as an accident is fraudulent and won't change the outcome.

Key to avoiding fraud is good security and financial controls by ALL parties involved based on valid threat models and risk analysis.

<comment><USER12> Right, but so is relying on lack of awareness of internal policies to misrepresent client concerns in the bank's favor, for an example.

A client doesn't know an unexpected transaction not to be a clerical error any more than they know it to be identity theft. So it's not exactly nefarious not to immediately and unnecessarily claim culpability by using incorrect terminology.

The prevalence of advertisement by banks for fraud protection and identity theft services creates a situation where people are likely to assume unexpected (or unrecognized) transactions are always the concern of the division of the bank that handles "identity theft", and that the correct way to have it investigated is to call those transactions "identity theft", whether or not they are.

From how it was explained to me, using "clerical error" passes the request through an additional filter where the bank attempts to determine whether it was at fault before redirecting the request. It's the difference between starting out by saying "I made a mistake" and "a mistake was made", which could be important later.

I hope you understand that I wasn't condoning fraud, but that people shouldn't be quick to implicitly admit liability for what may not be their own mistakes.

</comment></comment></comment><comment><USER13> Banks/Politicians have privilege; They will not be prosecuted; They can commit crimes in the name of serving the country; [http://cnbc.com/id/43471561](http://cnbc.com/id/43471561)

</comment><comment><USER14> None of this will change until bankers start getting prosecuted.

<comment><USER15> Prosecuted for what? The woman in the story wired her money to a scammer, and somehow it's the bank's fault?

<comment><USER11> The bank is something of an accomplice in a crime of theft. When banks deny grocery store charges for security reasons and then allow a transfer of the entire balance of an account, they're not merely ignorant the latter is fraud, they're sufficiently incompetent that it becomes negligence.

<comment><USER5> Are you referring to a personal experience? The facts you're presenting appear to be randomly pulled and without any context or related reasoning.</comment></comment></comment></comment>


Add Math and LaTeX to Your GitHub Readme.md - <AUTHOR> https://github.com/leegao/readme2tex <comment><USER2> Am I missing something? I have never seen a GitHub project with math notation in the README, and I can't think of a case where that would be useful. The more general problem of adding math notation to markdown is worth considering. It's painful to read blog posts that include a lot of math (for example, anything written by John Baez).

<comment><AUTHOR> There are already several extensions to markdown with LaTeX support. For example, StackExchange supports flavored markdown with a Mathjax backend, as do most static Markdown renderers out there. Nevertheless, since Markdown isn't standardized across the field, we really can't complain that some support LaTeX while others do not. Since it gets asked about in /github/markdown often enough however, I believe that it's worth some consideration.

I think the answer to your question is more situational. For example, the ML community routinely publish supplementary material on Github. While the introductory section of these repositories should be accessible to everyone, they do also go fairly deep with technicals before referencing their respective publication for more details. The PL community also routinely use Github as a distribution platform. For them, it's often much more compact to give the semantics of their language-extension as a system of equations rather than as words. This doesn't absolve them of the obligation of giving readable examples of the specification, but for some of these more technical repositories, it's a nice-to-have as well.

Having said all of this, the ML community has thought up of a rather clever workaround for this already. Github renders ipynb notebooks that has LaTeX in side of its Markdown sections, so many READMEs just reference a Jupyter notebook. This is just a different approach on that problem.

<comment><USER2> Thanks for taking time to respond with your insights. Rendering math notation for screen display in an HTML browser is a difficult and challenging problem.

For a long time, TeX was the best-of-class document rendering software for mathematics. I believe TeX emits Postscript, which works wonderfully for printed articles and books. Web developers can either try to leverage legacy software like TeX or take an entirely different approach. Can you point to a good summary article on this topic?</comment></comment></comment>


The "Work From Home" Generation - <AUTHOR> http://www.readwriteweb.com/archives/the_work_from_home_generation.php <comment><USER2> From the article, the good:

1\. No commute

2\. Flexibility

3\. Saving money and the environment

4\. Increased productivity

The bad:

1\. Brainstorming is difficult

2\. You never leave work

3\. Entropy is after you

I have to agree with most of this. For me working from home turned my commute time into family time. That said I think they missed one significant "bad" thing for larger organizations: less face time means fewer people will think of you, which can affect your likelyhood of moving up.</comment>


Welcome Cruise Ship 🇧🇲Grand Princess Enjoy San Francisco - <AUTHOR> https://twitter.com/sfships/status/1237078653667659777 <comment><AUTHOR> For a while I've been running a Twitter bot that tracks the comings and goings of major ships. I did not expect it to become extremely topical!

<comment><USER2> Can you make a technical post about how you get the info or the arrivals? How you take the photos?[1] Anything unexpected running the bot? It is a real bot, or you just type the message? Problems with name collisions? Duplications when a ship get delayed and arrive the next day?

[1] With the camera, from the shore. :) I guess there are a few technical details and anecdotes here.

<comment><AUTHOR> Hi! It is a real bot. All major ships transmit AIS [1] messages that can be received with a cheap antenna and receiver. I wrote a parser and tools [2] for the protocol. I have pals [3] with an office near the water [4]. That receiver is part of a data commons [5], giving me access to data on other ships. The bot then filters that feed (50m messages/day), looking for major ships passing through the Golden Gate [6]. When something goes through, it tweets an announcement.

Photos are all contributed by fans. I've thought about setting up an automated camera, but that requires an actual good view, which is trickier to acquire.

The big surprise for me was how much garbage data there is flowing through that system. Poorly maintained transmitters. Badly configured devices. And merchant marine sailors typing stuff into bridge systems definitely don't share my fussiness when it comes to getting data right. A lot of the code is just a huge set of regexs to turn what people type in the destination field into clean, consistent geographical names. (And if you scroll back some, it's definitely not perfect yet.) But since most of the data is intended to provide human-viewed radar-like displays, it works out fine in practice.

Another thing I learned is that marine geography is just different than how landlubbers see the world. In the same way we see the land as full of detail and the water as a vague blue area on the map, they have a lot of specificity for the water and its edge. But documentation of their notion of geography is much less available. So I've had to do a lot of manual work to figure out what a sailor means by, say, SFO, and there's still more to go.

Is that helpful?

[1] [https://en.wikipedia.org/wiki/Automatic_identification_syste...](https://en.wikipedia.org/wiki/Automatic_identification_system)

[2] [https://github.com/wpietri/simpleais](https://github.com/wpietri/simpleais)

[3] [http://longnow.org/](http://longnow.org/)

[4] [https://fortmason.org/](https://fortmason.org/)

[5] [http://www.aishub.net/stations/2161](http://www.aishub.net/stations/2161)

[6] [https://en.wikipedia.org/wiki/Golden_Gate](https://en.wikipedia.org/wiki/Golden_Gate)

<comment><USER2> Thanks for the details. This looks like a nice subject for a blog post with the technical details and some photos if you ever have time to write it. I think it will get some traction here, but I can't guaranty it. Anyway, I can guaranty at least one upvote.

<comment><AUTHOR> That's a good idea. Thanks!</comment></comment></comment></comment></comment>


Show HN: PSequel – a free PostgreSQL GUI Tool for Mac OS X - <AUTHOR> http://www.psequel.com/ Happy Cyber Monday! <comment><USER2> SequelPro is the gold standard. I've used it for years, and I love it. Unfortunately, like many developers, I'm slowly moving away from MySQL to PostgreSQL, and none GUI tools measure up. Instead of making YAPC (Yet Another Postgres Client), I wish a developer would just write a PostgreSQL adapter for SequelPro[1]. I'd happily contribute $50 or $100 towards a Bountysource.

[https://github.com/sequelpro/sequelpro/issues/362](https://github.com/sequelpro/sequelpro/issues/362)

<comment><USER3> Try Navicat ([http://navicat.com](http://navicat.com) – looks like they even have a Cyber Monday sale right now). Been using it for a couple of years now, and it's great (also "feels native", which is a must for me). There are many editions (I have "Premium Essentials", which was affordable and does all that I need).

As a bonus, it connects to all the major RDBMSes.

<comment><USER4> I used navicat for postgres briefly but was disappointed coming from sequel pro. I've moved to Valenta studio, which has a nice bonus of being free.

<comment><USER5> For anyone else fervently googling "valenta studio", it's actually Valentina Studio:

[http://www.valentina-db.com/valentina-studio-overview](http://www.valentina- db.com/valentina-studio-overview)

</comment></comment></comment></comment><comment><USER6> What I wish some of these projects would focus on are DBA features that only PgAdmin performs today. The market (both OSS and commercial) is filled with data editors, but none that focus on schema, user, and object management.

PgAdmin does handle these functions, but the UI can be buggy, and is subject to problems with slow network connections - forced restarts can be common.

<comment><USER7> The unfortunate reason for that is a data editor can be whacked out in a couple of weeks (well, at least an MVP).

Making object editors takes a lot more effort, especially considering all the different objects PostgreSQL has: schemas, tables view, materialized views, indices, functions, sequences, etc.

I'm struggling with this myself. I'm currently trying to add object editors to PG Commander, and it's months and months of work. I wanted to have a table structure editor in PG Commander 1.0, and now, more than a year later, I'll finally be able to deliver a basic table & view editor in version 2.0 -- you can try a prerelease here: [https://eggerapps.at/pgcommander- prerelease/](https://eggerapps.at/pgcommander-prerelease/)

<comment><USER6> In my case, I almost never _edit_ an object in a UI, but I often view it. Sometimes in a grid (ex. table columns in a grid of type, nullability, default, etc.) or as a single view of all the DDL for the object. I don't trust UIs to edit objects, but they can make the work of creating ALTER scripts much easier.

The latter is where PgAdmin is most useful for DB objects. The DDL view not only shows me things like CREATE TABLE/VIEW/FUNCTION etc., but also shows dependent objects such as constraints, indexes, permissions in the same window. Most of the JDBC based tools do not.

Graphical explain plans can be very nice to have, along with status views that make things like pg_stat_activity easy to consume in an actively refreshing compact view.

</comment></comment></comment><comment><USER8> Nice starting point, a few comments/suggestions:

1\. When I first make a connection, the application window jumps to full screen size. This is very annoying. I running on a 4k screen with 1:1 pixels, so that is far more real estate than the application needs. Even on smaller screens, I would immediately have to resize the window after I connect.

2\. I would like to be able to not provide the database name and allow me to switch from one DB to another using the same connection. (also, currently if you leave DB blank and attempt to connect, it crashes.)

3\. 80% of the time I directly connect to my databases with a tool like this, it is not to look at the data, it is to create/drop/modify tables and other design and admin stuff. I'll occasionally use it to test complex queries before putting them in my code, but most of my queries are simple enough that they don't need testing prior to coding. So I'd see this as more useful if it had the ability to simplify the admin stuff. As it is, since I'd need to use pgAdmin 80% of the time, its not compelling to us something else for the other 20%.

<comment><AUTHOR> Thanks for your suggestions! To replay,

1\. I'll fix this.

2\. When you switch from one DB to another in postgres, you are essentially making a new connection instead of reusing the same connection[1]. In PSequel, you could create different connection bookmarks for different databases and open multiple connections at the same time in multiple windows.

3\. In my company, we write migration scripts (activerecord migration) to modify table structures. We usually don't modify them directly/manually. 80% of the time we use GUI tools just for viewing data and testing out complicated SELECT queries. I didn't realize that many other people's usage patterns are different. Anyway, the feature of modifying table structures is in PSequel's roadmap.

[1] [http://stackoverflow.com/q/10335561](http://stackoverflow.com/q/10335561)

</comment></comment><comment><USER9> This looks really neat! Another Sequel Pro inspired client that was posted to HN recently was pgweb [0] which is open source that you all might want to check out as well.

[0] [https://github.com/sosedoff/pgweb](https://github.com/sosedoff/pgweb)

</comment><comment><USER10> I always end up searching for something like this every few months. Congratulations on the launch!

Some feedback for you, though:

"I don't want to pay Apple for delivering a free app."

I can understand this out of context, but I don't think it's a reasonable answer to the question of why the app isn't code-signed (i.e. that has nothing to do with distribution). It's quite the favor to ask of your users for a closed-source app.

<comment><USER11> So don't use it. Problem solved.

</comment></comment><comment><USER12> Thanks for sharing. Will give it try - but so far been happily using [https://eggerapps.at/pgcommander/](https://eggerapps.at/pgcommander/)

<comment><USER13> I've also really enjoyed PGCommander. Updates often and works well with remote connections via SSH.

<comment><USER14> Remote connections via SSH is the killer feature for PGCommander.

Still nice to see another good looking app in this field.

</comment></comment></comment><comment><USER15> I've used SQLWorkbenchJ on the daily for the last year and a half for postgres (on OSX). It gets a lot of flak because it's java based, can be a bit buggy, and doesn't have the nicest interface. However, if you look past those items, it has some really great features:

\- DB Explorer (tab for exploring schema, allows you to search through large sets of tables and other items very easily - primo)

\- SQL Formatting

\- Well thought out user shortcuts for executing queries

\- Intelligent auto-completion

Really, they essentially loaded it with every feature imaginable, which may make it feel clunky, but it's a total Clydesdale in terms of functionality.

[http://www.sql-workbench.net/](http://www.sql-workbench.net/)

<comment><USER16> Agreed. It's not my main tool (pgAdmin usually works well enough for my purposes), but I fire up SQLWorkbenchJ once in a while when I need something that pgAdmin won't do.

Also it's scriptable data import function works nicely - we have it running here every 15 minutes, loading data from other systems into postgres.

</comment></comment><comment><USER17> Thank god someone has done this. I have spent so much time looking for a halfway decent psql tool, I currently use 0xDBE, and still not happy. My favorite was Sequel Pro (currently only mysql) and I think its not supported any more.

<comment><USER18> Navicat provides a really nice tool for Postgres. It's paid, but the OS X 'starter' (or something like that) version can be bought for $15 or so. It's by far the best client I've used on OS X.

<comment><USER17> I haven't see that software for less then $100. Also I think its java based which will have laggy performance.

<comment><USER19> Navicat feels snappy to me. I only use the features in the 'Essential' version which is £10: [https://itunes.apple.com/gb/app/navicat-essentials-for- postg...](https://itunes.apple.com/gb/app/navicat-essentials-for- postgresql/id466725643)

</comment></comment></comment></comment><comment><USER20> This looks nice - Sequel Pro is great for MySQL but for working with PostgreSQL the only GUI I could find for the Mac, last I checked, was Valentina Studio, which, whilst it does pretty much everything you would probably want of a DB GUI, also satisfies every stereotype of cross-platform applications (ie. it doesn't offer a very Mac-like experience).

Looking forward to giving this a try.

</comment><comment><USER21> I'm still on the hunt for an OSX PostgreSQL client with a table editor as awesome as aqua data studio's [0] (their java client doesn't work great on mac). With ADS you can edit the results of any query as if it was a spreadsheet, hit "save", and ADS will generate the correct insert/update statements for you and run them. It handles copy/paste across multiple rows pretty well, even with thousands of update/inserts, and I haven't found any other editors (I've tried pgadmin, jetbrains thing, navicat, this PSequel, and some others) that do this.

[http://www.aquafold.com/aquadatastudio/table_data_editor.htm...](http://www.aquafold.com/aquadatastudio/table_data_editor.html)

<comment><USER6> DbVisualizer has a similar feature, and works as well on a Mac as the Win and Linux versions - subject to occasional issues common to the JRE on your machine.

[http://www.dbvis.com/](http://www.dbvis.com/)

<comment><USER21> Thanks, just tried it out. This is almost there - it doesn't seem to handle copy/pasting multiple rows from excel into the grid.

</comment></comment></comment><comment><USER22> I'm new to PostgreSQL and get nervous twitches from using pgAdmin. At the moment I run my queries in Toad. Tried PSequel, connected but it say (no schema) in the dropdown top left. Hope It will move forward, would be great if it came close to Sequel Pro. Think the uptake of Postgre among novices and webdesigners would increase if there at least was an easy way to connect and backup restore a db.

<comment><AUTHOR> Did you delete all schemas in your db, including the "public" schema? Could you report a bug at [http://www.psequel.com/report_bugs](http://www.psequel.com/report_bugs)? Thanks!

<comment><USER22> Hope not! Connected to a live DB :-) I'll try to post a bug report tomorrow (GMT+1).

</comment></comment></comment><comment><USER23> Navicat Premium is complete and fantastic GUI for PostgreSQL.

<comment><USER24> I always found it overly complicated and sluggish (java based I think?)

<comment><USER23> Yes, it's based on Java and far from perfect but it's the best Postgres client available today.

</comment></comment></comment><comment><USER25> One lesser known tool is PGStudio, which can be run as a web tool using jetty on your machine.

as a side note, everyone seems to be on a Mac... And nobody on desktop Linux. Didn't really think that possible that from a postgres (or a mysql) crowd.

<comment><USER26> There are exactly two things that always dissuade me from using desktop linux:

1\. The font rendering is bad on linux. Especially non-anti-aliased monospace fonts, for some reason, which is what I spend 90% of my day looking at.

2\. Multimonitor support is a real pain to configure, whereas on OS X you just plug and go. I have cinema displays at home and at work, and I move around between them a lot. That's really painful on linux.

<comment><USER27> > 2\. Multimonitor support is a real pain to configure...

Are you using a somewhat recent KDE? At least on the three machines that I regularly use, the management UI looks like [0], and works at least as well as the one in Windows 7.

[0] [http://2.bp.blogspot.com/-9XFAUJBqajo/TrrwUNlBE3I/AAAAAAAAGY...](http://2.bp.blogspot.com/-9XFAUJBqajo/TrrwUNlBE3I/AAAAAAAAGYE/GCUyXGKWh9Q/s1600/kde- display-settings.png)

<comment><USER26> Likely my problem is that I really like tiling WMs, so end up trying to make my world work with something like xmonad or even dwm. It's entirely possible multimonitor is satisfactory with KDE, and maybe I should give that another shot.

I do, however, know that OS X does font rendering so much better that I have trouble with pretty much any alternative.

<comment><USER28> Well, if by "better" you mean "much worse". OSX font rendering is basically inconsistent, blurry blobs (yes, I've used OSX for years as well as various Linux distros).

That's fine if that's what you like, but don't try and pretend that it's in any way objectively "better".

</comment></comment></comment></comment></comment><comment><USER29> Looks like a good start. Though in my experience the best PostgreSQL GUI is EMS SQL Manager ([http://www.sqlmanager.net/en/products/postgresql/manager](http://www.sqlmanager.net/en/products/postgresql/manager)), bar none. As someone who's been using PostgreSQL for over 10 years now, nothing comes close. Honestly, every other GUI/manager feels pretty basic in comparison, even Navicat. If you're on a Mac, it's most definitely worth using it in VMWare Fusion, or Parallels.

An aside: I don't work for them, and yes, I do buy their licenses.

</comment><comment><USER30> Looks interesting, thanks for sharing. Does not work with Amazon Redshift.

<comment><USER31> Most Postgres clients have issues connecting to Amazon Redshift. The wire protocol is the same so basic interactions ( _ex: connect via psql and run a SELECT_ ) usually works but things get hairy when you start doing more complicated things or even just querying the data dictionary ( _the basic information_schema is there but Redshift has it 's own tables for it's specific features_).

My company[1] makes a database client that runs in your web browser that has explicit support for Redshift (as well as Postgres, MySQL, and more). I encourage you to check it out.

[1]: [https://www.jackdb.com/](https://www.jackdb.com/)

<comment><USER30> I've used JackDB and really like it. Thanks for sharing it again!

</comment></comment></comment><comment><USER32> Is there a technical reason why it's only for Yosemite or greater? Programs compiled from Swift are supported on OS 10.9 (I'm on Mountain Lion) and it would be great to try this.

<comment><AUTHOR> Because it uses some APIs introduced in 10.10.

</comment></comment><comment><USER33> UI looks promising but unfortunately performance was sluggish. Will have it under my radar for future, for now sticking to pgcommander.

<comment><USER34> Performance for everything under Yosemite is terrible for me. I won't upgrade my main work-mac until I'm convinced they've gotten Yosemite more stable and better performing.

This looks like a promising tool, but its limit platform support kills it for me, for now.

</comment></comment><comment><USER35> Personally I will just keep using PGSQLAdmin 3 for this kind of stuff. It supports pretty much everything PG Supports already.

</comment><comment><USER36> Very cool! Any plans on open sourcing it?

<comment><USER37> I myself would either like to see the source or have the developer pay the $99 to get Apple to review the code and make it more trustworthy. As it is, I'm a little nervous running the app and letting it auto-update daily when I have no idea who the dev is or what's in the app.

<comment><USER38> You do realize that Apple doesn't review code, right? An application in the App Store can issue malicious or accidental "DROP TABLE" statements just as easily as an application you downloaded from GitHub. Apple only reviews apps (in binary format) to make sure they mostly do what they say they do, and that they don't violate Apple's distribution guidelines (porn, trademarks, etc.)

<comment><USER39> They do at least in theory establish a legal entity that is responsible. It also provides a mechanism for removing the app if malicious behaviour is detected and reported.

You are right about "DROP TABLE" risk in this case but some other threats are mitigated by the sand boxing of apps.

</comment></comment></comment></comment><comment><USER40> Am I missing something? I don't appear to be able to do anything on the main screen.

[https://www.dropbox.com/s/4zlhcun6w26512s/Screenshot%202014-...](https://www.dropbox.com/s/4zlhcun6w26512s/Screenshot%202014-12-02%2009.34.40.png?dl=0)

</comment><comment><USER41> I see "Query bookmark" in the TODO list. I've been looking a simple, clean PostgreSQL "bookmark manager" that will just hold and execute my saved queries. Would really like to see this feature implemented.

</comment><comment><USER42> This is so needed. Thank you for working on the project! Will try out later today.

</comment><comment><USER43> What does it matter that it's written in Swift if it's not open-source?

<comment><USER44> Since it's a developer oriented tool, how it's been made is always good trivia IMHO. Also helps legitimating the "Mac OS X only" part I guess.

</comment></comment><comment><USER45> If you're looking for a Postgres (and general) database frontend, check out DBeaver. Not exactly a thin app, but comes with all the batteries included. It's been indispensable in my day-to-day work.

<comment><USER46> Looks great, thanks!

</comment></comment><comment><USER47> I have been using PG Commander so far and it's very similar to SequelPro

<comment><USER17> pgcommander sucks. It is slow, its interface is horrible, and query window is strange!

<comment><USER48> I don't find it slow. Which parts of it is slow? I'm not a huge fan of the query window and yeah the continual view can be a bit confusing.

<comment><USER17> The slowness I find I think its related to the continual view. What happens is I ran I ton of large queries, and then the window lags when I scroll. I should be better about limiting my queries when I only want to see a few records, however I am so use to sequel pro where it shows you the first 1000 by default.

<comment><USER7> If you get too many queries you can hit Cmd-L to clear the display in Terminal. I recently also added a cancel command to stop queries when you forgot a limit clause.

I know the Terminal in PG Commander isn't for everybody; maybe I'll change it in a future version.

</comment></comment></comment></comment></comment><comment><USER49> Looks neat! Won't display metadata correctly on PosgreSQL 8.3 or earlier versions though. This is the error I'm getting: "column "typcategory" does not exist".

UPDATE: added 8.3 version number.

<comment><AUTHOR> Thanks for the reply! It's using libpq 9.3 under the hood. I'll work on supporting earlier versions if it gets enough demands.

<comment><USER50> It'd be awesome to get 8.x support for working with quick Redshift queries. As is, there isn't a graphical interface to Redshift which is a bummer.

</comment></comment></comment><comment><USER51> :( No support for SSL connections. I'll be eagerly awaiting an update.

<comment><AUTHOR> Just released a new version with SSL support. Please try it out.

</comment></comment><comment><USER52> Thanks for building this, looks very clean. I'm sorely missing a PostgreSQL client similar to Sequel Pro. Valentina Studio is okay but the UI is too clumsy.

<comment><USER32> PG Commander has a better UI. Not as good as Sequel Pro for MySQL, but it's something.

</comment></comment><comment><USER53> Very cool, like that its in swift. I still feel like I've never had a very compelling reason to move away from psql itself, though?

</comment><comment><AUTHOR> Just released v1.0.2. Now supports SSL connections. Use the "Check for Update..." menu item to download the update.

</comment><comment><USER54> For SQLite users, I've released a web-based, python-powered database browser: [https://github.com/coleifer/sqlite- browser](https://github.com/coleifer/sqlite-browser)

<comment><USER45> Quite clean, nice job! I might have a use for this.

</comment></comment><comment><USER55> Where the fork is the forking "fork me on github" ribbon?

(i.e. is it going to be FOSS?)

</comment><comment><USER56> brew cask install psequel</comment>


List of almost all 5 chars available .com domains - <AUTHOR> http://dl.dropbox.com/u/3288629/domains-5.txt.zip

<comment><USER2> Perhaps you'd like to explain the merits of this?</comment>