HNHacker News
TopNewBestAskShowJobs

tfinch

446 karma · joined October 13, 2012

anthonyfinch.com

t -AT- anthonyfinch.com

submissionscomments
tfinch··on Dithering – Part 1
I’m using this for making some quake inspired textures - it’s a bit clunky but works for me https://captain4lk.itch.io/slk-img2pixel
tfinch··on Republishing my Simpsons fan site, twenty years later
Thanks to oocities.org the ska-punk band I was in at school still has it's glorious table based design https://www.oocities.org/peat_bog_man/
tfinch··on Make Apps for Linux
That second link is the the sort of thing I wish I saw more being pushed as an example of QT. Looks great!
tfinch··on Llamafile lets you distribute and run LLMs with a single file
yeah the section on how the GPU support works is wild!
tfinch··on Emacs and the mouse: A modest defense of the rodent
exactly this.

I've realized recently that (for me) mouse interactions come more naturally for more exploratory or creative work. I'm happy with my mouse! and yet for straight coding, or writing, I would rather keep my hands on the keyboard. It's fun to get good with all the tools(toys)!

tfinch··on Superlinear Returns
cries in post audit

So, they will be happy you have it, but will make you do all the questionnaires anyway.

tfinch··on Why are we templating YAML?
also this is probably a nicer intro https://dhall-lang.org/
tfinch··on Why are we templating YAML?
Came here to say similar. In particular dhall does allow scripting (functions etc.) but is non-Turing-complete as a feature. This seems like a particular sweet spot to me as it allows for more dynamism than data formats like json/yaml while constraining the scope sensibly.

It also has very nice bindings with haskell and nix

