

Show HN: link shortening API in Go - jnye131
http://rdhq.co/C

======
redbad

        import (
        	"./utils"
    

This is what's known as a relative import, and it's very bad. You want
"github.com/johnnye/short/utils", or (better yet) put your base62 stuff in
package main, since it's just one function.

~~~
jnye131
Cheers, I knew it wasn't very "go like" at the time. Will go and tidy it up at
the weekend.

------
tekacs
Whilst they are nonetheless interesting and worth seeing, there really does
seem to be an abundance of really small (30-200 SLoC) projects being posted
and reaching the front page recently. I'm just curious because I'd usually
consider these sorts of things ~20 minutes' work (plus potentially a more
meaningful amount of time writing the documentation). They stand out to me in
this sense amongst all the blog posts and stories which almost invariably will
have taken a great deal more time and effort to produce. [1]

Any thoughts? Indeed any prior discussion?

[1]: Not to say that this isn't a nice idea. :)

~~~
jnye131
Yep, I've noticed that sorry to propagate a trend that isn't the best. I think
it's because you can do quite a lot in an afternoon with Go especially if your
learning, like me.

~~~
tekacs
Oh yes, absolutely. I just wonder when I see these posts if I should post
similar small apps that I built along the way to learning some new technology
or language and then, so far, decide that it's probably not the most useful.

On the other hand, given that I myself often end up using those small learning
apps for a few years after I built them (even tiny apps can be useful day-to-
day), perhaps that's not a fair assessment.

------
betamike
Very cool. If you have a recent enough version of Redis, you may want to move
away from doing the lookup using KEYS and move to SCAN
([http://redis.io/commands/scan](http://redis.io/commands/scan)). KEYS will
work for a while, but with a large enough DB it can become a very slow
operation so it's not typically recommended for a production system.

Also, just curious, I see that the original url is encoded in the key, so the
key is "<short>||<original>". Since the key is already a hash, it seems that
you could eliminate having to scan over every key in Redis by making each key
be only "<short>" and having an additional field in the hash for "original".
Then a lookup becomes simply an HGETALL (if you need to get the "count" field,
otherwise just an HGET for the "original" field). I might be missing something
though! </armchair programming>

~~~
jnye131
By encoding the original URL in the key you can look up to see if a URL has
been shortened already, and serve that.

Thanks for the info re scan I'll have a look and check my version of redis.

------
drsintoma
> 502 Bad Gateway

I believe your go process crashed. Consider using something like runit or
supervisord.

~~~
jnye131
It did, it's back up, I will. Thanks

~~~
SmileyKeith
Down again.

