HN user

tdavis

6,243 karma

codes+designs websites; wears pants.

yc summer '08

http://swaptitude.com - Skill exchange for the creative community

Posts16
Comments1,209
View on HN

Kids, this isn't hard. Just apply a little logic. Statements like "all I care about is what you have done/created/accomplished" is predicated on the notion that everyone is already equal. That we all have the same access to opportunity, encouragement, resources, etc. Whether through malice or simple disinterest, you've managed to hold onto a basic assumption that would be exceedingly trivial for you to disprove.

And that's why programs like this are still necessary. Because it isn't about you. Nobody gives the tiniest shit that you "couldn't care less" (which is obviously untrue given your blatant condescension, but whatever). Is there gender discrimination in technology? Yes, obviously. You can't turn around without running into research supporting it.

We could all continue to imagine there isn't; that our personal metrics for measuring the worth of another human being is the source of truth for an entire industry or society. As someone who suffers no discrimination, it's the most convenient thing for me! But, hard as it is to believe, some people actually lose in this scenario. And apparently they're still upset about it!

Whether through gender discrimination that continues to limit a woman's choice in career and within her own body, or the systemic racism that has managed to convince many that black people simply want to be poor and shot by police, we (the U.S.) as a society have no shortage of willfully-ignorant assumptions about equality. How about doing us all a favor by becoming a little less ignorant? It doesn't hurt, I promise.

Cool straw man, bro. Would have been even cooler had she actually made any claim that men were only capable of this "mistake". Or that your carefully constructed counter-argument weren't trivially proven false. But, whatever, you tried.

Simple pattern matching tells me you must have used car parts where your brain should be, so I guess we're all susceptible to this sort of mistake. And I'll be damned if I don't feel at least as confident in my assessment as you are in yours. I don't even know anything about cars! Now I feel like a hypocrite.

My setup is Emacs + workgroups.el + prodigy.el. No GUI apps to manage, everything configurable via elisp. It is grand.

Circus is awesome. In fact, this Mozilla team has made a bunch of very nice libraries available; with the latest project I'm working on, I use so many that I feel I practically work there.

shrug I will always bottom-post when context matters and always top-post when I expect the reader to know the context implicitly. And I will never read an email chain that requires me to start from the bottom and work my way up.

The Best 14 years ago

What a silly straw man argument. No doubt why it is the #1 comment. If I write a particularly effusive post about my love of dogs--how I care for mine meticulously and spend time researching the best toys and vets and so forth--am I celebrating Dogism to the detriment of what is "ultimately important?"

The irony of this comment is that your strong discounting of Dustin's point of view is the exact same as your equally strong support of your own. In the same breath you deride him for "being" a materialist and define yourself as "being" the opposite(?) of one. There is no ultimate truth to what is or isn't important in life. What is important in life to you appears to be other people--and strong identification with that position. Maybe Dustin also values other people. Maybe he identifies more with the point of view he presented. Maybe he cares for neither and thought it would be a good story. Who knows. The real question is, why do you care so much?

If your wife is anything like me—and her symptoms are identical to ones I had during an earlier stage of my depression—then they are real and should be examined. Even if they never worsen, they are needless anxieties to carry around.

There are no external problems. Everything is as it is; we choose to interpret the stream of input as problematic, or not. Sometimes we inject falsehoods into the stream ("nobody likes me") to nurse our fear.

It isn't necessary for your wife to live every day peering over her shoulder. Nor convincing herself that her friends and coworkers dislike her. Nor experiencing any of the other anxieties she no doubt simply takes for granted. As someone who carted so many around for not less than a decade, believe me: they're not worth the luggage fees.

Slowing Down 14 years ago

I can't overstate how important I think these sorts of habits are. A slow walk. A quiet meditation upon waking. In aggregate, they can really change your life. The problem is, these habits aren't easier to develop than any other. They take practice and time to become innate.

We "make time" for all sorts of destructive habits. I gave smoking hours of each day for a decade. Anxiety, worry, hurry, they'd run my life for more than that. Don't set out trying to replace them. Make it OK to be a few minutes later walking home; a few moments later to work. Make time for these good habits and the bad won't stand in the face of them.

Agreed. As is so often the case, "unique" is utterly misused here. That being said, having used Go, I really do enjoy the composition-at-core design.

The difference is that your application server doesn't render HTML; there is no view that produces HTML and sends it as the HTTP response. It's just flat HTML, served up by a generic web server.

This means, among other things, you don't need server-side URL routing or templates. (You need routing for the REST layer, but that can usually be dynamically generated.)

It's just a much stricter separation: the client deals with view logic and HTML and all that, the server deals with pure business logic behind defined interfaces and data formats.

Excited for the technical write-up as well. I've been building an app in Angular myself and I absolutely love it. Coupled with a REST-ish API library, it's a breeze in terms of testing and separation of concerns. After using Angular, I can't stand the circus of "server renders HTML that includes JS that has server return JSON that's handled by JS that has server render this other thing..."

I was reluctant to setup two-factor for a long time, perceiving it to be an unnecessary hassle. Then somebody tried to gain access to some of my accounts through my Apple ID. They were unsuccessful (I don't have any common passwords these days so managing to send a password reset to my GMail wasn't terribly helpful) but it certainly made me paranoid enough to switch.

I currently have two-factor setup on two accounts. I won't say there's no hassle involved--authorizing a machine via SMS so that I can login and generate an app-specific password is a chore--but the peace of mind is well worth the hassle.

Did you also know that you can re-assign your Apple ID to an existing e-mail address? Like, say, one you have two-factor enabled for? Now people can socially engineer Apple's flawed policy all day but they'll need to steal my phone, too.

EDIT: Also, if you don't have backups, you might as well just delete everything yourself right now and use that as motivation to prevent the same thing from happening again. Hackers, tornadoes, spontaneous combustion and ghosts are all conspiring to destroy your data sooner or later.

A Bad Privacy Bug 14 years ago

As much as anything else, this is another great example of MySQL letting you shoot yourself in the face by default. I also love that you can save "y" to an integer field without complaint. It seems obvious that accurate data validation and comparison would be the cornerstone of a successful relational database, yet MySQL defaults fail to provide any domain-relevant value whatsoever.

That was my immediate reaction, too. Though it sounds like the node.js server is doing more than your standard bouncer; ZNC support seems unlikely.

I wonder what I'm doing wrong, then. Almost nothing on my T420 worked OOB. I've written custom acpi event scripts for handling docking, monitor switching, etc. Forget about the Function keys... (okay, that last part may be xmonad-related)

Mosh: SSH for 2012 14 years ago

Instead of fake security solutions, how about using something like keychain (http://www.gentoo.org/doc/en/keychain-guide.xml)? Simply kill ssh-agent as part of the sleep event and you can have security and convenience. Trivial to implement and actually accomplishes something--unlike changing server settings in a scenario where I probably have access to your computer, which already knows how to login to your server!

Now make some other code use your "mock" without editing its source. Now assert on the calls made to "bar()," including arguments. Now make it raise an exception without writing a second class. And make it return something else without writing a third. Now patch a built-in. And a context manager. And a dictionary. When you're done with that, mock a class without writing a new class at all.

If you honestly think that sub-classing is equivalent to mocking/stubbing, you don't understand the purpose of the activity.

Having spent many hours of my youth on technology forums, I feel I am qualified to say: this is the most banal "show your setup" post, ever.

Save Noah, it's just an Apple Store. Sam's apartment/house looks great, though.

One of the many things I love about using next to no GUI programs and a minimalist window manager is the lack of notifications.

The only time I get a notification is when I receive an email (assuming I have a terminal running mutt for that address) or a PM/IM (assuming I have a terminal running irssi). And the notification? The color of a 30x10 pixel block changes from black to red.

I can turn off this notification on a service-by-service basis with a simple hotkey that disables the visual bell in my terminal.

That's it! No growl-like service telling me when anything happens anywhere in the world. No badged icons reminding me I still have 17 unread items. If I want to be distracted, I switch desktops to see what alerted me; if I don't, I can ignore that one for hours.

Yes, it's probably an order of magnitude more expensive when accounting for the countless hours spent pre-optimizing everything, tracking down intensely opaque performance issues, dealing with the AppEngine team's tendency to introduce changes that entirely alter performance characteristics without notice, and etc.

This, of course, is on top of the now rather ludicrous cost associated with maintaining a write-heavy application that must be both highly concurrent and consistent, with a large number of composite indexes and relational schemes that the datastore was simply not designed to cater to. That isn't AppEngine's fault, but it is by no means a generic hosting platform and I truly believe that their goal of creating an "infinitely scalable" and robust system is directly at odds with providing a product that is a good choice for the majority of applications.

Frankly, having worked on a serious AppEngine application for over a year, it most certainly is not. Of course, that isn't an absolute statement--perhaps some serious applications do exist on AppEngine, and leverage it in a way that doesn't cost countless thousands in hosting and development costs. The one I work on doesn't fall into that camp. I miss managing my own infrastructure more than anything.

There are two classes of programmers: the taught and the self-propelled. You can certainly teach someone to program--what they do after that defines the rest of their career. No CS curriculum will give all the information one needs to be a great programmer, but it's certainly possible to have a long and mediocre career as a taught programmer.

I would wager a majority of the best programmers are also self-taught, though. Not because College is a bad experience or sets you up for failure, but because it's really internal motivation and curiosity that makes a programmer grow, not something they learned in a CS course once upon a time. And you've got to be pretty damn curious to make a career of programming without any formal introduction or education.

This may not apply to everyone, but I found the thing that consistently removed my procrastination was simply to stop working in isolation. Whether it's going to the office of an employer or renting a desk at a co-working space, being around other people who are being productive worked wonders for me.

I used to think there was some fundamental flaw with my psyche; I would procrastinate quite often and always feel utterly depressed afterwards. Turns out that external motivation and clear delineation between "work space" and "play space" was all I needed. I still work after work pretty often, but usually on other projects. If I just sit around and watch TV or play video games I don't feel badly about it because I know I just put in 8 hours of solid programming, which is something I used to think myself utterly incapable of.

If you're in an environment where watching Hulu all day is acceptable, find an environment where it isn't. I practically guarantee it's all you'll need.

Fedora 16 Released 15 years ago

I, too, am a Productive Member of Society which means two things: I gave back the terrible Macbook my employer provided and seamlessly and painlessly upgraded from Fedora 15 to Fedora 16 earlier today. Here was my experience:

1. Run preupgrade

2. Reboot

3. Load up xmonad without issue

4. Ask a couple low-level upgrade-related questions in #fedora; get answers in a couple seconds

5. Get back to work

I'm really failing to see what point you're trying to make with your comment, aside from noting that your old version of VMWare Fusion doesn't play very nicely with this Fedora release and that installing VMWare Tools on Linux is a pain in the ass (something I would never dispute, but then running the real thing absolves you of the need to run a VM).

I'm sorry about your experience, but as far as mine is concerned this is another swell Fedora release. Thanks, everybody!

I think bad_user covers most of it, (although to be fair misses the mark on some things too; there is no 5000-entity limit per query if you use the query as an iterator rather than calling fetch(), which is a much better idea generally) but it's not that deployment itself is difficult--that's the only easy part, frankly.

What's tedious is development, due to all the restrictions and extra concerns necessary. They may make total sense for Google but make zero sense for the rest of the world's applications.

As one simple example, everything you need to be consistent must be handled in a manual transaction but transactions are slow and prone to collisions with insane time-outs (e.g. a request takes 45 seconds because a transaction couldn't commit the first time). Don't even get me started on cross-entity transactions or parent/child relationships, both of which you can use to completely destroy all semblance of performance in an application. Something you take for granted every day on any other platform (transparent, fast consistency guarantees) is of constant consideration and concern on AppEngine--and the APIs presented for it are pedestrian.

These are not intractable problems; none of AppEngine's shortcomings are, really. But the huge number of man-hours spent dealing with its terrible APIs, restrictions, and astounding pre-optimization requirements are hours that could have been spent self-managing a much more user-friendly platform.

After a year of working on a midsize AppEngine project targeted at large enterprises, I can honestly say that AppEngine's only truly redeeming quality is its Google integration. Our product is an add-on for Google Apps; AppEngine runs on the same infrastructure; big companies like that.

If this doesn't apply to you, choose an up-to-date, cheaper, more versatile, far less tedious deployment platform. I've spent the past 10 years developing, deploying, and maintaining web applications of most sizes and I've never had a harder time "scaling" usage of mere GB of stored data. Maybe if I had 100TB then AppEngine would make the "impossible possible"; for the rest of the 99.999999% of the Internet, it makes the formerly trivial insanely tedious.

I think it depends on numerous factors. For instance, I have spent so much time at a Kinesis keyboard that a laptop keyboard slows me down. Not by orders of magnitude, but enough to be annoying.

I used to exclusively work at two 24" monitors. Then I switched to a tiling WM and from many years on OS X back to Fedora. I found that the WM/OS switch improved my productivity to the point that I was better off on a 15" laptop with those two changes than before them on two monitors. And the setup was around $2,000 cheaper.

Now my ideal setup is a single large monitor along with familiar peripherals (Kinesis, trackball), xmonad, and Linux. If you'd told me a year ago that I'd be happier with one monitor than two--or nearly as happy on a laptop as a desktop--I'd have said you were nuts. But, here we are.

I agree that the difference in productivity between the worst-case (Mac laptop) and best-case (Large monitor; peripherals; xmonad) is not orders of magnitude. But I would say that over time it has come to approach 2x, which is not at all insignificant.

And I think "expense" matters little compared to "comfort". If a keyboard that didn't cost $250 was just as comfortable for me, I'd buy it. In the case of this particular switch (laptop -> linode), the comfort level would be close for most tasks as I already live in Vim and things with Vim-like bindings. But the totally new window/peripheral interface would definitely slow me down. I've spent enough years comparing environments over long periods of time to know that.