HN user

Locke

764 karma

[ my public key: https://keybase.io/ericidema; my proof: https://keybase.io/ericidema/sigs/lXdL8-79O5kKnqKbs5KrqgjqCSqnOm8p_I3S7M_hxo8 ]

Posts13
Comments131
View on HN

I wish we responded to situations more proportionally.

In this case, someone made a joke about women not liking to reveal their true age as they get older. It's a boring cliched joke. Something I've heard too many times in my life (and, most often from women). Is it sexist? I can see the argument. Is it professional to make such a joke on a ruby mailing list? I don't know, perhaps not.

Does it warrant responses like "Knock that bullshit off." or "you made an ass of yourself"... I don't know. Seems a little ironic to use unprofessional language in this situation. Maybe even worse than the joke itself? I don't know.

Then, folks take the discussion to github and twitter (and, eventually reddit and hn). Presenting only their verdict: "A newer member made a sexist joke, and was called out on it as being inappropriate." No links to the joke. No evidence that the joke is sexist. This makes it so much easier to imagine something really bad. No, we just get a verdict and we should all rise up against this sexism (which absolutely is bad, of course). Let's get our pitchforks. This amplifies one side of the argument and shuts down any useful conversation. Worse, it's used to rush through a CoC change without allowing any thoughtful discussion.

Is this reaction proportional to the original joke? Is the reaction itself exemplar of how we would like to conduct ourselves?

One of the most amazing things about suicide is that over the past 80 years or so in the United States, suicide rates have been extremely flat. The fact that suicide rates have not changed in response to changes in medical technology and other ways of life is astounding.

This may be true in the US, but in Greenland it seems like suicide rates have changed in response to changing ways of life:

http://www.npr.org/sections/goatsandsoda/2016/04/21/47484792...

Hi Sid,

Thanks for the follow-up. I appreciate it and I'm glad that my feedback might help improve your hiring process.

I don't mind your comment, and I hope you understand that there are no hard feelings at all. I hope you understand that my goal is not to damage Gitlab or yourself in any way.

I would like to say, I've been impressed by the openness and transparency at Gitlab, and I think this goes hand-in-hand with a desire to do the "right thing" in every way.

It is with that in mind that I posted my experience, because I think there are problems with the way our industry approaches hiring (as seen in our poor diversity numbers, age discrimination, etc) and more openness can only help. I wish more people shared their experiences, and I wish more companies were open to refining their hiring processes.

My recent experience with Gitlab:

Went through several interviews with them, including their technical interview and had a blast. Met some nice folks and was having a lot of fun interviewing with them.

Was told, "I am confident that you would be a great addition to the team."

Then I hit a wall when Sid (sytse here on HN) was unavailable to perform the next interview for an indeterminate amount of time. Ended up waiting 2 weeks between interviews.

During that time I received an offer from another company and, asked if they could move things along or, perhaps, provide some timeline. At that time they made an informal offer via email.

Then, there were two problems as I see it:

1. The offer was significantly less than the floor I had given during the screening interview when asked about salary expectations. During that interview, the interviewer gave no indication that my expectations were out of line with Gitlab's salaries. [1]

2. When I finally interviewed with Sid, there was no mention or acknowledgement that an offer had been made.

My interview with Sid was tough, and definitely not what I was expecting after my earlier success interviewing with the company. Ultimately, he decided not to continue with my candidacy. I don't want to get into a "he said, she said" thing here, so I'll leave it at that.

I hope this post does not come off as "sour grapes". My objective is not to trash anyone at Gitlab, there are a lot of great folks over there. I think there were some surprises in their process and I would have liked to have known these things upfront before I contacted them.

[1] While I was still interviewing they edited their handbook to indicate that "Many of our team members who have joined have taken a decrease in compensation." https://about.gitlab.com/handbook/people-operations/#compens...

As a thought exercise, suppose I have my User class and now I would like to write it as json. Do you think it would be strange if the established solution were this?

    class User < JSON::Base
Where by extending JSON::Base, I now have access to helpful methods like to_json?

Instead we have JSON.dump(user). And, if I need to customize the way the User json is written, I can opt in by defining a method. Thanks to Ruby's open classes, I can make the definition of such methods optional, suppose a separate file includes something like:

    class User
      def as_json
      end
    end
Requiring this file will bring in the extra json behavior without littering my actual user.rb with the details of how a User is written to json. Whether this is worthwhile or a bad idea is debatable, but I like that it is possible.

Now imagine if persisting a model to the database were similarly flexible? What if we could do this?

    ActiveRecord.save(user)
Maybe it would be a good thing, maybe not.

As it is, I've come to accept the ActiveRecord approach, but when I create a model that extends ActiveRecord::Base, I think of it, not as a User, but an ActiveRecordPersistedUser. Where it makes sense, I separate my BusinessModel's from my ActiveRecordPersistedBusinessModel's for clarity.

Nostalgia warning: I also grew frustrated with Rails / ActiveRecord and jumped to Merb / DataMapper with excitement. Perhaps it will sound like a small thing, but I remember feeling especially frustrated that every ActiveRecord model became such via inheritance. This drove me crazy:

    class User < ActiveRecord::Base
Why should my `User` extend from `ActiveRecord::Base`? Is a User of my app also an ActiveRecord::Base? What is an ActiveRecord::Base anyway?

So, when DataMapper came along and favored composition over inheritance I was sold.

However, my experience with DataMapper was that it didn't have the stability of ActiveRecord, nor did it reach feature parity.

And, then Rails killed Merb. At the time I thought it was a tragedy. The competition Merb provided did improve Rails, it would have been nice if that competition had been longer term, though. On the flipside, I wonder if there would have been enough community to support two large Ruby web frameworks.

In the end I made peace with Rails and ActiveRecord (and, believe it or not, even ActiveSupport!). I don't have great love for Rails, but it is a powerful tool, so I accept it for what it is.

That said, I think the author's criticisms are well stated and hopefully there will be some influence on the future direction of Rails, etc, and the way devs approach Rails.

I read somewhere recently that replacing the dollar bill with a dollar coin would save about $5 billion over something like 30 years.

The trick is no one actually wants a dollar coin.

I hate to be unhelpful, but I think this problem is intractable.

The fact that these meta discussions predictably offer a wide array of solutions -- many of which are at odds with one another -- leads me to believe there isn't a solution. In fact, it seems like many of these discussions devolve into:

    1. I have an idea!
    2. Yeah, but that won't work because...
    3. Oh, in that case we could just...
    4. But, then...
The "quality" of HN and it's community is a function of many variables. It's hard, maybe impossible, to tweak the site and expect predictable results (and, there are always unintended consequences).

It doesn't help that the feedback cycle is so long.

Let's have a hypothetical. Suppose, we decided the problem was that HN had become to design-centric. We want fewer designers and more programmers. So, let's make HN ugly. Really ugly. Then all the designers will leave and we'll be left with programmers. How long after making the site ugly will we have to wait to see the results? What if the designers retaliate by making a client-side css hack to make HN look even better? Do we end up with more or fewer designers? Did we do damage to the population of programmers who also happen to be designers? And, how do we account for outside influences? What if a prominent designer linked to HN the week of our changes and our tweak is overwhelmed by the flood of incoming designers?

I hope I'm wrong. I've been here 1467 (!) days, I'd like to stay a long while longer.

Earnings are important, I'm sure -- but don't mistake them for wealth. I've known people with ludicrous earnings who still lived pay check to pay check. In fact, I suspect it's all too common.

Here's an eye opener: You're a mid-level employee at a medium-sized company and you realize you're as wealthy as your spend-thrift CEO who is making >10x as much as you are.

This is not so much a possibility as an inevitability. Chances are you will fall in love and it will disrupt your life whether you're starting up or doing something else entirely. If you're fortunate, you're new significant other will be a disruptive, yet motivating force. Moving you towards new heights that you had not imagined. But, it's more likely to be a struggle to balance your life's goals with your desire for this new person. Ultimately, you're startup hopes might be replaced by new goals: a family and all that entails.

These things are not mutually exclusive. If you take an all or nothing view, you're being naive. You can have some percentage of a solid relationship and career (whether a startup or something else).

Life is messy. You'll have to decide if your relationship allows you enough time to meet your personal goals and if that even matters. Only you can make this determination.

As for me, I've been with my wife for over 10 years (most of it dating), and... honestly? I think this relationship has had an adverse effect on my goals. I, kind of, think I'd be much more rich and successful had I never met my wife. On the other hand, when she's gone for a weekend, I always think, "I'll get so much done when she's gone"... but, I often end up mired in the "blahs" until she returns. And, honestly...

I think I've slowed down a lot as I've gotten older. I think back on things I accomplished in 3 week coding marathons when I was in college and, while I think I'm a better programmer now... well, I don't repeat those accomplishments. I get more done in less time, but I'm not able to sustain a marathon for multiple weeks. You may be different, or that might be part of getting older.

Ultimately, I've been moderately successful (my business represents the bulk of our income), but not wildly successful. I've come to think less is more... and, I'm happy with that. I doubt I'd be happier single with a larger business and more money.

But that's me...

I don't think this article is making a claim about whether or not these phrases indicate that someone is about to lie to you.

The phrases themselves are often untrue.

For example, if I say "It’s not about the money, but...", what follows is not necessarily a lie. What the article claims is that I'm about to make an argument based on money and that I'm trying to preemptively deflect any counter-argument. Therefore, the phrase "It’s not about the money, but..." may, strictly speaking, become untrue. But that doesn't necessarily have any bearing on what follows.

- Write a video game emulator (any old console or computer platform)

- Create a programming language

- Restore an old broken down pinball machine

- Build a mame arcade cabinet

- Write some Interactive Fiction

- Learn to make awesome programmatic artwork with something like Processing or Nodebox

- Create a roguelike

The quote is fine. I worry about this glorification of violence. The original article and this thread seem to be filled with adolescent fantasies of revenge against bullies past and future.

I hope this is mainly internet posturing and bravado.

I'm not sure every child has the perspective to recognize hyperbole. There are times when violence may be necessary, but that doesn't make it any less horrible, whether justified or not.

I don't necessarily disagree with the original article or this sentiment. However, I have a hard time reconciling telling your child to stick up for him or herself when bullied vs "send him to the cemetary" or "As soon as he turns around, hit him in the back of the head as hard as you can. If you’re much smaller, pick up a hard object and do it."

These are children and their judgement is not always the best. Do you really want to risk that your child kills another child by accident while following your advice?

Will your child know how far is far enough? Is there a chance he or she might over-react to a situation that is not truly threatening?

My use of fvwm has become so minimal that I'd probably be better off switching to one of the tiling window managers.

I have chromium occupying an entire page of my virtual desktop with no window decorations. On another I have firefox (mostly for development with firebug). On the others I have 2 xterms side by side running screen.

For every project, I create a new screen config which defaults to opening / launching whatever I need for that project. For example, a rails project might have several zsh's already cd'ed to the models, views, and controllers directories (and probably the public javascripts and stylesheets directories). I'll also have script/console and either mysql or psql running.

In fvwm, I have a menu with an entry for each project that launches xterm and starts / reconnects to the right gnu screen session.

I have a bunch of keyboard shortcuts for navigating my virtual desktops and moving xterms around, etc. I only really use the mouse when I'm working with one of the browsers. Another reason I'd probably be better off switching to a tiling manager.

The nice thing about fvwm is that you can arrive at something that's highly personalized. I'm really efficient / comfortable with fvwm now, but it took a long time to get here. I'm not sure I'd start over with it.

I've noticed that the more time I spend focused on work the more out of date I get with the cutting edge.

I'm on a 3 or 4 year old thinkpad (love the keyboard!) running gentoo linux. I use fvwm, xterm, gnu screen, chromium, firefox, ruby, rails, postgresql, mysql... Blah, blah, blah depending on the project.

But, please, don't copy me unless you want to be sofour years ago! : )

This is a great post from a publicity standpoint. It's never a bad thing to put a human face on your business, especially if you're still small.

But, I'm afraid, the only real long-term solution to a security problem is better security. This isn't a people problem, it's a technical problem and will require a technical solution.

I was just thinking today how wonderful it would be if my web browser let me navigate tabs with the same key bindings as screen.

If I had a nickel for every time I've done "select all" when I wanted to quickly switch back to the last active tab.

I'd have preferred to see a more detailed breakdown of apps. It may be a terrible market for utility apps. Or, for apps that are more feature than product. How many apps are truly products with solid business models? How do these apps do?

Or, how does the picture look for games? Especially now that game developers can embrace a virtual currency / goods business model. They can get all the distribution benefits of being a free app while still making (potentially much more) money over a longer period of time. Or, do these apps not count as apps because they're too close to the web-based games that are doing so well on Facebook?

If you're a developer, looking at industry-wide numbers is good, but it's better to research the apps in the niche you plan on entering.

The liquidity of Facebook Credits is a major problem. They are asking game developers to give up control of their virtual currencies. When you control your virtual currency you can use it in so many ways to influence user behavior.

You can give away your own currency to lure back wayward players. You can use your currency to smooth over customer support problems (lost some of your inventory due to a bug? Sorry, have 1000 gold). You can run contests where the grand prize is $100 of virtual currency. And, so on.

You won't be able to give away or otherwise manipulate Facebook Credits in the same way you can your own currency.

Of course, you keep your own virtual currency and accept Facebook Credits. You just need to ask your players to exchange real money for Facebook Credits, and then exchange Facebook Credits for your currency, and finally exchange your currency for that neat power-up they wanted. That won't confuse anyone.

Some of the stats are kind of self-explanatory.

For example, "#8 seeds often upset higher ranked teams. In the four match-ups against #2 teams, #8 teams won twice. They have also beaten #4 and #5 seeds more often than they lost to them."

For an 8 to play a 2 (or 4, or 5) they'd have to have already beaten a 1. That's a pretty good 8. The typical 8 will have already lost to a 9 or 1.

Personally, I love Ken Pomeroy's rankings / predictive model (kenpom.com). It breaks games down into possessions and then builds a statistical model of each team from that. The predictions seem pretty accurate by the time February rolls around.

Of course, the biggest caveat of this kind of model is that it doesn't take into account extraordinary events. For example, a player gets injured or comes back from a suspension.

I think this observation is very true with respect to sharing with the internet at large. It's easy to dismiss some new (personal) discovery as unremarkable or obvious -- but, there are probably people out there who would find a write-up of that discovery interesting. This is probably especially true about more domain-specific bits of knowledge.

In that case, I don't think not sharing is an intentional choice to withhold or hoard information. The individual simply didn't realize there was any demand for that information. Or, perhaps there wasn't enough value in that information because anyone with an interest would make the same discovery on their own easily enough.

It doesn't mean that the same individual wouldn't share that info with someone who asked directly about the subject.

Yes, they are different. For example:

    def ex1
      a = 5

      if a
        puts "a: #{a}"
      end
    end

    def ex2
      if a = 5
        puts "a: #{a}"
      end
    end

    def ex3
      puts "a: #{a}"  if a = 5
    end
If we start with the code in ex1 and decide to shorten it, ex2 is okay (although some people don't care for assignment in a conditional because it could be confused for a typo). But, ex3 will raise an exception that 'a' has not been defined.

I've just internalized using the longer form when using assignment in a conditional.

Sorry, I meant to give the opposite impression. Everyone sucks when starting out with something new. Maybe acknowledging that can help with "first move" anxiety.

Either I didn't express that very well, or it's just not that insightful.

I've learned many abstract strategy games. I play some fairly well, others not so much so.

When I approach a new game, I assume it will take many hundreds (or thousands!) of plays to become truly good at it. I assume that I will play poorly for my first N games -- so, it's best to get them out of the way as quickly as possible. I try to think in terms of, "did I learn something from that loss?" -- if the answer is yes, it was still a worthwhile experience.

I think this is a good lesson for learning anything new. I think my first N programs were extremely poorly written. There was so much that I didn't know when I was starting out with programming! Now, 10+ years later I feel like I have a pretty good handle on things, but there are still areas of programming that I would like to know better.

I expect I'd see the same pattern learning anything new. If I were interested in drawing I'd expect the first hundred or more pictures to be lousy. If I wanted to become a writer, I'd expect the first hundred stories to be boring or full of misspellings and poor grammar.

For me, the question is: Does this knowledge make it easier or more difficult to start a new pursuit?

I often "think" on paper. So, I use a pen and paper almost every day.

This isn't writing intended for consumption. I'm the only person who ever looks at my own notes, and even then I only ever look back a page or two. Because I'm thinking through a problem or design, older notes are usually less valuable -- either I've changed my mind on the topic (arrived at a better solution), or I've implemented the solution and moved on to something else.

My notes include a lot of lists, diagrams, symbols, follow-up thoughts in the margins, etc. I think writing the equivalent notes on computer wouldn't feel as natural.

I don't write very quickly. I only need to keep up with my thoughts, so that's not a problem (I'm not sure I didn't insult myself just now).

Anyway, my handwriting is probably fairly legible -- a side effect of not being in a hurry. I imagine it would look different if I were trying to get words on paper as quickly as possible. I print, but over the years some of the letters have developed there own style. I suppose that happens to most people's handwriting.

Cut-and-choose is known as the "pie rule" in the abstract gaming world.

For games with a clear first move advantage the pie rule is sometimes applied to balance the game. The first player moves, and the second player then has a choice of continuing the game or switching sides. It is therefore in the best interests of the first player to choose a fair move.

Naturally, this only works if the first move possibilities include moves that range from good to bad.

Still, it's a nice example of a meta rule that can be applied to most games.