tfinch··on Show HN: Vespene – My new Python CI/CD and automation server written in Django
How does this compare to something like Buildbot (https://buildbot.net/) - I share a lot of your frustrations with Jenkins and this is where we landed.

(BTW thanks for ansible, it's awesome :) )

tfinch··on Content isn't king
I've used https://www.letsgaze.com/#/ a few times which worked pretty well. Only works with files you have access to, or freely available youtube content though.

I agree that it's a neat idea. I'm sure the content problem is why there aren't more attempts at the moment.

tfinch··on Dwarf Fortress 0.40.01
And if you want an idea of the type of 'generated stories' it can tell, you might be interested in http://lparchive.org/Dwarf-Fortress-Boatmurdered/ - a "Let's Play" told by successive rulers of a fortress. (The story proper begins in Update 2 of Thread 1)

Warning, you may spend the rest of the day reading it...

tfinch··on A Dolphin's Tale: The Story of GameCube
Just commenting to say thanks for mentioning the bongos! My house-mates thought I was mad when I bought them as a student, but it quickly turned into a house favourite. I would still recommend them to this day if you can get your hands on them.

Re: flow-state - perhaps the only game where this is possible at any level of intoxication.

tfinch··on Ask HN: Where did you hang out while HN was down?
I rediscovered lobste.rs - which seems to be picking up a little since I last looked. Quite a few duplicates from HN but some alternative stuff too...

(Shameless, but I'm still looking for an invite if anyone's got one....)

tfinch··on Functional programming books review
Nice list, will be referring back to this. Just a heads up the link to 'All About Monads' in the Haskell section is broken, think it should be http://www.haskell.org/haskellwiki/All_About_Monads
tfinch··on Vegetarian/Vegan food finder for London
Fair enough - someone was telling me about the Supreme Master thing recently, must admit I had largely ignored it up until that point as just part of the bizarre Loving Hut experience. Thanks for the links, definitely some food for thought!
tfinch··on Vegetarian/Vegan food finder for London
Nice project. Sadly no new places to me (yet!) but glad to see the Loving Hut, this is a must.

Are you going to add functionality for submissions? Or did I just miss it?

tfinch··on Show HN: Unirest
Fair answer - I've definitely found similar libraries in other languages less than obvious. It's a noble goal :) - keep up the good work!
tfinch··on Show HN: Unirest
Looks nice - but unfortunately as someone whose day-to-day language is python, I'll give up my requests library [1] when you pry it from my cold, dead hands.

[1]http://www.python-requests.org/en/latest/

Not mine mine, it should be obvious. I'm not Kenneth Reitz.

In all seriousness, would be interested to hear about differences/benefits...

tfinch··on Shell Scripts vs. Ansible
Also worth noting, ansible comes with a 'template' module which allows you to generate custom files with variables.
tfinch··on Buildbox: A Hosted CI service that uses your own infrastructure to run builds
If I understand the offering, this is great. The differentiator seems to be the ability to use your current deployment tool to set up the test environment, meaning it's a lot closer to your real production environment.

I recently spent a reasonable amount of time looking for a hosted CI solution that would run the particular version of postgis we use, rather than the 'latest and greatest,' but it seems like a lot of the current offerings have fairly limited flexibility in build environments (understandably I suppose.)

tfinch··on Show HN: Spotify for Independent Music
It's interesting to me that you see yourself as spotify + itunes, as the comparison that immediately struck me is Bandcamp + recommendations and the ability to queue up tracks. It certainly seems like the value you bring to artists is very similar to bandcamp - I suppose your differentiator here is discovery? Are you planning to allow sales of physical items as well? I'm a big fan of buying the vinyl release + immediate download - and anecdotally it seems like the independent music crowd would be more interested in this than perhaps other music demographics.

I'm keen not to make any comments about recommendations or the breadth of music available, as I'm aware that the latter is a chicken-and-egg situation, and the former is hard to judge without giving the site a chance to learn my tastes. I'm going to give it a try for sure.

And now for some classic hn nitpicks:

* Please stop your site links from opening pages in new tabs. Whilst looking about for more information, I ended up with 7 tabs open. Please no.

* I clicked on the feedback tab on the right side and was presented not with a feedback form, but a login form. If I can listen to music without signing up/in, surely I can leave feedback?

tfinch··on How to take on a large Django project
This is undeniably one of the more unclear parts of Django. I feel that the main issue is that an 'app' can either be a reusable, coherent collection of code - what would more normally be considered a library, or it can be a simple distinction between different areas of your website (the 'project', in Django parlance.) The first type can either be written as part of the project, or be installed from pypi, whereas the second type only ever really exists as part of the project. A project is simply a collection of apps, with configuration, that makes up a particular site.

Personally I think it's entirely possible to work quite happily with both types of apps, once you realise the distinction. My typical approach would be to start (as mentioned elsewhere by others) with one project-specific app in the project (most likely called something generic like 'core') just to get off the ground. For some projects this may be all you ever need. All other apps involved are installed from pypi (or wherever) and provide some generic functionality that you are building off/with (for example, I imagine most people install django-debug-toolbar pretty much at the same time as setting up their project.)

Once a project grows a little, however, I think there's value gained in breaking out into separate apps. They can still have dependencies on other apps (for example relationships in the models) - it's just a way of breaking up the code into more manageable sections. Once you've done this for a few projects, or after working on a large project for a while, you might start to notice common patterns being used across the apps, or some block of functionality that is used all over the place, but doesn't really belong in any one of them - perhaps this might be worth having it's own app for. This might be the sort of app that you end up tidying up and releasing to pypi - but I see far too many people getting hung up on making all apps dependency free and completely generic, when they should be worrying about it working for their use case first! It's impossible to make a reusable and useful tool unless you've had to work through some/many of the possible use-cases (insert premature optimisation quote here.)

Here's an example of this approach, which hopefully makes it slightly clearer:

Imagine you are building a kind of multi-user cms for a particular type of content - your core app to begin with might contain a custom user model (because you're using django 1.5, right ;)) along with, lets say, 3 models for the dynamic content, like a page model, a chunk model, which makes up the page content, and a revisions model that helps describe the relationship between the two. Obviously all your views etc. all belong in the one app. Alongside your core app, you might install some 3rd party apps like django-guardian to allow more granular permissions.

Time moves on and you might start adding functionality like organisations. With the new functionality, users can belong to multiple organisations, and have several different roles, allowing them to edit other people's content or administer the membership of an organisation. Perhaps there is a review process certain content has to go through before it's allowed to be published and on top of that you want to have detailed activity streams to track peoples actions ("user x did action y to item z".) All of a sudden you have more models ( an 'organisation' model, a 'review' model and a collection of related models to do with the activity logging ) as well as some fairly complicated business logic to maintain the permissions system. Of course your views file has at least doubled in size as well as your urls.py file. Realistically this is still manageable but you can see where it's heading. It's at this point I would consider breaking it out into an 'organisations' app (including the organisations, users, and activity models, as well as their logic and views) and a 'content' app, for the pages, chunks, revisions etc. Of course the relationships between the users model and the page model (for example) still exists, but there is a fairly clear separation of interest.

Lets say further on down the road, you've maybe added more functionality, and expanded into another 1-2 apps. All of the users activity is tracked for all the different apps, so you start to think that the activity functionality and models could exist in their own app - just the models and the logic, which can then be tied into all other apps that require it. As you do so, and continue to expand your project, the 'activity-stream' app becomes suitably generic and flexible you feel it might be useful for someone else, and you release it into the wider world!

YMMV of course, this is just based off my experience, but maybe it will help other people getting caught up thinking about the distinctions. Also, I'm nothing to do with the 'django-activity-stream' app, it's just an example :).

tfinch··on WeAreData - London
I did once visit a McDonalds in Romania where they required a pin number to enter the toilets, that was given out with purchases. However, standing by the door and waiting for someone to walk out worked quite well too.
tfinch··on Git? tig
Yup, came here to second this recommendation. A lot of the benefits found in tig can be found in fugitive. One feature of fugitive I use all the time is Gdiff to allow quick and easy comparison of various versions of a file. Nonetheless, the history view and other features of tig are worth checking out.

[Edited for links] Fugitive: https://github.com/tpope/vim-fugitive

Some helpful screencasts can be found here between April and May 2011 http://vimcasts.org/episodes/archive

tfinch··on Designing Open Source
Great article. As a developer I have very similar feelings, I imagine there are more like me. Often the perceived barriers are very similar to the ones mentioned here (not feeling smart enough, not knowing where to start, etc.)

One nice project that came up on HN recently, but people may have missed, is codetriage (http://http://www.codetriage.com/) which I have signed up for, but have yet to take any action on. It provides a gentle run-way into contributing to projects on github, by emailing you issues from projects you have expressed an interest in helping out with. Even if you are not so confident in your coding skills, there is still plenty of helpful work to be done here. From the emails codetriage sends out:

  Goals of Triage

  Help share the weight of maintaining a project
 Minimize un-needed issues
 Prevent stale issues
 Encourage productive communication
 Teach good citizenship
 To become a better coder
 How To Triage?

  First, carefully read over the issue, title, and description, if there are any comments read over all the comments, carefully. If a member of this repo is engaging actively there is no need to do anything, leaving a comment in the issue would just add to the clutter.

  If the issue hasn't been updated in awhile, or if no one has commented consider the issue, if it is a bug try to reproduce it. If it is a pull request consider what an alternate implementation might look like. If there is something you don't understand about the issue and feel others will have that same question please leave your question in the comments. Be as descriptive as possible. Comments like "I don't understand this" are not helpful and counter productive. A better comment might be "Can you help me understand a use case for this?".

  If you can reproduce the issue or you believe it is a good pull request, add a comment and say why you think that is. Try to stay positive while triaging issues, ask questions before you :-1: something. If you do decide to :+1: or :-1: on an issue, leave a comment as to why you feel that way. Issues are for social coding, if you help someone make better issues, you're helping the community.

  If the issue goes stale, leave a comment asking if it is still a problem. If you get no response for a number of days, you can leave another comment suggesting to the repo owner that they should close the issue.

  Go forth and make the world a better place
My point is - I love the idea about contributing with design, but don't write off helping with code issues either! You may surprise yourself! Also worth bearing in mind other areas that may be lacking people-power - for example if you are multi-lingual, translations are another great way to contribute....
tfinch··on No comment
Not sure I entirely agree with this for all cases. One example of a blog post where comments are highly valuable is a highly technical/tutorial style post (be it about coding, mathematics etc.)

Often with articles of this nature, the comments serve as a very swift mechanism to get corrections and bug fixes back to the author - improving the quality of the post for future readers.

tfinch··on Looking for Testers for a New Bookmarking Service Idea
These are exactly issues I have with the current solutions out there, and it's something I've been thinking about solutions for, so I'm really interested in seeing what you come up with.

On the point about automatic bookmarking, I would almost like everything I view to be bookmarked, and then some cleverness to work out what I actually will come back to.

I also third the requests for cross-device sync. (I'm sure you already know this will be needed at some point, and appreciate it's outside the scope of an initial version.)

tfinch··on Fuduntu: Back to Fundamentals, Gets it Right
Absolutely my feeling too. The review fairly swiftly turns into a list of what programs are installed. Let's face it, all of these are available in the repos of pretty much all distros. The rest of the features seem to be visual tuning and customisation.

I haven't tried Fuduntu, but may be tempted at some point, and I can appreciate the amount of work that has gone into it, but this review doesn't really sell it for me.

tfinch··on Sun Goes Down. Up Comes A Mystery
I was taught about it in my A level physics class circa 2002... Not sure if it was part of the curriculum though.