austinhyde's comments

austinhyde | 7 years ago | on: Can a keto diet reverse diabetes?

Just for the sake of clarity, the article recommends bacon as a "source of healthy fat" (not a "healthy source of fat"), where they specifically define "healthy fat".

austinhyde | 8 years ago | on: How it feels to learn JavaScript in 2017

In all seriousness, if this is what you encounter at your workplace, you need to get out and work somewhere else; this is an extremely toxic environment.

Even if the build setup is the most complex thing on the face of the earth, if you or team members get reported for undermining the team because you don't understand it, then those are not the team members or managers you want to work with or for.

austinhyde | 8 years ago | on: p5.js – A library to make coding accessible for artists, designers, educators

Having gone through the process of marrying react and d3 - IMHO it's far easier to let react do DOM diffing and manipulation, and let d3 worry about data processing. The two work great together, just so long as you don't try to shoehorn one into the other. React more or less mirrors data(), enter(), and exit() with props, componentDid(/Will)Mount, and componentWillUnmount

austinhyde | 10 years ago | on: The Architecture of Schemaless, Uber Engineering’s Trip Datastore Using MySQL

There's probably a couple reasons, but I'll summarize my experiences with them.

I haven't dug into MySQL for a few years (last I really worked with it was 5.5), but out of the box, it does a lot of things that are pretty unsafe or encourage bad practices, such as truncating data when it's longer than the column size, inserting the zero-value for a NOT NULL column rather than erroring when a NULL is inserted, confusing timestamp column behavior, no DDL-level transactionality, etc. Additionally, and not necessarily a bad thing, but it has made some odd implementation and feature decisions that can be (IMHO) counter-intuitive or have a large impact, particularly with regards to how foreign keys get implemented, but also with things like not having schemas (database > tables, rather than database > schemas > tables), not having a boolean type, its datatype specification (int(1) means an integer that displays only a single digit, rather than denoting storage sizes), or the fact that every ALTER TABLE causes a complete on-disk table rewrite.

