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


I think they mean http://www.taxi.eu/. It's a single app used by large taxi dispatchers all over Europe; in Hamburg, at least HansaTaxi uses it, the largest and IMHO best dispatcher.

As far as I understand it, taxi.eu is an infrastructure service for dispatchers, while MyTaxi is a bit more Uber-like in that it provides a virtual dispatcher for non-affiliated (but still licensed) Taxi drivers.


Thanks for the comments! I'm all for improved readability. I definitely wasn't aiming for much performance wise, at least initially. These were two areas (of many) that I felt could do with some improvement (especially the file IO). I will look into making some modifications like those suggested when I get a chance.


Thanks for the tips! I will look into making these modifications when I get a chance.


You're welcome. Edited for clarity.


Thanks for the pointer!


In Hong Kong, I sometimes see peoples screens when I'm using public transport. WhatsApp audio recordings are very popular, sometimes I can see the entire conversation is just audio recordings back and forth. Other times it's Chinese (I can't differentiate which), sometimes English, often a mix. I've only seen someone drawing characters with his finger once.


Keep an eye out for either Pinyin or Zhuyin. I believe they are somewhat common for texting purposes. You input this stuff and your device starts displaying characters for you to pick from avoiding the slower process of actually drawing characters.

Links for those unfamiliar with those two things.

https://en.wikipedia.org/wiki/Pinyin

https://en.wikipedia.org/wiki/Bopomofo


Although in the case of Hong Kong, neither Pinyin input nor Zhuyin input are likely to be used, as both are based on the phonetics of standard Mandarin Chinese. There are alternative input methods that are shape-based (https://en.wikipedia.org/wiki/Chinese_input_methods_for_comp...) such as the Cangjie, and Cantonese-only input methods.


I actually have not come across Cangjie before and it looks really interesting. Thank you for the link :)


I guess I've just been assuming any Roman characters are English, some definitely might be Pinyin. I generally try not to stare at peoples screens for too long haha. I did an intro to Chinese (Mandarin) class a few years ago so I'm aware of Pinyin but have forgotten almost everything (except some of the bits I found particularly interesting like word order for times and places, how numbers are represented and a few other things).


This is a useful reference for hanyu pinyin/tones: http://lost-theory.org/chinese/phonetics/


> drawing characters

It's only drawing if one doesn't write the language. If I have forgotten how to write a character and have to refer to a dictionary, I'll still be writing the character, not drawing it. Compare/contrast with my trying to write Thai, Tamil, Arabic, etc - then I'll be drawing.

Personally I write Chinese on the iPhone/iPad using my index finger much faster than I enter pinyin. I find that iOS's character recognition is fairly good - as long as I get the stroke order right, even though what I have written looks like random scribbling on screen, most of the time it presents the right character.


Oh cool, thanks! I wasn't aware of DateTimeOffset.


Thanks.

Actually organising the write up forced me to tidy up the code much more than I otherwise would have. I definitely find C# to be one of the more readable languages although I have had to debug and untangle some C# messes before.

Yeah I remember changing it to a SortedDictionary but I changed it back. I can't remember exactly why, possibly because it's supposed to be sorted by raw UTF8 bytes rather than a nice neat C# string and I didn't want to start using byte arrays for dictionary keys. I guess it only needs to be sorted when in the BEncoding format and it felt better to keep the internal structure as simple as possible. The tradeoff is it doesn't support incorrectly encoded torrent files – I'm really not sure how much of an issue that is.


If anyone's having issues, I've mirrored it at https://cheatdeath.github.io/research-bittorrent-doc/

edit: I'm the author, let me know if you have any questions.



Sorry, I didn't update some of the links in the contents correctly when creating the mirror. They should be fixed now – everything is on one page.


I don't know if you've seen it already but some people on reddit talked about some improvements/tips here: https://www.reddit.com/r/programming/comments/4rcss2/buildin...

I agree with most of their sentiments, especially the parsing part could be made cleaner/more C#'ish :)

Otherwise nice work and very interesting writeup!


Thanks for letting me know, looks like I'll have to find some time to implement some of these recommendations.


Great work. Does it work under .NET Core ?


From a quick look at the source [0], it looks like it supports Mono. I can't see anything stopping it being ported to Core, apart from JonSkeet.MiscUtil may not support Core.

If you package this up as a NuGet package and support Core then can you please ping me and I'll add it to https://anclafs.com.

[0] https://github.com/cheatdeath/research-bittorrent


I've been prototyping a .NET Core port. JonSkeet.MiscUtil source code is fine for Core, but for the BitTorrent code we need to change the HttpWebRequest objects to HttpClient and rewrite the Begin/End/IAsyncResult/callback-style to async/await.



I'm not that familiar with .NET Core. It doesn't look like MiscUtil is compatible with it.

The executable project has some minor references to Mono.Posix just so it can catch kill signals while running in the Terminal and die gracefully.

Both dependencies can be removed quite easily from the project.


Definitely having timeout issues on the OP link. Your €3/month hosting from blacknight.com isn't holding up to the HN load, apparently :)

Thank you for the github link. Mods can we get OP link adjusted to the github link instead of what was submitted?


Great to see an alternative to old MonoTorrent! I'm curious why you didn't use async/await instead of the Begin/End/IAsyncResult pattern?


Honestly I'm just not that familiar with async/await. I'll look into modifying it when I get around to making some other changes.


Awesome post/code; might be worth noting that you're the author of the code/post and your willingness to address questions.


Will do, thanks for posting.


Thanks, we updated the link from http://seanjoflynn.com/research/bittorrent.html.


Your name from WoW?


World of Warcraft? Haha no, I've been using that handle probably since that game came out but I've never played it.


It's not completely down, the server does seems to be struggling though.


I recently went through the same thing – building my own simple BitTorrent client, mostly just due to curiosity about how the protocol works. There were some tricky parts, most of which are outlined in this but I found the underlying concept so simple. I guess simplicity is a requirement for scale and resilience.

I wrote up my adventure too: http://seanjoflynn.com/research/bittorrent.html


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

Search: