Hacker Newsnew | past | comments | ask | show | jobs | submit | psuter's commentslogin

Also in that vein is Island & Trains [1], though the release date may be further out.

[1] https://store.steampowered.com/app/1957760/Islands__Trains/


Great investigation and excellent production value!

Brings back good memories too, as 10 years ago my first contribution to lichess was to improve the PGN notation for disambiguation. [1]

[1] https://github.com/lichess-org/scalachess/blame/master/core/...


Härkingen is well-known for being at the crossroads of important highways, FWIW. It is definitely a very relevant location for logistics.


Facebook reportedly was using Bittorrent to distribute their own application across their servers. I remember outreach presentations where they mentioned this over 10 years ago, and this article seems to have some corroborating details: https://arstechnica.com/information-technology/2012/04/exclu...


“huis clos”? It’s commonly used in French at least. https://en.wiktionary.org/wiki/huis_clos


Congrats! We tried something similar a few years ago (also at the TC Disrupt Hackathon [1]), but had to take a lot of shortcuts to get to something working. I'm impressed you had the time to train a proper model (we went with old school CV hacks).

Looking forward to seeing what BoardBoss could become. These days I've been wanting a CV app to track backgammon games. Those dice can be pretty tiny though :)

[1] https://devpost.com/software/chesseye


Thanks!

ML tools have definitely come a long way in the past few years! We used CreateML for our first pass which is great for prototyping; you just give it your training data and hit go.

Unfortunately it’s not particularly transparent or tweakable. If it doesn’t do the job well enough you you’re out of luck and have to switch to another tool completely.

Edit: cool project!


Great minds! Love that you deployed to a Pi – I’ve thought about the same to complement or replace smartphones.

Can you shed some insight into your ML process? One thing we did to simplify the vision problem is capture images from the same perspective (hence our tripod). We labeled 2894 objects across 292 images. We had 12 objects to detect: each piece for black and white. We struggled with occlusion, especially if a pawn is behind a queen.


I described some of the process in a previous HN thread: https://news.ycombinator.com/item?id=19567549

There is also a presentation we had prepared for an informal talk: https://github.com/chesseye/chesseye/blob/master/presentatio...

Hope this helps! I always enjoy talking about these things, so feel free to reach out if you want to discuss it more.



Has anyone tried calling the phone number used for a z-index in this chart? Seems like a very specific number to be used that many times. It would be amazing if the css was #ForAGoodTimeCall { z-index: 2147483647 }


Max 32 bit signed integer in decimal.


It's probably not a phone number. It's the max value of a 32 bit signed integer.


We built a barely working version of that during a hackathon a while back: https://github.com/chesseye/chesseye (README has a link to a video).

It takes a lot of shortcuts, works with just the right lightning, etc., but worked great as a proof-of-concept :)

We got away with not identifying the pieces by just detecting the color, assuming the game started from the initial position, and assuming only legal moves (the whole game is unambiguous using these assumptions).

It's all old-school computer vision with hand-written features, and I'm pretty confident there is tons of low-hanging fruit, but who has the time.


If I understand correctly (watched the video) you start from the initial position and track moves that are made in order to update the position to reflect the move, is this correct?


That's correct. If you're curious about the architecture: the vision part detects a chessboard, then corrects the perspective and restricts the image to just the square of the board, then looks at each square and has some simple thresholds to decide if it's occupied by a piece, and of what color. From there, the camera is treated as a black box sensor that continuously streams two 64-bit masks, for where it thinks it sees white and black pieces. There is a second program (controller) that turns that stream into a stream of chess positions (and a Unix pipe in between). The sensor is faulty of course and the controller has logic for ignoring bits from the mask where there cannot possibly be pieces etc.


That’s very cool, thanks for sharing!


A friend+former colleague of mine is the lead author of ReactiveML, a synchronous extension to OCaml: http://rml.lri.fr/

We worked on a hackathon together where we built a physical chessboard interface (https://github.com/chesseye/chesseye). He built the controller, which handles among other things the output from the video recognizer and messages the chess engine, in ReactiveML. I didn't know much about the language beyond first principles then, but was impressed by how easy it made it to compose parallel processes.

We tried to convey some of those conclusions in a later presentation, even though looking at it 2 years later I realize it's probably hard to get the insights without the verbal delivery: https://github.com/chesseye/chesseye/blob/master/presentatio...

(I understand there was a ReactiveML tutorial at ICFP last Saturday: https://icfp18.sigplan.org/program/program-icfp-2018, not sure if this post is related.)


It was definitely a little confusing, as there seems to be many ways of exiting. From the QBasic docs in the IDE:

END: Ends a program, procedure, block, or user-defined data type. [...] If no argument is supplied, END ends the program and closes all files.

STOP: Halts a program.

SYSTEM: Closes all open files and returns control to the operating system.

You may be thinking of:

SHELL: Suspends execution of a Basic program to run a DOS command or batch file.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: