HNHacker News
TopNewBestAskShowJobs

xrstf

1,000 karma · joined December 1, 2014

submissionscomments
xrstf··on Show HN: passgo, a command line password manager written in go
It reads to me, in one simple word, as "not Node, so you don't need tens of megabytes worth of node modules and you don't need a working C compiler in case some of these modules want to compile stuff natively (something that is more and more common in my experience). Also, performance and startup time (!) will be good."
xrstf··on O Reader My Reader – Remembering Google Reader
> Sites will run analytics and see that nobody is clicking the feed button.

I barely ever click on any RSS buttons. Partially because sites nowadays don't even bother putting one in there, partially because TinyTinyRSS extracts the feed from the site's <head> automatically.

So running analytics on that button would be very misleading, especially for users like me ;-)

xrstf··on The impact of Prince’s death on Wikipedia
Finally a replacement for "Site got slashdotted": "Site got Prince'd". I like it.
xrstf··on Free VPN integrated in Opera for better online privacy
The VPN is operated by "SurfEasy Inc., an Opera company based in Canada".

Just tested it and it worked flawlessly to watch a YouTube video that has been blocked in my country. [Edit: Netflix seems to block SurfEasy already. Sad.]

xrstf··on Pagination with rel=“next” and rel=“prev” (2011)
As fbonetti already said, LIMIT is the canonical way to do it with SQL databases (I would just add to their comment that you should ensure a positive page_size and offset, because "LIMIT -5" is invalid in at least MySQL, and to limit the page size to some sensible values).

For NoSQL, specifically (only?) CouchDB, you start iterating from a given key (in SQL, this would effectively be "WHERE id >= $start ORDER BY id ASC LIMIT n").

This difference is why I would recommend, especially for paginated REST APIs, to provide links to the next/prev pages, so API clients can follow these links without thinking about how pagination is accomplished exactly. To prevent people from guessing the inner workings and working around your links, you can encode the parameters in a "cursor" (so instead of ?pagesize=20&page=10 you could have ?cursor=base64encode("20,10") (SQL) or ?cursor=base64encode("$startKey") (NoSQL)). IIRC Facebook does it this way. Encrypting or authenticating the cursor is IMHO overblown here, given cursor values can be easily validated and rejected if fiddled with.

Using an opaque cursor also gives you the ability to change how pagination works without breaking existing API clients.

If you plan for lots of data and many pages, think twice before outputting links to all pages (on a website) or outputting the total number of elements (in an API). COUNT(*) on InnoDB is slow and I heard it's not the quickest thing in NoSQL databases either.

xrstf··on Ask HN: Which cloud provider to use in 2016? AWS or GCE?
Google Compute Engine offers virtual machines, Google App Engine is the special app platform where you have no control over the individual instances that your app runs on.
xrstf··on Yahoo is for sale; bidders line up; Marissa Mayer is toast
So is it now high times to move my @yahoo.com mail addresses away? I was always thinking that at least Yahoo Mail would live for the foreseeable future, but this makes me nervous.
xrstf··on Design better databases
Sequential order IDs are also mandatory in Germany. At least I remember that we had to make sure in one project that the order IDs had no gaps and were sequential.
xrstf··on An introduction to Tmux
tmux can easily split windows vertically/horizontally. I'm not using gnome-terminal, so I don't know if it or your desktop environment makes splitting so quick.

I could also imagine using one window manager on remote systems and locally is just easier to remember.

xrstf··on Go 1.7 toolchain improvements
I had no problems building go-sqlite3[1] on Windows 7 x64 using the toolchain provided by the Win-Builds project[2]. It's using gcc 4.8 and sqlite 3.10, so maybe that doesn't hit your meaning of "recent versions". It was certainly recent and easy enough for my needs :)

[1] https://github.com/mattn/go-sqlite3

[2] http://win-builds.org/

xrstf··on Jenkins 2.0 Beta
Google cache: https://webcache.googleusercontent.com/search?q=cache:Sm-mng...
xrstf··on NPM and Left-Pad: Have We Forgotten How to Program?
Comparing NPM to PECL/PEAR doesn't make much sense when talking about PHP developers. With PECL, the overhead of building a module in C is waay too high to make it viable for micro packages. And PEAR didn't just accept any random stuff, they were shooting for the one-solution-fits-all libraries and not tons of user-defined micro libraries like ecosystems like NPM encourage.

Compare NPM to Composer/Packagist and you get a better comparision. I've personally seen only very few micro packages on Packagist, thankfully this never seemed to gain traction in the PHP world.

xrstf··on YouTube now shows "An error has occurred" while ads running
You are breaking several of YouTube's TOS (https://www.youtube.com/static?template=terms)

> (5A) you agree not to distribute any part of or parts of the Website or the Service, including but not limited to any Content

By downloading and sending the videos from your servers, you are distributing their content.

> (5C) you agree not to access Content through any technology or means other than the video playback pages of the Website itself, the YouTube Player, or such other means as YouTube may explicitly designate for this purpose

Downloading a video via CLI is not using the YouTube player.

> (5D) you agree not to (or attempt to) circumvent, disable or otherwise interfere with any security related features of the Service or features that (i) prevent or restrict use or copying of Content or (ii) enforce limitations on use of the Service or the content accessible via the Service

By removing ads you are interfering with the restriction that users must watch ads.

> (5L) [...] not intended to be downloaded (either permanently or temporarily), copied, stored, or redistributed by the user.

Should be obvious.

> (5M) You shall not copy, reproduce, distribute, transmit, broadcast, display, sell, license, or otherwise exploit any Content

You are copying and distributing the content.

xrstf··on Watch LetsEncrypt issue its millionth certificate live
It's the public certificate audit log. It's not an accidental data leak.
xrstf··on Go 1.6 is Released
> I come from PHP, where when you sneeze an ORM appears.

YMMD.

xrstf··on Gmail Will Warn If Message Is Not Authenticated/Encrypted
I tried it on Ubuntu 14.04, but unfortunately you get only pretty old versions, even via PPA. And no matter what I did, opensmtpd crashed each time it received a mail from localhost to a local receiver.

I'm having high hopes for Ubuntu 16.04 having a more recent version on board. Then I will try to switch from postfix again. Because as you've said, it's really straightforward to set up :)

xrstf··on A Badass Way to Connect Programs Together
Given that he is contrasting to Erlang, maybe he's talking about imperative languages instead of (pure) functional ones?
xrstf··on Thanks for Trumpet Winsock
For those like me who didn't know what the above IRC line meant, http://everything2.com/user/xmatt/writeups/%252B%252B%252BAT... is a nice writeup.
xrstf··on Parsing 10TB of Metadata, 26M Domain Names and 1.4M SSL Certs for $10 on AWS
Actually, on the paged linked on your parent post, it says

> AWS is hosting the public data sets at no charge for the community

xrstf··on Code that will break in Python 4
Maybe readability? "if six.PY3" is easier on the eyes than "if not six.PY2". At least to me. ;)
xrstf··on Permanent Identifiers for the Web
So how exactly is this supposed to make things better? I want to save, let's say, www.newspaper.com/import-article.html. So I must create a PR, wait for it to be merged so that I get w3id.org/my-project/newspaper-article as a redirect to the URL mentioned earlier.

Now what? What if the newspaper.com URL changes? Am I supposed to keep all my URLs up-to-date (i.e. send pull requests every now and then to update my "bookmarks")?

web.archive.org seems much more useful, by copying the entire page at the time of creating a snapshot and thereby creating a true, durable copy.

xrstf··on Show HN: TurboRLE – Turbo Run Length Encoding using SIMD
RCT was handwritten in Assembler, which is probably one of the reasons for using something so simple as RLE.
xrstf··on Show HN: TurboRLE – Turbo Run Length Encoding using SIMD
Savestates for Rollercoaster Tycoon 1 and 2 are RLE. Makes sense as a savestate is one fixed sized/positioned datastructure with many runs of null bytes.

Doesn't fit the "a lot" usecase, but I wanted to at least give one real world example ;)

xrstf··on GitLab 8.3 released with Auto-merge and GitLab Pages
[We're running a Gitlab instance and one CI instance with multiple CI runners in the Google Cloud.]

Gitlab CI is great if you don't need dynamically provisioned build slaves, for which I found no integrated support. In general, Gitlab CI is much more straightforward and easy to use than Jenkins.

Jenkins wins when it comes to stuff like build artifacts (getting these out of Jenkins is easy peasy (just wget them and provide basic HTTP auth if needed), but with GitLab I have not yet found a way to automatically download say the latest build results), credentials management and other "more enterprisey" features.

Jenkins is easy to install on Debian-based systems; I have no real experience in setting up Gitlab other than via the official Docker images, which is nearly as easy as typing `apt-get install jenkins`. Setting up CI runners/instances is easy as well (apt-get install + one or two calls to gitlab-multi-runner).

Overall I'm pretty happy with Gitlab CI. Especially the fact that every developer in our company can take advantage of automated builds by just enabling CI support and putting a .gitlab-ci.yml in the repository is great. Over are the days were admins had to manage Jenkins jobs.

xrstf··on Can't sign in to Google calendar on my Samsung refrigerator
> fridges last years longer than any gadget

You are clearly holding^W using it wrong. You are supposed to buy new fridges way more often, duh...</sarcasm>

xrstf··on A magic getopt
Wasn't there a massive security issue in PHP a few years back because in some CGI environments, it did in fact accept command line arguments, allowing arbitrary code execution via `php -r "<?php ...` and allowing to view sources via `php -s`?
xrstf··on Entering Public Beta
For those already using Let's Encrypt since the closed beta: Do not forget to remove the `agree-dev-preview` flags, as newer client version do seem to throw up if it's still set. I had `agree-dev-preview = True` in a config file and got an error about True being an invalid value.
xrstf··on Show HN: Whatsapp for Chrome – Finally a Good Working WhatsApp Client for Chrome
This appears to be just a shortcut to the readily available web.whatsapp.com.
xrstf··on Show HN: Java multicore intelligence
Maybe it was a bit early to share these 30 lines of code...?
xrstf··on Show HN: A simple Docker deployment CLI tool
Isn't this exactly what Docker-Machine does, but without the need for SSH access to the remote machine?
← PreviousPage 2 of 6Next →