HNHacker News
TopNewBestAskShowJobs

j-kidd

221 karma · joined June 21, 2011

submissionscomments
j-kidd··on An office with "library rules"
Where I work, the channel manager was given one of the two offices, and she makes sales calls all day, while leaving the door open.
j-kidd··on Dropbox Hires Guido Van Rossum
What Python package you tried to install that comes with "Unix dependency"?

I have 163 packages in my local pypi, and they work fine on Linux, Windows, and OS X.

j-kidd··on The Case for Drinking as Much Coffee as You Like
> The past couple of years have seen findings, that, taken together, suggest that we should embrace coffee for reasons beyond the benefits of caffeine, and that we might go so far as to consider it a nutrient.

That's the gist of the article.

j-kidd··on Developer Time
If you do not telecommute, you may want to set an end time to beat the rush hours traffic. One of the many reasons why it is unproductive to work in an office.
j-kidd··on Code sucks
When the existing code base is at least functional, then of course, a big rewrite is not warranted.

However, some of us are not as lucky. The situation is often such that the existing code base is full of bugs that it can cause a ton of support requests from the users, or even crash and bring down the production server.

In such situation, you can choose to firefight all days and have no time left to implement new stuffs, or choose to rewrite.

Not using the latest hippiest libraries is really the least of my problem.

j-kidd··on The Case for Drinking as Much Coffee as You Like
The article is about coffee, not caffeine.
j-kidd··on Love Your Terminal
Wow! I didn't know there is readline support for cmd.exe. This is great.
j-kidd··on Love Your Terminal
Kinda weird that the author mentions Ctrl-R but not readline. History searching actually works for everything that supports readline, e.g. bash, ipython, psql, henplus, etc, although personally I use page-up / page-down with:

    "\e[5~": history-search-backward
    "\e[6~": history-search-forward
The terminal experience becomes crappy when there is no readline support, e.g. everything on Windows, sqlplus, db2, etc. When there is no readline, I really can't love the terminal.
j-kidd··on Ninja IDE: written in Python for Pythonists
How about Komodo IDE / Komodo Edit, which are XUL-based applications?

Many users do value a good cross-platform application.

j-kidd··on Dbv.php: Database version control
Agree on all points. Timestamp is really no better than sequence number, and can cause bigger WTF moments with its automated "conflict resolution".

So, forget about timestamp and sequence number. GUID is the way to go:

http://alembic.readthedocs.org/en/latest/tutorial.html#worki...

j-kidd··on Introducing GNU Guix
Ironically, this Guix thing would be perfect... for Windows.

Right now, I have to maintain my own list of GnuWin32 installers (wget coreutils cygutils diffutils findutils grep gzip less patch sed tar unzip) retrieved from sf.net, with a 30 lines batch script to deploy them, plus a powershell command to retrieve wget as the first step.

j-kidd··on Bring Back the 40-hour work week (March 2012)
Get off the high horse. I am sure most people here experienced the "passionate" phase you mentioned. The problem arises when the passion fades, and you look back at the code with a clear head and realized how shitty they are.
j-kidd··on Notset: A Do-Not-Care value for Python
> First, unexpected arguments are immediately caught since they throw a TypeError.

> Without this, you either have to manually check for unexpected keys (probably doing a set difference with `allowed_keys` or something) or you just silently pass through unrecognized attributes, probably causing strange behavior later on.

The default constructor for SQLAlchemy declarative base does a simple check for unexpected keys, and it has served me well:

https://bitbucket.org/sqlalchemy/sqlalchemy/src/acbaeb1acb7d...

> Second, you are forced to say explicitly which attributes are modifiable. To draw from the 'person' example, `name` and `age` might be modifiable, but `admin` might be protected. That would be made abundantly clear by `update(person, name=NotSet, age=NotSet)`, but less so, by `update(person, attrs)` or `update(person, kwargs)`.

Whether a field is modifiable is often determined by the current user's access level and the current state of the object. So, putting such restriction at the function definition may have made things too rigid.

j-kidd··on RethinkDB: An open-source distributed database built with love over three years
Come on, Homebrew doesn't even have gcc.

I am not a Mac user, but a designer using MacBook joined our team last week, and we struggled for half a day with Homebrew. The next day, we installed MacPorts instead, and with just:

$ sudo port install python27 py27-virtualenv gcc46

we were able to proceed and get the whole stack up and running. Not to mention everything from MacPorts is installed nicely under /opt/local.

MacPorts is just way ahead of Homebrew. OTOH, Portage is way ahead of MacPorts ;)