PostgreSQL, on the other hand, makes every attempt to keep 100% data integrity at all times, has a lot of killer features (probably the best date/time math implementation I've ever used, typesafe operators, etc), is generally very extensible, and most importantly, is extremely predictable. True, it doesn't have the same scalability features out of the box that MySQL does, but that's getting better every release, and as mentioned elsewhere, there's plenty of adequate third-party tooling available (e.g. Slony).

I think MySQL is very much so the PHP of the RDBMS world - it does a lot of silly stupid stuff - mostly for historical reasons - but in the hands of someone who knows how to use it properly, it can be an extremely useful tool. Postgres just defaults to being an extremely useful tool out of the box without needing to know all the gotchas that come with it.

austinhyde | 10 years ago | on: Database versioning best practices

Sure, I'll throw my hat in the ring here with a shameless self-plug.

I help maintain a database versioning/migration tool that my team has been successfully using for years now: https://github.com/nkiraly/DBSteward

The idea is that instead of managing a schema + several migrations, you just store the current schema in XML, then generate a single migration script between any two versions of the database (or just build the whole thing from scratch). The ideal use-case during deployment is to checkout the existing deployed schema into a different directory, then diff against the current and apply the upgrade script.

I've always found most migration solutions to be wanting, and while this approach has its downsides (things like renames can be hairy, need to explicitly build in support for RDBMS features), I do like it a lot more than the standard sum-of-changes approach.

The tool is still very much a work in progress, written in terrible 10-year-old PHP, and desperately in need of a proper rewrite and modernization, but it is definitely stable, safe, and production ready.

austinhyde | 10 years ago | on: Show HN: An Isomorphic JavaScript Framework Faster Than React

I'm surprised that no one's pointed this out yet, but isn't this basically the same as Knockout (http://knockoutjs.com/)?

The difference being that Knockout's been around forever (first release was in 2010), does two things and does them well (data binding and observables), and is very mature and feature-complete at this point.

I don't have any comparison performance-wise, but I don't see anything new and exciting feature-wise in JSBlocks that Knockout doesn't already do.

austinhyde | 11 years ago | on: Servers are fun: Ansible

As someone brand new to Ansible, and having been developing on OSX for years now, I'd just like to play devil's advocate.

Finding the Ansible docs (http://docs.ansible.com/) was not as easy as it could be, however, the install instructions were easily accessible from there, exactly where I'd expect them: Introduction > Installation > Latest Releases via Homebrew.

Second, yeah, pip sucks, I try to avoid it at all costs. However, homebrew (http://brew.sh/) is that one thing that all OSX power users should install as soon as they touch their workstation. 90% of the software - CLI or GUI - on my MacBook is installed and managed by homebrew. I cannot recommend it highly enough. In fact, I didn't even install Ansible through their instructions. I read about it somewhere else, and thought, "Hmmm, I wonder if this is in homebrew? `brew search ansible` Oh! Sweet! `brew install ansible`" Worked perfectly the first time, and I haven't fiddled with it since.

austinhyde | 11 years ago | on: Visualizing Algorithms

Not to be completely contrary - in fact, I much prefer SVG + D3 to canvas - but the canvas actually can support quite complex interaction and be performant if you put the time into it.

Take a look at OpenLayers 3. They have a few examples they use as benchmarks for canvas rendering: http://ol3js.org/en/master/examples/synthetic-lines.html http://ol3js.org/en/master/examples/synthetic-points.html

Granted, these absolutely crush Firefox (Chrome handles them fantastically; IE about average), but they're still great examples to how performant the canvas can be. As far as interactivity goes, all you need are a little bit of extra attention to your events and rendering, and it works just as well, if not better, than SVG in many cases. Look at http://ol3js.org/en/master/examples/draw-and-modify-features... for a good example.

And you're right regarding SVG overlays on a canvas - it actually works quite well: http://ol3js.org/en/master/examples/d3.html

Of course, OL3 is both highly specialized to mapping applications (you know, being mapping library and all), and highly optimized for canvas rendering, but it does serve to show flexible canvas can be.

(edit for formatting)

austinhyde | 13 years ago | on: Try Objective-C

Only one complaint from me: error messages. I realize this is probably a complicated problem, but on the other hand, can alienate beginners.

For example, on the first exercise, you're asked to write NSLog(@"Name"); When I did it, I first missed the semicolon, and got an error "expected ‘;’ after expression". Okay, fine and good, that makes sense. I added the semicolon and got "‘extern’ variable has an initializer" because I called NSLOG instead of NSLog. Even for a programmer, that's not a helpful error message...

austinhyde | 13 years ago | on: Why do we tolerate shitty, mean behavior like this in programming communities?

I'm a few days late to the conversation, and this will probably fly under the radar, but here's my two cents.

I'll start by saying that I believe Linus was justified in the intention of his response, but not the execution of it. Linus, like it or not, is one of the lead maintainers (if not THE lead maintainer) of one of the most used pieces of software in the world - the Linux kernel - and is responsible for how well it works. If one of the other maintainers screws up, it's his job to make sure that (a) it gets fixed and (b) it doesn't happen again. This is the intention of his response - informing a maintainer that they screwed up, how they screwed up, and not to let it happen again.

Now, I think the most important thing to take away from both Linus' response and "What It's Like To Be Ridiculed For Open Sourcing A Project" is the relationship of the abuser to the abusee.

First, in Linus' case, Mauro is a volunteer and working under Linus, for all intents and purposes. Do I think Linus is justified in his response? No - his response is overwhelmingly immature for a professional. But I do believe that his response is expected; Linus is not exactly known for his tact and kindheartedness. I also believe that it is Linus' responsibility to keep those working under him aligned to the goals and values of the project, especially a project as far reaching as the Linux kernel. It's up to Mauro to learn from his mistakes or pack up and go home. Sure, it's abusive, but Linus and Mauro are not spouses.

In Heather Arthur's case however, the relationship is that of peers. The way her and her project were treated are downright despicable, especially in a community that is normally so constructive and welcoming. What happened here is completely opposite of Linus' response; this is not a supervisor chastising his underling for a poor job, these are fellow developers baselessly bullying another for publishing code that was useful to her. Heather was not forcing this project on anyone, nor did she claim it was better than anything else; it was merely useful to her and wanted to share it.

Here's the thing though: we don't tolerate "shitty, mean behavior" in programming communities. In Linus' case, most of us have simply accepted him for who he is: an immature, obscene, yet brilliant developer. We put up with him only because of the impact he has had and is continuing to have on computing as we know it. However, he is an outlier - any one else who acts as mean-spirited and childish as he does is immediately called out. Look at the outcry from Heather's blog post and the immediate apologies by the perpetrators. As a community, we almost unanimously frown upon "shitty, mean behavior".

Just because it happens, doesn't mean we tolerate it. The internet is full of immature, self-righteous, sarcastic, arrogant, elitist, and/or antagonistic assholes, and as we grow larger as a community we will see more of them. But that doesn't mean we support it. I love the programming community because of how open, constructive, sharing, supportive, and welcoming it is to newcomers and existing members alike. The thing that stands out to me, though, isn't the aforementioned assholes; it's how we respond to them that matters.

austinhyde | 13 years ago | on: Ask HN: What is your OSX virus defense strategy?

Well, my number one defense has always been (regardless of operating system) to (a) not visit shady websites, (b) adblock, and (c) don't open email attachments from untrusted senders.

I've been using the free version of Sophos (http://www.sophos.com/en-us/products/free-tools/sophos-antiv...) on my MacBook for a year or two now, and haven't seen any problems yet. I'm not sure if that means it works, or if I just haven't caught anything yet.

page 1