j-kidd··on Git is cheap
This workflow only needs one extra step: treat master (git) / default (hg) as the unstable branch, and have a stable branch for stable release. There, 2 branches with simple CI setup and low cognitive overhead, suitable for a small non-1337 team doing B2B development. (unstable branch: User Acceptance Test, stable branch: training and scheduled deployment)
j-kidd··on OAuth 2.0 finalized
I always feel that Hammer was the one holding things back. This article kind of confirms that.
j-kidd··on Raspberry Pi Colocation
Edis also does KVM.
j-kidd··on Raspberry Pi Colocation
Edis is not what I will call "professional". I got a UK VPS and was given an IP config such that the default gateway is outside of the subnet, with no explanation given.

After some rather heated exchange with William from Edis, where he:

- gave no explanation

- yelled at me in CAP and bold

- showed a lack of understanding of the slash notation (e.g. 192.168.1.100/24)

I went around Edis and poked the data center, and the matter was mystically resolved shortly after.

Besides, I also experienced an unscheduled and unannounced downtime once in my short time with them. These things only happen with low end VPS providers, and of course AWS EC2.

j-kidd··on To understand the command line...
You mean down/up navigation.

Anyway, adding keyboard navigation directly to a web app (instead of as a browser extension) breaks the "do one thing and do it well" philosophy.

This is why Google Chrome doesn't allow one to use Backspace to go back to the previous page (the most used shortcut for a browser) or Slash to trigger inline search. Instead, you have to use CTRL-Left and CTRL-F, as the one-key shortcuts are reserved for their web apps.

j-kidd··on To understand the command line...
I would counter that with computer gaming. Everyone who plays computer games growing up would be familiar with the keypad, the arrow keys, or WASD. In all cases, UP is always above DOWN.

For this demographic, HJKL is just wrong.

Computer gamers are also proficient in controlling a keyboard and a mouse at the same time, so the home row argument does not apply.

j-kidd··on CoffeeScript: less typing, bad readability
May I ask what are the use cases for maps like that? I don't think I have ever needed one myself.
j-kidd··on PostgreSQL 9.2: Full-throttle Database
Personally, I found that SQL Server documentation was written to tick the checkbox of "100% documentation coverage", while PostgreSQL documentation was written for human to find useful information.
j-kidd··on Screw the Black Swans: Ichiro is our role model, not Barry Bonds.
He lost me at "put in their hours at the gym" and Allen Iverson:

http://www.youtube.com/watch?v=eGDBR2L5kzI

j-kidd··on Tough times on the road to Starcraft
The perpetual 2 months deadline is interesting. Is it because 1 month is definitely too short, while 3 months will invoke the wrath of Boss? I think a 2 months period hits the sweet spot where developers feel like they can get a lot done, without noticeably impacting the schedule.
j-kidd··on Scaling out Postgres, Part 1: Partitioning
Probably because the PostgreSQL people value humility more than hype.
j-kidd··on Scaling out Postgres, Part 1: Partitioning
PostgreSQL with sharding is called Postgres-XC.
j-kidd··on Heroku Isn't for Idiots
So, another pretty graph for Heroku, yet no comparison to alternatives due to the total architecture change. The numbers are useless for comparison purpose.
j-kidd··on Why Did I Choose Perl When Building Crowdtilt?
You need good developers to tackle those interesting questions. There is no answer, because you can only rely on rule of thumb and you must know when to break the rule of thumb.

PEP 8, on the other hand, is to get these good developers to agree on the less interesting things, such that they can use it as a stepping stone to the more interesting ones. PEP 8 requires strict compliance, because if different developer ignore different portion of PEP 8, you end up with nothing.

In short, if you have long lines of code crammed together with no spacing, get them to look pretty based on PEP 8 first before we talk about how easy is this code to test.

j-kidd··on Heroku Isn't for Idiots
> The persistence scaling story for Heroku seems pretty questionable to me.

Agree. Those people who tell horror stories about Heroku/EC2, usually give solid numbers, i.e. this was how much I spent, this is how much I save by moving away, and our response time is now X% faster.

On the other hand, we have article like this that shows pretty graph for a web app serving 16.2 requests per minute, and make bold claims that everything will scale.

j-kidd··on What 10gen nailed with MongoDB
I have no experience with Redis or MongoDB, but your statement is only true if the storage layer is transient. Some of us use servers that don't go away upon shutdown, backed by a SAN.
← PreviousPage 4 of 7Next →