hacker news with inline top comments    .. more ..    16 Jun 2015 Ask
home   ask   best   3 years ago   
Ask HN: Where is it OK on the Net to say I'm a developer looking for work?
79 points by hoodoof  6 hours ago   22 comments top 9
duckspeaker 4 hours ago 0 replies      
Whether you're looking for freelance or full-time, there's a site that combines the two monthly HN threads in a convenient format: http://hnhiring.me/

In general I find the whole handwaving "I'm looking for work" approach not very effective. You really need to actively contact companies/potential clients.

With that said, here's a list of resources I resort to when looking for a next thing:

 freelance remote http://hnhiring.me/ https://github.com/lukasz-madon/awesome-remote-job/ http://www.lancelist.com/ https://gun.io/dash/ http://www.10xmanagement.com/ https://theworkmob.com/ http://workingnotworking.com https://authenticjobs.com https://www.upwork.com http://www.happyfuncorp.com on-site http://getlambda.com/ full-time remote https://weworkremotely.com/ https://careers.stackoverflow.com/jobs/remote https://www.wfh.io/categories/1/jobs https://remotecoder.io/ http://www.workingnomads.co/jobs on-site https://angel.co/jobs https://hired.com/ https://jobs.github.com/positions https://www.themuse.com/ http://startupjob.me/ http://www.insidestartups.org/

suttree 4 minutes ago 0 replies      
More long-term, brand building, augment your resume style:


disclaimer, I'm the founder ofc.

lazyjones 21 minutes ago 0 replies      
I wouldn't bother "advertising" unless you're looking at freelancing, it might come across as desperate.

There are some places where recruiters will constantly look for candidates: LinkedIn, XING (not sure if it's worthwhile outside Germany), Github, maybe SO (not sure), possibly FB. Having a polished appearance there will yield plenty of contacts even without indication that you're currently looking for work (assuming hard skills that are in demand somewhere).

perlgeek 3 hours ago 0 replies      
http://careers.stackoverflow.com/ and linkedin come to mind.
ganzuul 28 minutes ago 0 replies      
https://www.bountysource.com/ is an interesting option.
blfr 4 hours ago 3 replies      
Related: if you had a personal website/blog, would it be a good idea to put "I'm looking for a gig now" on it?
adamnemecek 5 hours ago 2 replies      
there's a monthly thread here 'who wants to be hired'. idk if that's ideal for your situation.


glogla 1 hour ago 0 replies      
Now if there were something similar for EU. Getting work visa in US is not exactly simple and easy.
snowysocial 2 hours ago 1 reply      
I've been seeing a trend on twitter, where people are doing just this. Might be worth just tweeting a few of the 'popular' people in your community asking if they know of any jobs. You never know they may just give you and RT that grabs someones attention.

Good luck.

Ask HN: How much recurring income do you generate and from what?
5 points by yogurt  2 hours ago   discuss
Ask HN: Use domain name as startup name or keep separate?
2 points by starshadowx2  1 hour ago   discuss
Ask HN: I have ssh, they have ssh, how can we chat?
319 points by biturd  1 day ago   119 comments top 53
JamesMcMinn 1 day ago 7 replies      
Just use tail -f and a bash function.

Put this in your .bashrc file:

 function talk { echo "$USER: $@" >> talkfile; }
then run:

 tail -f talkfile &
The & puts tail into the background so it continues running, and "talkfile" needs to be a file that both of you have write access to.

You can both communicate simply by using the talk function like any other bash command:

 talk whatever you want and it'll be written to talkfile
This works on Linux, not sure about Mac.

It's nice because it records what you say, so there's no need for the other person to be logged in to get your message, and you get a printout of the last few lines of conversation when you "login" (run the tail -f command). There's nothing extra to install either.

(edit, apparently say is already installed on OS X, so I renamed the function "talk")

kragen 1 day ago 1 reply      
I wrote this for use on a client project for a client I'm pretty sure won't consider this a breach of anything.

 #!/bin/bash # Simple chat system for when Skype is fucked. nick=${1?Usage: $0 nickname (e.g. $0 biturd)} chan=/tmp/yapchan echo "^D to exit chat." >&2 tail -F "$chan" & tailpid=$! trap 'kill "$tailpid"' 0 while IFS='' read -er line; do echo "<$nick> $line"; done >> "$chan"
If you're running this with multiple accounts, you may need to chmod a+w /tmp/yapchan, and if you're using MacOS on the server, you may need to use a different filename since MacOS has a per-user private /tmp.

rickr 1 day ago 2 replies      
talk has been around for like...30 years now:


tunesmith 1 day ago 1 reply      
I actually really miss the user experience of 'talk' and 'ytalk'. Split-screen so people really could type at the same time, and touch-typists could type at the same time as reading what the other person was writing. Character-by-character, too, which helped improve the feeling of connection.
wyc 1 day ago 1 reply      
A lot of nice solutions have already been posted for talking. If you want to show some code, a shell session, your dwarf fortress, etc., you can look at screen/tmux with a shared guest account:

 # you type: $ screen -S session1 vim file.txt # and they can type (as the same user) $ screen -x session1 # or with tmux, you type: $ tmux new -s session1 vim file.txt # they type (as the same user) $ tmux a -t session1
You can try it out with two terminals on your own.

alcari 1 day ago 0 replies      
I seem to recall this being on HN a few months ago:https://github.com/shazow/ssh-chat
Animats 1 day ago 2 replies      
Mandatory XKCD: https://xkcd.com/949
2ton_jeff 1 day ago 3 replies      
While linux x86_64 only, this is precisely why I built sshtalk -- https://2ton.com.au/sshtalk, or just ssh 2ton.com.au to see for yourself, I leave it open as a public/free service
rbc 1 day ago 2 replies      
WRITE(1) is pretty much ubiquitous. Even Mac OS X has it. Very old school.
rdl 1 day ago 1 reply      
There should be a service which does throwaway accounts for ssh or ssh-via-web access with some extremely limited functionality, like talk, to keep the multiuser UNIX dream alive.

Maybe even spin up VMs on demand based on new hostname (if not seen before). First to claim = own. Some rate limiting function.

Shell accounts largely went away due to ease of use, but also local user exploits and abuse, but enh. If you virtualized the network (so you could reroute through a new IP on abuse, or let users own the IP) and restricted functionality it wouldn't be as bad.

No practical purpose, just fun.

giis 1 day ago 0 replies      
We do this all the time, at-least for past 5 years or so while implementing our opensource project.

We login to same server to do :

#create a screen

screen -S chat

#Both of us will join the screen:

screen -x chat

#Now we can see each other typing. Make typing easier do:

write pts/<id> username

#Make sure there is another login and use that pts <id> above.

After we typed our lines, to indicate I'm waiting for his response. I'll adding 2 or 3 newlines.

That's it ! :)Simple chat over ssh.

stock_toaster 1 day ago 0 replies      
As pwg@ mentioned, talk is worth looking at. Check the man pages for `mesg` and `talk` and `write`.
ised 1 day ago 0 replies      
When you say "they to me" it makes it sound like you want a peer-to-peer connection. Unless your internet service allows unsolicited incoming connections, then you will need to do NAT piercing. And if you are behind the same NAT (e.g., same ISP) then you will have to forward traffic through some third host who is not behind the NAT.

But when you mention "wall(1)" it makes it sound like you want to connect to some internet accessible UNIX host via ssh and chat to others who are also connected to that host.

Option 2 would be less complex.

Depending on what software is installed on the host you connect to, there are many possibilities. Back in the old days, talk(1) could be used for split screen chats. Today, tmux(1) would be my choice. Anything that uses UNIX domain sockets could work.

Proof of concept:

Does Darwin have logger(1), syslogd(8) and /etc/syslog.conf(5)?

Decide where to log the messages, e.g., /var/log/messages

Edit /etc/syslog.conf

Start syslogd

logger "your message"

less /var/log/messages

less -F /var/log/messages

tail -f /var/log/messages

Messages have date, time, priority (if any) and hostname.

You said "something basic"; this is about as basic as it gets.

fsniper 21 hours ago 1 reply      
write anybody?? I must be too old for this shit then.

just write <systemusername> <tty|ptsname>enter message and quit with ctrl-d

from man page:

 DESCRIPTION The write utility allows you to communicate with other users, by copying lines from your terminal to theirs. When you run the write command, the user you are writing to gets a message of the form: Message from yourname@yourhost on yourtty at hh:mm ... Any further lines you enter will be copied to the specified user's terminal. If the other user wants to reply, they must run write as well. When you are done, type an end-of-file or interrupt character. The other user will see the message EOF indicating that the conversation is over. You can prevent people (other than the super-user) from writing to you with the mesg(1) command. If the user you want to write to is logged in on more than one terminal, you can specify which terminal to write to by specifying the terminal name as the second operand to the write command. Alter natively, you can let write select one of the terminals - it will pick the one with the shortest idle time. This is so that if the user is logged in at work and also dialed up from home, the message will go to the right place. The traditional protocol for writing to someone is that the string -o, either at the end of a line or on a line by itself, means that it is the other person's turn to talk. The string oo means that the person believes the conversation to be over.

atxhx 1 day ago 1 reply      
I remember netcat being installed on OS X by default, you could ssh in and run it or pipe the port through ssh.
NeutronBoy 1 day ago 0 replies      
Not sure if it's installed by default on OSX, but you could use screen/byobu/tmux to share a terminal session and type to each other.
astazangasta 20 hours ago 0 replies      
I highly recommend ytalk, available as a package in most repos, as the solution here. Not only does it support multi user chat across the network (you can send talk requests to user@host), it has a shell escape feature which means you can open a vim buffer inside your chat session for collaborative editing.
atsaloli 1 day ago 0 replies      
man write


You would need to run two instances of write : you would write to your friend and your friend would write to you.

Just press Enter twice when you are done with your turn (I.e. "over" as in, transmission over)

danielhunt 1 day ago 0 replies      

 1. Install that on a machine. 2. Both SSH to the that machine machine. 3. Type: `hey <username>`, press enter. 4. Enter your (optionally multiline) message to your friend. 5. CTRL+D (on windows, at least) to send the message. 6. ???? 7. Profit.

philprx 1 day ago 0 replies      
Use Paramiko (Python) to code a quick server based on :demo_server.pyShare what is typed between clients using fifo, shared file (bad!) or SQLite.See: https://github.com/paramiko/paramiko/blob/master/demos/demo_...
chrisper 1 day ago 0 replies      
You can also create a screen session. The other user logs into your ssh server and uses screen -x to attach to your terminal.
brajesh 1 day ago 0 replies      
What's wrong with using 'wall'
andrewchambers 1 day ago 1 reply      
it could be done with a fifo, I believe the command "write" also does this.
joshu 1 day ago 0 replies      
ssh to the same machine.$ mesg y$ talk <otherusername>
erikb 1 day ago 0 replies      
I'm a huge fan of not using the system chat tools for this but to write your own chat client. But instead of a simple text file I'd use a small database like sqlite or a logger because I want to make sure that the chatters don't run into the trouble of fighting for the write access to that file. Also if you do this a few weeks the file might get that big, that you would like a database engine to parse it anyway.

PS: Huge kudos for the question, btw. This is the kind of stuff that really improves your ability to use your system well.

pwg 1 day ago 0 replies      
man talk
lisper 1 day ago 1 reply      
I'm working on a secure chat client that runs in a browser (so nothing to install). If you're interested in being a beta tester send me your email address and I'll send you an invite.
cornellwright 1 day ago 0 replies      
An easy way is to just create a new screen (see the Unix command "screen") and then open a text editor in it. The second participant then joins the screen (via screen -x) and now you both can type into the same editor.
agartner 1 day ago 0 replies      
It might not be exactly what you're looking for but you might take a look at https://github.com/DSUOSS/unix-chat.
nailer 1 day ago 0 replies      
Lots of custom solutions in this thread, but there's already inbuilt commands for talking installed by default on every Unix box.

Log into a box, use 'who' to see which terminal they're using, and use 'write' to send a message there.

Or be lazy and just use 'wall' (write all) like I do.

thirdreplicator 1 day ago 0 replies      
User A logs into user B's machine. User A or B types

screen -S chat

The other user types

screen -xr chat

ninjakeyboard 1 day ago 0 replies      
Despite the fact that you both have SSH, you can still pick up the phone and call them. :)+1 for write. http://www.computerhope.com/unix/write.htm
silverwind 1 day ago 2 replies      
netcat to the rescue!

You run:

 nc -l 5000
They run:

 ssh [yourhost] nc localhost 5000
The only issue I see is that you apparently can't get netcat to only listen on localhost so others could join in in theory.

enterx 1 day ago 0 replies      
check the following *nix utilities:

ssh one box to another, then:

who -uT // show who is connected to a machine and will they recieve message sent with write or wall command

write // sends a message to another user (tty). dont do this as it can confuse the other user by inserting the message in the middle of his current output.

wall //send a msg to all of the logged in users

talk & talkd // client and server. (old school rulz!)

madaxe_again 1 day ago 1 reply      
I'm surprised nobody has mentioned "wall". Not great for chatting but damnably useful for unmissable comms with others on a box.
c22 1 day ago 0 replies      
sturmeh 1 day ago 0 replies      
Run an irc bouncer like ZNC, they usually have a partyline plugin/functionality that lets you chat as if you were on an irc server, but locally.
userbinator 1 day ago 1 reply      
I'm not sure about OS X but most Linuxes have netcat installed.

There's also OpenSSL s_client/s_server for an encrypted connection, although you need to setup some certificates first.

girish_h 1 day ago 0 replies      
You could ssh into another machine, run a screen session, launch a shell and start chatting inside the shell
plg 23 hours ago 0 replies      
unix command: kibitz

kibitz - allow two people to interact with one shell


resca79 1 day ago 0 replies      
try `write`:

>usage: write user [tty]

gko 1 day ago 0 replies      
If you are using the same account: emacs --daemon (once), emacsclient -t (for everyone).
alinspired 16 hours ago 0 replies      
a shared screen session ?screen -x with any editor or just 'cat' running
peterwwillis 1 day ago 0 replies      
You can't connect ssh clients like you would modems. If the machines are on a public network you ssh to another person's sshd, then use terminal chat programs. If you're both behind a NAT, one of you needs to port-forward to your host's sshd, or use STUN, TURN or ICE servers, or maybe just IPv6.

Once connected to someone's host, use the Talk program (https://en.wikipedia.org/wiki/Talk_%28software%29), or the Write program (https://en.wikipedia.org/wiki/Write_%28Unix%29), or use Netcat (http://hak5.org/episodes/haktip-82) to open a two-way dialogue between terminals. Netcat is the simplest of them all because it just opens a two-way tcp session, and technically only one of you needs netcat while the other just needs a telnet client or equivalent.

strathmeyer 1 day ago 1 reply      
Have we forgotten about Zephyr?
kpcyrd 1 day ago 0 replies      

 apt-get install nmap ncat --chat -lp 1234

yueq 1 day ago 0 replies      
talk user@host
mayli 1 day ago 0 replies      
You can use write or screen/tmux.
vectorEQ 1 day ago 0 replies      
tunnel netcat through SSH :D for fun, but probarbly not profit!
Shalle 1 day ago 0 replies      
open up a screen session and type whatever you want.
db48x 1 day ago 1 reply      
install talk on one of your machines.
roka88 1 day ago 0 replies      
kichuku 1 day ago 1 reply      
This does not directly answer your question.But there is a way using third party software.

You can use "https://telegram.org" telegram messsenger.

It works flawlessly from the cli.

Yes, you cannot use it if you don't want your chats to pass through a third party server. But maybe you can try out the "secret chat" feature with auto destroy feature.

The traditional options have already been listed by others here. I just wanted to tell something which is easy to setup and also reliable.

Ask HN: What email client do you use on OS X?
3 points by avinassh  7 hours ago   11 comments top 11
taf2 8 minutes ago 0 replies      
Gmail in chrome tab
dottrap 3 hours ago 0 replies      
Apple Mail.app

I've been addicted to IMAP since my university days with Pine. Apple Mail had IMAP support when I first came to OS X, while very few other clients did. I've stuck with it, especially since it comes with the OS. It also supports multiple mail boxes which I relied on early too.

And I like the native UI, how it responds to drag and drop, interaction with the Dock, works with built in OS services, etc.

Also, relatively fast mail searching via Spotlight kept me hooked on mail. I suspect everybody else has caught up now.

gls2ro 2 hours ago 0 replies      
AirMail 2 and Mail.app as I have three email accounts. I cannot decide which one is best, because on one side AirMail is working very well with tags but Mail.app is much more well integrated in the system.
jbrooksuk 4 hours ago 0 replies      
Airmail 2.

It's not without its own set of faults, but I find it nicer than Mail.

The lack of decent Exchange integration does let it down, but that's fine.

baidoct 5 hours ago 0 replies      
Airmail 2 (I was a bit frustrated because I had the Airmail 1 too and when 2 got released I had to pay for the upgrade)
gimmecoffee 6 hours ago 0 replies      
Airmail2. Its ok, search is meh but overall better than apple mail for my needs.
ryduh 7 hours ago 0 replies      
I've been using Postbox for a while now. It's nice. I don't love it.
frewsxcv 7 hours ago 0 replies      
Thunderbird. Not an amazing UI or UX, but it gets the job done.
slater 7 hours ago 0 replies      
mail.app, if only cos it's there and does the job.
buffalotides 7 hours ago 0 replies      
Fluid App
jlgaddis 6 hours ago 0 replies      
Ask HN: Algorithms for text fingerprinting?
89 points by vixsomnis  1 day ago   41 comments top 17
j42 1 day ago 1 reply      
Figured I'd chime in here since I developed an algorithm recently that could be applied to this problem with some basic ML.

Basically the first step would be shingling the text (choosing a sampling domain) and generating a MinHash struct (computationally cheap) which can then be used to find the "similarity" between sets, or, the "Jaccard Index."

If you're clever about this, you can use HyperLogLogs to encode these MinHash structs gaining a great deal of speed with a marginal error rate, all while allowing for arbitrary N-levels of intersection.

If you're looking to build a model to analyze two (or N) text bodies for stylometric similarities, I'd approach the problem in two steps:

1) Minimize the relevant input text.

- Use a bernoulli/categorical distribution to weight words according to uniqueness--NLP and sentiment extraction techniques may also help

- Design a markov process to represent more complex phrasing patterns for the text as a whole

- Filter by a variable threshold to minimize the resulting set of shingles/bins/"interesting nodes" into a computationally-manageable #

2) Use an efficient MinHash intersection to compute a similarity vector (0-1) for the two texts.

I think given the prevalence of training data (I mean, what's more ubiquitous than the written word...) you could probably tune this to a reasonable accuracy and efficient complexity.

Just a 5m thought exercise, but if anyone else has ideas I'd be curious as well :)

moyix 1 day ago 4 replies      
The relevant search term is "stylometry". One particular paper I remember is from Dawn Song's group at Berkeley a couple years back:


There's a lot of public work on the topic, but it looks like right now the best place to look is still in academic papers (I don't know of any open source libraries, for example).

benten10 10 hours ago 0 replies      
I may be late to the party, but finally my time to shine! As has been mentioned earlier, the field gou are looking for is called stylometry, and has almost a century of history behind it, and also the field if my thesis. After looking at what everyone has been saying, I just felt like copying and pasting my 20 page literature review here, but I'd recommend you look at narayanan at all (2012) paper (internet scale authorship attribution). The algorithm it uses is not particularly complex and would take you a week, tops, to implement if you put in a few hours a day, and that's including doing all the related research and catching up with the linear algebra involved if you need to.
thatcat 1 day ago 0 replies      
Jstylo might be what you're looking for.https://github.com/psal/jstylo

The same group also has created a text obfuscation tool called anonymouth that helps you obfuscate your word choices, but it has still yet to be released.https://psal.cs.drexel.edu/index.php/JStylo-Anonymouth

gnur 1 day ago 0 replies      
I've started a simular project myself recently, I check on various parameters (reading level score, words per sentence, syllables per word, sentences per paragraph, average word length, average syllable count) and calculate the distance between 2 texts / authors using a simple euclidean distance.

I started out with the code provided on https://github.com/mac389/ToxTweet/blob/master/textanalyzer....I use it in a private project, but the results are promising!

MasterScrat 23 hours ago 0 replies      
JGAAP is pretty awesome, it has both Java API and GUI:https://github.com/evllabs/JGAAP

JStylo that was already mentioned is based on JGAAP. You have some more here: http://evllabs.com/jgaap/w/index.php/FAQ#What_other_tools_ar...

pdpd 1 day ago 0 replies      
I wonder if this is how the authors of Truecrypt where identified. I remember reading something similar about this in regards to coding style.

I am sure the Truecrypt authors contributed to more than one project.

nodelessness 1 day ago 1 reply      
This one time JK Rowling was found out writing by a pseudonym[1] using this program:


[1] http://blogs.wsj.com/speakeasy/2013/07/16/the-science-that-u...

MalcolmDiggs 1 day ago 1 reply      
When I was in college we turned in papers via "Turnitin" which checked for plagiarism and uniqueness etc.

There's an interesting research paper about their algorithms here: https://www.cs.auckland.ac.nz/courses/compsci725s2c/archive/...

And if you search for "Turnitin Plagiarism Algorithm" I'm sure you'll find a few more resources.

amazing_jose 1 day ago 2 replies      
The results could be horrible, but can imagine a simple technique for hiding all those clues. Just send the text to google translate, translate it to an intermediate language and the back to the original one. I can warranty an excellent t rinse and clean. Change the intermediate language and you will change the features of the final text. Of course, you risk horrible semantic changes in the final text ;)

UPDATE: fix typos.

gull 1 day ago 1 reply      
CSDude 1 day ago 0 replies      
There is a public domain fingerprinting tool, that is used in MOSS (Measure Of Software Similarity). You can get the ideas from there.


fauxfauxpas 12 hours ago 0 replies      
somewhat related - excerpt from Cryptonomicon -The percussionist stands up. "Every radio operator has a distinctive style of keyingwe call it his fist. With a bit of practice, our Y Service people can recognize different German operators by their fistswe can tell when one of them has been transferred to a different unit, for example."

and this article by Schneier - Identifying People By Their Writing Style - https://www.schneier.com/blog/archives/2011/08/identifying_p...

bolomega10000 1 day ago 1 reply      
A simple one is based on analysing stop words.I guess you could do vector similarity of stop word relative frequency. You could try additional features such as word bigrams and trigrams and contain stop words. In other words, things like, "all the words the author uses that commonly surround 'of'" to select on stop word containing common phrases.

There is something about the stop word use pattern that makes them harder to forge.

I've never tried this and I don't know much more about it than that, so I strongly suggest you also find papers that treat authorship attribution by stop words.

bane 1 day ago 1 reply      
Here's a quick one:

1) tokenize each text into a different bag(set) of words.

2) Compute the Jaccard index[1] using the two sets.

Here's another

1) tokenize each text into a multi-bag(set) of words, keeping track of token frequency

2) keeping the token frequency, order the sets into lists

3) map the lists of words onto an n-dimensional space (where n is say...all of the words into the two documents) as vectors

4) compute the cosine similarity [2]

Here's another:

1) tokenize the texts into two bags of words

2) compute the set difference going both ways.

3) does either difference contain discriminator tokens that rule it out as being from that person

4 (optional)): extend to 2-3-n-grams

Here's another (a variant of the one above):

1) compute 1-2-3-n-grams from one of the texts

2) insert the n-grams into a set

3) compute the same for the second document and test for set membership

4) compute the number of total n-grams from your second document

5) compute (non-in-set/total-n-grams) * 100 to yield a "uniqueness" measure

6) determine if the second document is "unique" enough

And another:

1) assuming you have a sample corpus from a writer and want to know if a new text belongs in that corpus

2) follow the method above but for step #1 and 2 do it with the entire reference corpus

And another:

1) produce an ontology of discriminator terms and categories unique to the writer

2) use an (named entity recognition) NER tool of some kind to find those terms in each document

3) use the set of found terms as an alternative to a bag of words for the Jaccard or Vector models above

You may need to play with stopword list removal, tokenization schemes and n-gram windows (for example, omitting 1-grams might focus the analysis on phrase usage vs. vocabulary usage)

1 - https://en.wikipedia.org/wiki/Jaccard_index

2 - https://en.wikipedia.org/wiki/Cosine_similarity

wodenokoto 3 hours ago 0 replies      
You want to look for 'author attribution' as your keyword.

There are 2 main ways for assessing author attribution. One is through stylistic markers, where you look for a set of predefined features. The is average length per paragraph, or the number of times 'whenever' is used. This is highly language dependant.

The other way is through character n-gram analysis. You chose for which N you want to harvest N-grams and your author profile is the frequency of top 2000 n-grams and you compare this profile with a documents top 2000 n-grams and the profile with the shortest distance is your match.

Robert Layton has a tutorial and some code on N-gram attribution on Github:

* https://github.com/robertlayton/authorship_tutorials

* https://github.com/robertlayton/author-detection

And here's a list of papers I've reviewed while doing a similar project.

[1] Shlomo Argamon, Moshe Koppel, Jonathan Fine, and Anat Rachel Shimoni. Gender, genre, and

writing style in formal written texts.

23(3):321346, 2003.

[2] John F Burrows. an ocean where each kind...: Statistical analysis and some major determinants

of literary style. Computers and the Humanities, 23(4-5):309321, 1989.

[3] Georgia Frantzeskou, Efstathios Stamatatos, Stefanos Gritzalis, and Sokratis Katsikas. Source

code author identification based on n-gram author profiles. In Artificial Intelligence Applica-tions and Innovations, pages 508515. Springer, 2006.

[4] Sheena Gardner and Hilary Nesi. A classification of genre families in university student writing.

Applied linguistics, 34(1):2552, 2013.

[6] John Houvardas and Efstathios Stamatatos. N-gram feature selection for authorship identifica-tion. In Artificial Intelligence: Methodology, Systems, and Applications, pages 7786. Springer,


[7] Patrick Juola. Authorship attribution. Foundations and Trends in information Retrieval,

1(3):233334, 2006.

[8] Vlado Keelj, Fuchun Peng, Nick Cercone, and Calvin Thomas. N-gram-based author profiles

for authorship attribution. In Proceedings of the conference pacific association for computational

linguistics, PACLING, volume 3, pages 255264, 2003.

[9] Maarten Lambers and Cor J Veenman. Forensic authorship attribution using compression dis-tances to prototypes. In Computational Forensics, pages 1324. Springer, 2009.

[11] Fiona J Tweedie and R Harald Baayen. How variable may a constant be? measures of lexical

richness in perspective. Computers and the Humanities, 32(5):323352, 1998.

[12] Cor J Veenman and Zhenshi Li. Authorship verification with compression features.

[13] Rong Zheng, Jiexun Li, Hsinchun Chen, and Zan Huang. A framework for authorship identifi-

cation of online messages: Writing-style features and classification techniques. Journal of the

American Society for Information Science and Technology, 57(3):378393, 2006.

espe 1 day ago 0 replies      
afaik, stylo (https://sites.google.com/site/computationalstylistics/stylo) is the academic go-to solution. it is even sporting a gui
Ask HN: What happened to CoralCDN?
13 points by weinzierl  17 hours ago   2 comments top 2
samspenc 15 hours ago 0 replies      
For those who may have not have heard of this: CoralCDN was to websites what CloudFlare is today, but in a more decentralized ways.

In the early 2000s, it was quite common for a website to be actually Slashdotted - featured on the Slashdot.org website - and the website would get registered on CoralCDN and Slashdot would post a CoralCDN link when the original website could no longer handle the traffic.

Haven't seen it been that popular recently, but I can imagine there are still quite a few people using CoralCDN. But I have no idea what caused the downtime.

lsmod 7 hours ago 0 replies      
Ask HN: I want to start working on my coding project how do I start?
5 points by codezombie  15 hours ago   4 comments top 4
facorreia 14 hours ago 0 replies      
What I've found to help for small projects is to start with a very lightweight use case analysis. For instance:

* A small vision document: This project is a (short description) targeted at (accountants / small business / boy scouts). It solves this problem that the target market has: (pain point). Its main features are (what makes it a good solution / what differentiates it from the alternatives).

* Main use cases: Some Trello cards with the main user-facing features, described at a very high level.

* Technical overview: You seem to have that covered. E.g. it will be a web/mobile/desktop/command-line app built on (language/stack) with this architecture (microservices, MVC web app, client/server, etc.) storing data on (S3/SQL database/flat files).

For a 1-person small project, don't overdo this part. Once you have this high-level overview of the project, try to implement the bare minimum necessary for the "happy path" of the main use case (i.e. without worrying about exceptional cases yet). Mock other aspects as necessary (e.g. authentication, dependent data sets, complex business logic, etc.)

This will leave you with a huge technical debt that you'll need to crawl out of as move forward, but it will avoid analysis paralysis and over-architecting.

For a more structured approach, one source that I recommend is "Use Case Driven Object Modeling with UML" (http://www.softwarereality.com/UseCaseDriven.jsp). It shows a technique to bridge the gap from the business requirements to the technical design and implementation.

brudgers 9 hours ago 0 replies      
Start coding. Then start throwing away code and rewriting. Then start living with code that you know you could rewrite so you can write more code to throw away and rewrite. If you're like me, and I hope not but if you are, most of your code will start out wrong and get rewritten to merely bad with a few good bits that will keep you coming back.

Anyway, all that planning feels like work but isn't work. Plans don't live long past contact with reality, and anyway new programmers by definition lack practical experience in making good plans and bad code is better than bad plans for no other reason than bad code provides its own feedback while bad plans don't until there is some code to prove them bad.

tl;dr start writing code.

Good luck.

kachhalimbu 8 hours ago 0 replies      
Find a mentor who can guide you. I will be happy to help you get a head start (my email in my profile).
c-rack 14 hours ago 0 replies      
My recommendation:

1. Choose a programming language you like

2. Pick the most popular web framework in that language

3. Follow a pet shop or blog tutorial with that framework

4. Start coding your own project

Ask HN: Dell paved my hard drive with Windows, now what?
6 points by hughdbrown  14 hours ago   16 comments top 6
davismwfl 14 hours ago 2 replies      
Basically none, you agreed to this as part of the repair process, like what sansavarous said. And in general, the person that repaired your machine almost definitely never saw your note as it went through a receiving department first before it hit a testing line, in receiving even if they read the note, at best they might add a comment to the case. Most of the time in repair shops like this there is a standard process and reimaging the Hard Drive is likely automatic as it is also used as a part of the final inspection test.

When I send a machine for repair I have an old drive I stuff in it that has nothing on it except Windows. This way regardless of what they do my data never leaves my side and I won't lose anything. I'd suggest taking that approach if you ever have to do this again, because no "extra" instructions you give them will likely ever be followed. Honestly, you can't really blame them as they need a standard process that supports high volume, and custom instructions on every order would not make that reasonable.

dangrossman 14 hours ago 2 replies      
I encourage you to read the warranty terms that came with your computer. Particularly this section:

"Software/Data Backup. It is solely Customers responsibility to complete a backup of all existing data,software, and programs on affected Products before receiving services (including telephone support) orshipping Product(s) back to Dell. In addition, Customer is responsible for removing any confidential,proprietary, or personal information and any removable media such as SIM cards, CDs, or PC Cards. DELLWILL HAVE NO LIABILITY FOR LOSS OF OR RECOVERY OF DATA, PROGRAMS, OR LOSS OF USEOF PRODUCT(S). You understand and agree that under no circumstances will Dell be responsible for any lossof software, programs, or data -even if technicians have attempted to assist you with your backup, recoveryor similar services. Any such assistance is beyond the scope of any Dell warranty and this ServiceAgreement."

antod 11 hours ago 0 replies      
Not a solution for your case, but this is why I like Lenovo's 'keep your drive' warranty.
jtchang 14 hours ago 0 replies      
Pretty much nothing. If you have some data you need to recover you'll have to find a data recovery company.

Whenever I send stuff in I always assume I will never get the data back. I generally do a backup and wipe.

sansavarous 14 hours ago 1 reply      
When you sent it in you made an agreement that they are not responsible for your data. Read the fine print.
yellowapple 12 hours ago 0 replies      
I take it you've already demanded the full refund and sent an invoice for your time?

In the future, I recommend removing the hard drive before sending them on to Dell (unless the hard drive is the problem). Dell shouldn't care about the lack of a hard drive; if it does, pop in a temporary drive (as davismwfl mentioned).

Alternately, you can ask Dell to just send you the parts, in which case they'll usually be fine with you performing the swap yourself and sending back the faulty parts. This avoids the issue entirely, at the expense of leaving you with the work of replacing the parts in question (though a keyboard/trackpad replacement isn't that hard on most Dells).

I used to work with Dell machines routinely in a hospital IT department. Dell never gave us grief for removing hard drives prior to sending machines out for servicing (per our internal HIPAA-compliance policy). YMMV for consumer support, but I don't expect that to be significantly different in their case.

Ask HN: How do you translate your app?
8 points by hansy  19 hours ago   5 comments top 5
bzalasky 16 hours ago 0 replies      
I've used WebTranslateIt and i18next.js, and found i18n and l10n to be much easier than I'd anticipated. While I've primarily worked with actual translators, I think WebTranslateIt has some automated translation options as well.

- https://webtranslateit.com

- http://i18next.com/

gspyrou 6 hours ago 0 replies      
I have used http://gengo.com/ for localization of mobile apps.
jbrooksuk 16 hours ago 0 replies      
We use CrowdIn, for Cachet. It's pretty good and even suggests translations for you.
S4M 14 hours ago 0 replies      
I built a shitty CRUD web app with that links to a web form the texts I want to translate - stored in a database - and ask my friends who speak other languages to translate them.
twunde 12 hours ago 0 replies      
I use smartling at work. There are a host of similar services out there
JoyStream torrent client with paid seeding
6 points by bedeho  19 hours ago   4 comments top 2
starshadowx2 11 hours ago 1 reply      
I love seeding all my stuff, I keep most things seeding for so far forever, and I usually keep my computer on most of the time.

This seems like it'd be pretty neat to try out at least, so I signed up.

What do you think the general price people will go for for selling per/gb? The video said 10c, but do you think it will stay around that or go down?

infinityfarm 19 hours ago 1 reply      
This sounds cool, I would be interested in helping out.
Ask HN: SSL certificates
9 points by bobwaycott  20 hours ago   16 comments top 6
4oo4 18 hours ago 4 replies      
1) Strength - always at least 2048 bits, 4096 if speed isn't as critical as security. For your CSR make sure you use SHA256 for signing (http://itigloo.com/security/generate-an-openssl-certificate-...)As for ciphers, depends on the tradeoff you need for compatibility vs. security; I would consult Mozilla:https://wiki.mozilla.org/Security/Server_Side_TLSThey also have a handy config generator, depending on what server you're going to use:https://mozilla.github.io/server-side-tls/ssl-config-generat...

2) For lowest cost and no bullshit, I'd go with CertSimple (https://certsimple.com), or DigiCert (https://digicert.com).

3) As mentioned below, SSLLabs will point out if any of your config is risky. Besides that, you might want to add a 301 URL redirect to your web server to force people to only use SSL and avoid the fatal mistake of someone forgetting to type http_s_.

Have fun!

colinbartlett 19 hours ago 1 reply      
I deploy a couple of new projects every month and I've gotten into a habit of HTTPS full time everywhere on all projects.

From my experience using SSL Lab's web-based test[1] on all of them, the issue is less with the cert vendor and more with the server configuration. All the vendors I have used recently will use a 2048 bit RSA key which will grade as A just fine on SSL Labs. But it's pretty easy to get lower grades by not having an up-to-date server which restricts broken ciphers like TLS 1.0 and SSL. Or by having broken certificate chains.

My favorite vendor is DNSimple because of their extremely easy process for generation, but they are just reselling Comodo certificates.

1. https://www.ssllabs.com/ssltest/

Sleaker 18 hours ago 1 reply      
Mozilla has a great article posted up about this here: https://wiki.mozilla.org/Security/Server_Side_TLS
bwblabs 18 hours ago 1 reply      
Use 2048 bits, not 4096. I'm kind of paranoid and always try to use the highest recommendations, HSTS, all-SSL, etc. But in terms of SSL connection setups / second, your CPU will be the bottleneck, and having 4096 bits will limit you to about 1/4 of the connection setups / second that 2048 could have handled. So if the site has low traffic and a enough CPU resources, it could be ok, but if you ever need to handle a lot of connections: use 2048 bits! (I learned the hard way ;
fensterblick 18 hours ago 1 reply      
To answer question #1, a lot of people use the SSL Server test: https://www.ssllabs.com/ssltest/analyze.html. It's one way to analyze if your certificates and SSL/TLS settings are configured correctly. The results are arguable - getting an "A" does not guarantee safety - but getting an "F" can show that more work needs to be done.
Remote work, outside the US [sucks?]
4 points by uptownhr  21 hours ago   6 comments top 3
gorachel007 19 hours ago 2 replies      
Working remotely from anywhere can be great, you just have to research the setup before you go and be prepared.

I've worked remotely from Oregon, Seattle, Singapore, Tokyo and Manila (where I am now). None of the cities except Manila caused any problems once you get around the time zone issue. The Internet in the Philippines is generally slow (averaging 1 mbps) and expensive. I'm not sure if this is due to infrastructure or a monopoly or something, but it's tough to work with a slow, expensive connection especially when you're a web developer.

I manage it by working late at night or early in the morning, when the connection seems to be faster (less people are awake and online). I also keep two different connections handy--one is my mobile data, which I can hotspot and use on my computer, and the other is a portable broadband device. That way, even if one of them loses connection (did I mention in addition to it being slow and expensive, the Internet is unreliable???) I can still work using the other one.

Even with the awful Internet I still get things done in Manila, and if it's possible here it's possible anywhere.

cyberpanther 21 hours ago 1 reply      
You need to make this site your best friend: https://nomadlist.com/
wrd 18 hours ago 0 replies      
Internet is going to be spotty all over Asia unless you're in South Korea. The only reliable trick I've found is to find a local coworking space that caters to the tech startup scene. Typically these spaces have good, reliable Internet.

Otherwise, to deal with the censorship and monitoring VPN is the way to go.

Ask HN: Hn notification app?
3 points by uptownhr  20 hours ago   3 comments top 2
codegeek 20 hours ago 0 replies      
samelawrence 20 hours ago 1 reply      
I also had the idea to make this. Nothing like it exists to my knowledge. I find myself using HN less frequently lately, so I never actually sat down to build it, but it would be nice to have.
Ask HN: How many physical/virtual servers does GitHub have?
8 points by rajeemcariazo  1 day ago   1 comment top
phantom_oracle 15 hours ago 0 replies      
My guesstimate for 2015 is about +200

You could also be inspired by the "jerk-off calculations" from Silicon Valley and take Toms numbers from 2010 at that point, referencing the amount of repos (at that time), the number of GH users (at that time) and the size of the repos (at that time) and then quantify these numbers into a model.

You can then use that model to estimate the 2015 numbers (holding constants like "they still use Ruby mostly" or "they haven't swapped out slow Ruby parts with high-performance X-language", etc.)

Based on their size though, adding that a lot of other code-hosting tools have since gone into shut-down mode, I'd say that even with major performance boosts, they must be (at minimum) around +100

Ask HN: What hourly rate can a solid Python developer be paid per hour?
15 points by andrewstuart  1 day ago   6 comments top
lastofus 1 day ago 2 replies      
$75 - $125 assuming direct hire/contract (no middlemen), and you are in the US. It also depends on the length of the project and if 1099 vs w2.
Ask HN: How screwed is a 17-year-old trying to enter US with encrypted laptop?
18 points by eemph  1 day ago   22 comments top 17
jakejake 1 day ago 0 replies      
It makes me a little sad to hear an honest question like this because it means that people have a horribly slanted impression of the US, which is a fantastic place to visit and is generally very welcoming of visitors from other countries.

Almost 70 million people enter the USA every year - that's over 190,000 per day. We hear about 2 or 3 horrible stories and it seems like every tourist who enters the country is harassed by immigration. I totally understand the concern when one hears these stories though, it's important to keep in mind how incredibly rarely they have occurred.

I would say your chances of immigration even looking twice at your laptop are extremely small. When they want to look at any electronic device, generally the only thing they want to see is for you to turn on the power to prove that it is an actual working device and not just an empty case with explosive materials inside it. They have no interest in whatever data you have on the device.

Exceptions might be if you are involved in high profile, anti-US politics or you suspect there is some reason you would be a person of interest to the US homeland security. Or if you are entering illegally, planning to overstay your visa or doing anything which you feel you will have to lie to immigration as you enter the country. In those cases I would be concerned entering any country, not just the US.

tptacek 1 day ago 0 replies      
Your laptop looks pretty much exactly like about 4,500,000 other laptops running Windows or OS X with their FDE enabled. Nobody cares; they don't have time to.

Having said that: your rights to privacy are basically at their nadir in this situation: you're opting into air travel, which gives the US administrative search privileges; you're crossing borders, which virtually every country in the world believes gives them the sovereign right to invade your privacy as a condition of entrance; you're interacting with customs, whose job it is to find reasons to hassle people.

So: not the craziest idea in the world to take your sensitive stuff, put it on a USB drive, encrypt that, and just Fedex it to wherever you're going.

You won't need to go through that trouble, but it might make you feel better, and it's cheap insurance.

cjbprime 1 day ago 0 replies      
I'm a US permanent resident, which means I've gone through a whole bunch of interviews and examinations and delays at the border and so on, and my encrypted laptop even has a Tor sticker on it, and no-one's ever asked to look at or been curious about it.

So you're probably fine.

mmozeiko 1 day ago 0 replies      
I'm on H1B visa and during past 4 years I have entered US around 10 times. Every time I had laptop with my that had full disk encryption either on Windows (TrueCrypt) or on Linux (LUKS). Also I had with me external HDD with full disk encryption on it (TrueCrypt).

Nobody ever asked me to look at my laptop or my external hdd. Two times they looked through my larger suitcase, but not my carry-on where I have my laptop.

gpav 1 day ago 0 replies      
About your sentence that begins "The laptop doesn't really have anything THAT illegal..." Being legal or not isn't exactly like being pregnant or not, because pregnant is a state that is related to the physical condition of the person, but legality is related to the geographical location or to the citizenship status of the person. That said, there is an old saying that there is no such thing as a little bit pregnant. If you think that there is anything on your hard drive that is illegal in any place where you are traveling to, or your flight might divert to in an in-flight emergency, the smart thing to do is to scrub it off your hard drive and use a tool to wipe the empty space on your drive to United States Department of Defense standard DoD 5220.22M -- and do all that BEFORE you travel.

If you have something that is perfectly legal where you are, but illegal where you are going, you have not broken the law where you are going if you don't take the illegal thing with you. If you do take it, and you DON'T get away with crossing with it, the very best you can hope for is that you won't be jailed. Instead, you can expect to have your computer seized and destroyed, yourself deported and legally barred from ever returning to that country. Oh, and kiss your airfare goodbye, too. Or, all those unpleasant things could happen to you AFTER you spend a period of time in jail.

Not sure whether something really is illegal in the US, best advice is to ask a US lawyer. Second best is to ask a lawyer in your country who is knowledgeable in US law. Third best might be the US Consulate in your country. You can always ask HN, but in that case you get what you get and most of us are not lawyers.

Good luck in your travels, have a great time at the math program, and try real hard not to wind up in Gitmo.

retrogradeorbit 1 day ago 0 replies      
Depends if you have been 'selected' or not. For example, Greenwald, Applebaum and Poitras have been 'selected'. If you haven't been selected, you will have no problems. If you have, you will have many problems.

All the people posting "I've never been stopped" are just saying "I have not been selected".

Perhaps ask yourself the better question, "is it likely I have been selected?"

Someone 1 day ago 0 replies      
Do what you normally do (or at least, _should_ do):

Make regular backups that you do not carry with the laptop.

That protects you against both hardware defects and overly-aggressive border personnel.

I think the first is way more likely than the second. I have never had to show that a laptop actually was a laptop, not even when traveling with two laptops, an Ethernet switch, a few lengths of cat-5 cable, some JTAG stuff, a prototype device, a few screwdrivers, and a box containing the innards of a GSM phone that came with a power brick and a 2 feet or so plug-in antenna (that was before 9-11, though)

And VISA waiver/ESTA means that the U.S. got early warning about you, so chances are they already checked whether you are considered a risk before you show up at the border.

Also, many business laptops 'boot' into a pre-Windows environment that requests a password.

If you still are worried, would running Windows on a second, small, partition be an option? Alternatively, make the laptop login directly from booting into a demo account that shows some GUI with overlapping windows (could also be a different Linux OS on another partition)

yetanotheracc 1 day ago 0 replies      
how likely is it that anyone at the US border will actually want to examine my laptop

Not very likely.

Sean-Der 1 day ago 1 reply      
I have taken my Thinkpad through a couple of times and it has had FreeBSD or Debian + LUKS on it.

Most of the time the people that have problems are arrogant. I see people trying to lecture agents and other oneupman-ship, you win nothing from this. If you are polite, and maybe even act a bit clueless no one will bother you.

mo 1 day ago 1 reply      
You best move a copy of your filesystem or all files encrypted to some online storage, and travel with a barebones installation. Most people I know have a second, travel drive or even travel laptop, and only put a subset of files online (eg. on your private hidden service, HiddenServiceAuthorizeClient is very useful for that).

Happy times.

venomsnake 1 day ago 1 reply      
According to EFF you are at the mercy of the agents.


Why make your life harder?

Make gz image of the drive. Upload it somewhere, wipe laptop, when inside the US just download it and unzip from live cd on the fly.

singold 1 day ago 0 replies      
In the rare case, they decide to see your laptop, i dont think they care if it is encrypted if you login or tell them the password.

IMO, the problem in this case is not the encryption itself, but the act of hiding something, if you try to hide somenthing, then you could be in problems.

If you login to your pc, they are not going to know if it is encrypted ;-)

justintbassett 1 day ago 0 replies      
I've entered into the US dozens of times, never once have I been asked to even turn on my laptop. You'll be fine
ender89 1 day ago 0 replies      
Eh, the tsa can't find shit. just don't give them a hard time and you'll be fine.
supergirl 1 day ago 0 replies      
you would've been fine before posting this. now, I don't know.
46Bit 1 day ago 0 replies      
Incredibly, incredibly unlikely to be a problem. Don't worry.
informatimago 1 day ago 1 reply      
You'd be crazy to enter the USA territory.

Stay out.

Ask HN: Why can't basic OS apps stay fast?
13 points by uptownhr  1 day ago   14 comments top 6
creshal 1 day ago 1 reply      
> Is this a real hard problem to solve?

Somewhat. On the one hand, you have plain old feature creep people expect smoother animations, more animations, more features, better fleshed out features, and it's hard to resist those demands when you want to sell your software.

One the other hand, you have security and reliability. All those error checks, bounds checks, canary checks, validations, secure hand shakes, take up time, and it accumulates. DOS was fast, but it was also terribly insecure and most programs crashed regularly.

Kesty 1 day ago 1 reply      
Reserving CPU for itself will make all third party app run slower. And third party apps are a huge selling point (look at Windows Phone), you don't want to be behind your competition because you want a smoother experience on your stock applications.

Also there is feature creep, the longer the system goes on the more feature, security checks, fixed, etc... your basic system does and that will exponentially increase the weigth of your system, requiring you to serve more and more, and making everything else slower.

UnoriginalGuy 23 hours ago 1 reply      
There's nothing "basic" about the core file manager/windowing system/explorer. It is one of the more complex processes, and will invariably grow since the potential feature set is near endless.

An on screen keyboard doesn't have to be complicated, but once you add swype/multilanguage/dictionary/speech input/etc then it starts to require more IO to initialize.

iOS was lag free pre-apps. Then people wanted apps, then legit multi-tasking, and then tons of services from the OS to support multi-tasking apps. Now you'll be running a dozen or more full time processes even excluding the kernel.

> Is this a real hard problem to solve?

It is an easy problem to solve. You'd just have to give up tons of features and functionality.

> I would sacrafice, dedicated 20% of CPU/Memory, locked into these apps, so I never see slow down, when switching windows.

That wouldn't help. Many things are IO bound not CPU/memory bound. Plus on mobile there is still the battery X factor.

> Or is this not even an option to do? If so, why is it that the OS cannot reserve CPU cycles for itself that can never be touched by third party so it is always fast.

Sure it can. Almost all operating systems allow you to set a process as high priority for scheduling. It just doesn't do much, because as I said it is IO bound not CPU bound, and plus sometimes processes are waiting for an atomic lock to come free and by prioritizing the process in the spin, you've actually slowed and delayed the process who needs to finish up and free the lock actually adding lag (this was a BIG problem on Windows in particular, which is why they actually split several kernel level atomic locks).

lham001 1 day ago 0 replies      
some answers from Android Performance Patterns: https://www.youtube.com/watch?v=T52v50r-JfE&list=PLWz5rJ2EKK...
kkmickos 20 hours ago 0 replies      
Due to reasons I had to install WinXP on my Core i7 a few weeks ago and was astonished how snappy it was compared to Win7.
M8 1 day ago 2 replies      
"...forces users to upgrade..."

This is a good thing for computing power progress.

Ask HN: How can I learn math?
20 points by maththowaway  1 day ago   28 comments top 22
pasharayan 1 day ago 1 reply      
What level of maths are you exactly looking at?

Khan Academy (https://www.khanacademy.org/) has great resources for all levels of maths up until the first year of university - easily the friendliest and most comprehensive set of classes and topics for maths until that level

MIT Open Courseware (http://ocw.mit.edu/courses/find-by-topic/#cat=mathematics) has many courses that you can pick from and start to learn from. For these it doesn't hurt to see what textbooks they're using (if any) and purchasing them and going through the problem sets yourself.

The great thing about maths, is that until you get to the very high levels, many problems can be checked against pre-made answers.

Hope this helps!

Mz 1 day ago 0 replies      
We kind of don't know enough about where you are to be able to help you. I homeschooled my gifted-learning disabled sons and I strongly disagree with some of the things suggested here.

You can look up "The Cartoon Guides..." For example, they do have a "Cartoon Guide to Statistics." I used to own it. I can tell you that the first chapter or two covers what my college intro to statistics covered. I was inducted into Mu Alpha Theta, a math honor society, when I was 16 and I tutored math. I am good at explaining it and have a bit of a background, though I am a math slacker for HN. So, you know, we need more context to figure out what "beginning" you are looking for.

I will also say that I was in my thirties before I understood that the formulas I memorized my way through in high school had actual real world applications and so on. I was clear my oldest son could not just memorize his way through formulas. People who can do that are inclined to be math majors. People who cannot probably should not take much advice on learning math from math majors (I mean, unless they are experienced teachers as well who know how to reach folks who aren't so good at math -- Colin Wright's juggling video is very approachable, but many math majors seriously suck at explaining math to people who aren't also just inherently good at math). They are two different kinds of minds.

Best of luck.

EnderMB 23 hours ago 0 replies      
I have a degree in Computer Science, but I am terrible with Maths. It's surprising how far someone can go without ever doing calculus if they're able to fit enough answers in their head.

Despite already having my degree, I've felt for a long time that I've wanted to REALLY learn this stuff, at least to a point where I can read through Introduction to Algorithms and "get it".

My base level of knowledge is probably the start of Algebra 1, so I've been going through Khan Academy to build myself up. I'm halfway through Algebra 1 and I've already come across a ton of stuff that I barely ever covered in my GCSE's. I can't vouch for Khan Academy enough. It's been a far better teacher for me than any I've had.

I've given myself around two years to complete the following in my own time:

* Algebra 1 and 2

* Calculus

* A read through of Knuth's Concrete Mathematics

* A read through of Introduction to Algorithms and TAOCP.

I'm part-way through the first one, and I'm hoping that if I stay consistent (an hour of Khan Academy a day, and maybe a bit more on the weekends) I'll be able to work my way through this list.

annythesillicat 1 day ago 0 replies      
I hated math before and I thought I was gonna hate it in my whole life. Not until I had to study GMAT and it changed my life forever. I watched the GMAT problem solving explanation on Khan Academy. I think it was pretty simple math and fun to learn. easy to understand for math haters. It was pretty awesome. To me, math is the new door to the new world. I started reading books about math and related field like Physics. (Thinking in numbers by Denial Tammet, How Not to Be Wrong by Jordan Ellenberg. Cosmic Numbers: The Numbers That Define Our Universe by James D. Stein, Richard Feynman and etc. I think you get this, stay curious, stay open to learn. Hope this help and good luck! :
brador 1 day ago 0 replies      
Go to the dead paper store and buy the textbook for the grade level you want to start with. This way you get a complete, comprehensive guide with table of contents that you can work through. Read, and do the sample questions.

When finished, buy the next grade ups textbook.

Learning math needs paper, it just does, don't try to do it online, it'll take twice as long and you'll learn half as much.

Be active not passive. Always learn with scribble paper ready.

vistakric 1 day ago 1 reply      
Ok, everybody is recommending different content sites, so you've got places to go to find specifics. That's good. But you also need a way to figure out what you already know, what you want to know, and which order is best to learn stuff in so you're not confused. For instance, you'd better have a decent understanding of trigonometry, geometry, and pre-calculus before you try tackling calculus. The hardest part about self-learning isn't trying to find tutorials for what you want to learn, it's figuring out how the specific topic you're working on can be contextualized in terms of other topics in the same subject area.

To figure that out, the most helpful thing I've found is looking at example 4-year plans at colleges (and, if they're available, even for some high schools when it comes to the fundamentals of a subject I never took), and, for online any given online course, seeing if there are any recommended prerequisites or co-requisites.

As an afterthought to all that, my favorite tutorial sites are like, HyperPhysics for physics, MIT open courseware for CS topics, HowStuffWorks for general tech-y knowledge (say, if I wanted to learn how a capacitor or a web server worked). If I'm going to google for good tutorials, I usually include something like "tutorial", "introduction", "primer", "layman's guide", or "cheat sheet". I find that even if I'm looking for an in-depth learning experience, the tutorials that are written to be simple will do the best job of emphasizing what's important, and laying out the way that somebody who "knows how to do it" will approach a problem.

chaudhary27 10 hours ago 0 replies      
https://brilliant.org is another good source.
corey 1 day ago 0 replies      
Have you mastered algebra and trig? If not, do it. Khan Academy is great for this. Watch the videos and do lots and lots of problems. In learning math, there is no substitute for working through lots of problems.

After this, I suggest learning some discrete math and proof techniques. The book How To Prove It is great. It will teach you logic, set theory, how to write proofs, and how to invent proofs. Learning this first will help you actually understand calculus when you study it next.

For calculus, MIT's OCW course is really good. Pick up a standard book like Stewart, do a lot of problems, and try to understand the proofs of all the theorems. Or if you'd really like a challenge and some more theory, pick up Spivak's book.

tremols 1 day ago 0 replies      
I can relate to the same problem and often I am stuck when reading about algorithms explained through math formulas. I would love to see some kind of dependency tree for math knowledge which clearly shows all the requisites for understanding a specific topic. Maybe it is a nice problem to solve for empathic math freak enterpreneurs which can come up with new, structured teaching methods.
rhgraysonii 1 day ago 0 replies      
I would recommend starting with a calculus book. If you aren't comfortable enough with the trig side of things, do a refresher on OCW or Khan Academy.

This book is my personal favorite.


cweagans 1 day ago 0 replies      
Khan Academy is great. I wish they had some kind of placement thing to evaluate your skill in different areas of math, but you can always just start with something you recognize and work your way up from there.
Galeno 1 day ago 0 replies      
There are great courses on http://www.coursera.org and http://www.edx.org

I like Mooculus, developed at Ohio State http://mooculus.osu.edu

ddv 1 day ago 0 replies      
To help build your intuition when learning math you might find these articles helpful [1] as supplemental material.

[1] http://betterexplained.com/articles/category/math/

pdiddy 1 day ago 0 replies      
I would highly recommend the book 1089 and All That. It won't teach you much math, but it is an excellent book to read while getting started. Measurement is also a good book that starts from scratch.
mazsa 1 day ago 0 replies      
readme 1 day ago 0 replies      
Do not get discouraged. Wikipedia is an encyclopedia! Math education is not the goal of an encyclopedia. Other sources in this thread will help.
rdlecler1 1 day ago 0 replies      
A book called Mathematicians Delight will be very helpful. Easy readying. A classic.
tsomctl 1 day ago 0 replies      
Applied math major here. I strongly recommend you don't use websites to teach yourself math, with the possible exception of Khan Academy or OCW. Most websites or YouTube are only good if you already somewhat know the math topic, and you just want a different way of explaining it to help reinforce the topic. Most websites feel like tutoring: only good for helping as a secondary source. Wikipedia is completely useless for me unless I already know the topic, in which case it is a decent reference. I've tried to teach myself math using online resources, and failed. (Note that I have taught myself C, C++, C#, Java, and Python using online resources, and I know how to use Google, but math is a lot more formal.)

I recommend you get a proper book, which is going to be more complete, will start at the basics, and then build on itself. Anyways, I recommend you learn algebra, geometry, trigonometry, and calculus, in that order. You'll also want to learn linear algebra, but you should be able to understand it after basic algebra. I can't recommend a book for algebra or trig, since I took them so long ago. Calculus by Stewart is a popular text book, is accessible, covers the complete basics, and has old editions cheaply available. (I bought mine for $5. Older editions of textbooks are dirt cheap, and have almost the same content as newer editions.) Plenty of people don't like it, and there might be better calculus text books, so I'm not saying it's the best. Strang has written several books on linear algebra, they are well written, but not necessarily thorough. Once you have a textbook on the topic you're interested in, use it to accompany Khan Academy. Math builds on itself, so you'll constantly be referring to previous stuff that you learned, and this is significantly easier with a text book. Mark it up, highlight every definition and theorem in it, and never through it away. Check out your local library, and see what books work for you, then buy them. If you have a college/university near by, their library will have the books that their math department uses. Note that they might not be on the shelves, you'll have to ask the front desk for it, and you can only borrow it for several hours.

Once you have a decent understanding of calculus, read a proper book on math thought/proof writing. The class I took on this changed my life. All upper level math books are extremely structured, and this will teach you how it is done, as well as how to structure a proof, and set notation. I read Mathematical Proofs by Chartrand, but there are others. Once you have done this, you can easily teach yourself any math topic and have the ability to understand any math paper. You can now learn real analysis and/or abstract algebra (I recommend Pinter for abstract algebra).

TLDR; Learn math from proper text books, use online resources to help you get through them. Learn algebra, geometry, trig, calculus in that order.

joshuapants 1 day ago 0 replies      
I'll be a third person to recommend Khan Academy.
Jugurtha 1 day ago 0 replies      
Nothing to be embarrassed about. I graduated and I'm still working on my Maths and Physics daily. I have a folder in my computer named "Core Knowledge" because I noticed that whenever I struggled with a topic, it wasn't really the topic I was struggling with, it was my core knowledge that was weak. I'm strengthening the core so that I'll only have to deal with the topics.

The best and worst thing today is that you have a huge number of resources. So much that you can either learn it all, or none. Most will go with none.

Everyone will recommend their favorite books. I'll do the same:

- Piskunov's "Differential and Integral Calculus".

- Demidovich's "Problems in Mathematical Analysis".

Piskunov for a course (concept, example. concept, example) and exercises. Demidovich for a quick review and about 3000 exercises.

I personally prefer the Soviet style for Maths and Physics. They're sharp, read your mind, and are ADHD free.

williamle8300 1 day ago 0 replies      
Don't listen to anyone here that even mentions Khan Academy. It's good if you don't mind wasting a lot of time (I'm assuming you're a remedial learner).

You need two components to properly learning math:a) theoryb) practice


Sequence:1) Algebra2) Geometry3) Trigonometry4) Calculus (single, multivar calculus)

Here's links for (1)(3)http://www.mathsisfun.com/algebra/http://www.mathsisfun.com/algebra/index-2.htmlhttp://www.mathsisfun.com/geometry/http://www.mathsisfun.com/algebra/trigonometry.html

For calculus, I don't know anymore productive way than taking classes at a local Junior College. You need to place into these classes since you haven't taken math classes in a few years. Try to place into a compact summer class. My local college lets me place into Calc 1 & 2 (Honors) as the highest class to place into.

The website (mathisfun) is a great resource. It looks really kiddy, but concept are explained properly. If you can get over the visual aesthetic, you can relearn mathematical ideas quickly.


Buy a book. Preferably a book that has a boat load of problems for you to run through.

Build confidence through exercises.

Ask HN: Building a blog engine
8 points by littlegift  1 day ago   7 comments top 4
jbrooksuk 4 hours ago 0 replies      
I'm currently building a new CMS that is focused around an API. The idea is that data is stored in an agnostic way, for example, the CMS doesn't know nor care that you're storing a page of hats, nor would it know if you started selling hats and ties.

You model your data, create a document from said model, then you can place it into a collection of "hats", "ties", whatever.

dhogan 17 hours ago 0 replies      
Just thought that I'd throw this out there because I think Ghost is pretty cool. https://ghost.org/ It's open source and seems to be somewhere along the lines of what you are hoping to create. If you want to build your own, that's awesome, go for it.

But, perhaps consider contributing to this project for things you want to add that it doesn't already have.

Mz 1 day ago 1 reply      
but I haven't found any that really got me exited

I am reasonably content with BlogSpot. Others seem happy with WordPress. If you aren't excited, I suggest you start with listing what YOU want, code up an MVP and then maybe submit it to HN under Show instead of Ask.

suprjami 1 day ago 2 replies      
Markdown editing.

I would love a blog with an editor like Dillinger.io

Ask HN: Language/project for teenager beginning programming?
4 points by kyriakos  1 day ago   7 comments top 7
trcollinson 20 hours ago 0 replies      
One method I have been using to teach my son is Project Euler. The language he uses has switched a few times (he keeps picking different languages, you'll see why in a minute).

Project Euler isn't a programming tutorial, it's a math problem site. This works out well because it has interesting and challenging problems which pay off quickly. I generally read over the problem with my son and then he starts to work it out. At first he would show me what he wanted to do on paper ("I want to be able to take a number and add another number to it over and over again, quickly because I have to do it like 1000 times", he would say, for example). We would then sit down with a language and I would tell him how to make the language handle that ("Try creating a variable, which is like a box to put something in, put in your first number. Now lets loop and add things to it. See how that works?") He would type it out and get the logic rather quickly and solve the problem and feel great about getting the right answer.

Here's the fun part about Project Euler. When you answer the question you are given access to a question specific forum where others post how they solved the answer. He would then read through the other answers and see if he could assess whether his method was better or worth than others (he's competitive). This gave him exposure to a lot of languages and techniques. He asks me millions of questions about this language or that. Then he tries them. Then he moves to the next problem.

Over all, for an 11 year old, it has been a great experience. He's learned a lot about both math and programming. We also get to spend some good time together.

christudor 1 day ago 0 replies      

Either Python or Rails would be a good start, since (I believe) they are most widely-used languages/frameworks for web development, and there are a lot of really good introductions out there. I'd suggest either Codecademy or Treehouse, both of which I have used and have really accessible introductions to both languages.

Another option might be to start with Swift, which is the language used to create iPhone and iPad apps. It might be a bit 'cooler' to show someone an app you have made rather than a website you have built, which may help with motivation?


Most tutorial sites come with in-built projects, as it's probably the best way to get your head round concepts. On Treehouse, for exmaple, after learning some basic Swift, your first 'project' is to build a one-page 'FunFacts' app, where you press a button and it cycles through ten 'fun facts'. Other sites will have you recreate Tinder, though that may be a bit inappropriate for a thirteen year old!

The reason I started with Rails was because of Michael Hartl's tutorial, which has you create Twitter from scratch. Looking back at it now, Twitter is actually a relatively straightforward app. At the time, however, I thought it was amazing that you could go from nothing to 'creating' Twitter in no time at all.

Disclaimer: This is all just my opinion based on having decided to learn some of this three years ago. There are no doubt plenty of 'proper' programmers here who might tell you something different!

brudgers 1 day ago 0 replies      

1. The subject matter is inherently interesting.

2. Running on the JVM means it works on Windows/OSX/Android.

3. Compiling to JavaScript easily means that programs can be made accessible via the web for iOS.

4. It's easy to write simple expressive programs where "expressive" is not some technical term bandied about by programmers.

5. It provides fast visual feedback.

Good luck and have fun.


akg_67 21 hours ago 0 replies      
What does interest a computer literate 13 year old? You want to pick something that interest the kid and quick to learn and see results.

Games - I don't have any interest in Games so can't recommend one. Coursera's Interactive Python might be of interest.

Writing - Blog. PHP and WordPress.

Arts, design - UI/UX based language. Javascript.

Numbers and Data - Python, MySQL.

Old stuff - BASIC

panamafrank 21 hours ago 0 replies      
Golang is small enough to learn easily and it's geared towards usability. But also try c# and visual studio there's the xna framework for writing games and the debugger is the best.
monroepe 22 hours ago 0 replies      
Ruby on Rails is a good place to start. Ruby is a very human readable language and you can do some pretty cool things quickly using Rails.
mc_hammer 1 day ago 0 replies      
php is a good starterand jquery
Ask HN: React.js, prerender.io vs. PayPal/react-engine approach
2 points by alfonsodev  1 day ago   discuss
Ask HN: Best books/resources on running a lean/bootstrapped company?
8 points by philippnagel  1 day ago   3 comments top 3
hawe 21 hours ago 0 replies      
The Single Founder Handbook - http://www.singlefounderhandbook.com/ ?
pacnw 1 day ago 0 replies      
The obvious ones:The Lean Startup - Eric Ries,Rework - Jason Fried & DHH,Getting Real - Jason Fried
ignasl 1 day ago 0 replies      
Traction is also good book
Ask HN: Are there actually any exciting companies in Seattle?
19 points by seattle_spring  2 days ago   15 comments top 8
adenverd 2 days ago 2 replies      
Checkout Intentional Software. It's a startup of about 70 people funded and led by billionaire CTO Charles Simonyi. They built a platform for developing domain-specific languages (on top of the CLR), and are now developing some pretty incredible collaborative productivity apps on top of that platform. Their recruiting slogan is "this is why you chose computer science," and after interning there for 6 months I can say that's 100% accurate.

Pay and benefits are equivalent to what you'd get at Microsoft or Amazon, without the corporate BS.


reverius42 2 days ago 1 reply      
(Disclaimer: I work at Dato.)

Dato is a venture-funded startup in Fremont (right by the canal, down the street from Google). We are on a mission to make the power of machine learning accessible to the masses, with a great team and an exciting opportunity ahead of us. We maintain and contribute to open source projects. Personally, I think it's really exciting and I am passionate about it.


ninetax 2 days ago 1 reply      
Climate (http://www.climate.com/) has a great office in Seattle. I haven't been, (I'm in the SF office) but I hear the culture is excellent. Contact me: skhalsa@climate.com and I can refer you to the right team.
kvanderd 2 days ago 1 reply      
I would checkout http://www.ivysoftworks.com/. The CEO of this company was the CTO of a company I worked for. Extremely developer friendly, great visionary etc.
larrykubin 2 days ago 0 replies      
I am personally excited about Redfin and Socrata. Redfin made is super easy for us to find and purchase a house. We went from knowing nothing and not having a realtor to closing on a house in 30 days. Socrata is working to open government data.
jetsnoc 2 days ago 0 replies      
Any interest in working remotely? I have a great lead engineering position posted.


thematt 2 days ago 1 reply      
I lead the software team at Blue Origin, come check us out. We're right outside Seattle.


adventured 1 day ago 0 replies      
Everyone has a different definition of exciting of course.

That said, Zulily, DocuSign, Moz, Zillow/Redfin, Apptio, Simply Measured, and Tune are all in Seattle.

Ask HN: My 12 year old nephew wants to make a game, how do I help him?
38 points by andersthue  2 days ago   62 comments top 43
veddox 2 days ago 2 replies      
Definitely Scratch (https://scratch.mit.edu/), I would say.

It's a drag-and-drop, graphical programming environment designed specifically for kids of that age group. It teaches them about conditionals, iteration, a bit of object-orientation, and makes it very easy to build relatively sophisticated games/animations within a pretty short amount of time.

I've had good experiences with it with kids of that age group, many really enjoy it.

decodv 2 days ago 0 replies      
I recommend you try Phaser - https://phaser.io/ - a JS library for EASILY creating HTML5 games. Which is gratifying. And encouraging.

I had never heard of Phaser until seven days ago. Since then, I have created a full "short-game" (avg. game time is 1-3 minutes) with all of the basic elements: a loader, start menu, object collisions and overlaps, animations, sounds, timers, scoring, etc. Nothing to sneeze at, and Phaser made it super simple.

To go along with Phaser there is the MightyEditor - http://mightyfingers.com/ - which is a web based open source HTML5 game editor, based on Phaser.io game engine. Essentially, it's a WYSIWYG drag-n-drop editor that generates the Phaser code in the background. I haven't used MightyEditor as I'm more of a coder, but it exists for you try.

Now, you can certainly produce more powerful games with other approaches/languages, but I doubt any will let you start developing a game right out of the box. Likely, you'll spend all of your time trying to learn the language ... that you never get around to actually making a game. With Phaser, you just start making your game.

pvaldes 2 days ago 2 replies      
Close the computer.

Pick a piece of paper and a pencil and design a game with him. Create an history, define likable characters, drawn a map, set the rules, create ways to gain/loose points, add a subplot that is interesting, improve all with some plot twists and traps and maybe a small love story. Give him a book about Cornelis Escher. Ask him to draw you a city with some perspective, a forest, a yak in an ice fortress, a cliff where some parts of the game occur.

Bassically learn with him the rules to the good history tellers, and make the route enjoyable and funny for both.

Then, and only then, open the computer.

When I was young and feel bored I created perfectly playable videogames in a graph paper with space ships burning, crashing, hidding, and smashing each other. You only need a pencil and a set of rules to win/loose and it was easy to hide from the teacher if necessary.

Mithaldu 2 days ago 1 reply      
Speaking from my own experience, give him not a programming language, but either a game that includes a programming language, or a tool for making games that includes programming.

Game Maker is the biggest player in that market and used for tons of tiny one-off indie games, as well as lots of commercially successful and great games:


Have a look at the showcase to see what kind of games have been made with it: http://www.yoyogames.com/showcase

legacy2013 2 days ago 0 replies      
Game Maker is the best way to go at that age. I used it when I was younger and the drag and drop functionality was great. As I grew older and started learning to code, the editor let me easily start writing scripts and such to give me more control over the gameplay
svarrall 2 days ago 1 reply      
What about Unity? There are plenty of example projects and easy to follow tutorials that will allow him to make something up and running that's impressive really quickly. Wouldn't expect him to make something from scratch at that age, but he could certainly amend from an existing concept. It won't necessarily help with teaching programming but it's a great start. It's what we do for work experience students and they love it.
brudgers 2 days ago 1 reply      
is there any drag and drop free tools or games about building games?

The first order help a young person needs is being taken seriously and encouragement in their process of discovery. The important conversation isn't "Use this" in it's strong or weak forms. It's the default StackOverflow comment: "What code have you tried? What error are you getting?" (perhaps in a weaker form, perhaps not, depending on the child).

Let the child own the process and understand that the most likely outcome statistically is that the actual process of creating a computer game will turn out to be unattractive as it is to a first approximation for everyone. Making games is hard for highly intelligent adults - much harder than writing a Rails app.

The mistake that I find easy to make with my own child is an unwillingness to let their interest unfold in its own time as part of the growing process. Adult interests and behaviors and skills take years to develop. The twelve year old boy will be radically different intellectually in two years...or even one. It takes patience and a long-term view and an understanding that many of a child's interests are passing. Some come back, most don't, and what tends to come back are interests that they find themselves sharing with friends. To put it another way, your nephew's English comprehension could be orders of magnitude better in five years. His understanding of mathematics most certainly will.

For concrete advice:

Provide high quality resources - the sort of durable tools and books and websites that one would give to an adult. The interest that wanes in a month at twelve may be rekindled for a year at thirteen and arise from hibernation to become a career choice at twenty four...and there sitting on the bookshelf is a weaker form of The Art of Computer Programming for games.

Good luck.

mastercoms 1 day ago 0 replies      
A lot of people are recommending Scratch, but I am going to recommend Construct 2. It is an awesome engine for making HTML5 games. It is visual coding so your nephew will have no problem with it. https://www.scirra.com/

Of course, listen to what pvaldes said also. Designing a game first will be better.

Also, I would recommend Teamviewer for you guys to use so he can share his screen and you can interact with it.

ddebernardy 2 days ago 1 reply      
If you've an iPad, look into http://codea.io

It's maintained by an indie game studio called Two Lives Left (http://twolivesleft.com), which produced the excellent Cargo-Bot game -- and for that matter, let him get a feel of programming with the latter.

deepkanwal 2 days ago 0 replies      
We built an iPad app called Toy Engine (http://www.toyengineapp.com) just for this! It's free and it uses visual scripting.

You make your games using a drag-and-drop level editor (2d only) and then double tap an item to add a script to it. You can also share your levels and download levels made by other users.

kpozin 2 days ago 1 reply      
I got my start in programming around the same age using tools from Clickteam [1]: Klik & Play, The Games Factory, and eventually progressing to Multimedia Fusion (now Clickteam Fusion). These are all drag-and-drop tools, with graphical level editors, event loop editors, etc.

If he doesn't mind using a Windows machine for development (the actual outputs are cross-platform), I think it's a great place to start before moving on to programming languages.

[1] http://www.clickteam.com/

robterrell 2 days ago 1 reply      
One of my kids started with Codea on an iPad 1 (and it still runs on that ancient hardware today!) and is quite pleased to be able to tell people she can code in Lua. Overall, it's extremely well done. However, I think it gets hard to work through high-level logic -- you start off writing code in the draw() function, doing things once per frame draw... getting to a more abstracted level has been difficult in Codea.

However, her school does some Scratch every so often, and she's taken to that too. Scratch exposes lots of levels of abstraction, and the visual editor approach makes it easy to experiment with different ways of doing things. She's done several school projects as Scratch games. (Which, to me, is way better than gluing crap to pasteboard.)

I've tried to get her started in Unity -- I teach a Unity class to new hires at work -- but it's been uphill. Too abstract, too conceptual, too much surface area. And C# has too much syntax that gets in her way.

Lua is a better language for her. But Scratch is even better: no syntax, just ideas. Also, Scratch has a lot of localizations. So, give Scratch a try!

loumf 2 days ago 0 replies      
I am working with a 14 y/o who took some simple python class beforehand (so knew basic stuff functions, conditionals, loops, but no OOP).

But -- he really wanted to make "real games" with a "real programming language".

So, after asking some game dev friends, I went with FlatRedBall (it's a little bit of a GUI builder with C# code-gen).

Look at this pong tutorial to get the basics: https://www.youtube.com/watch?v=KmHmxlljA5c

It's open-source and a bit janky at times, but he's doing amazing things with it.

My process was:1. Do a tutorial we find on the net2. Think of a feature to add, add it3. Keep going until we get bored with the game4. Find another tutorial, goto 1

We did pong, flappy-bird, RockBlaster (like asteroids), and now he is doing an original -- it's a 2-D dungeon, rogue-like. We meet an hour a week, and then he does an hour or two a night on his own.

If he needs to know something about C#, we take a break and learn that in a console app.

drallison 1 day ago 0 replies      
On second thought, I'd suggest that you teach (that is, mentor) some very simple number games and have him program them in Python or BASIC. If you can find it, a copy of What to do after you hit return: PCC's first book of computer games or 101 Basic Games would do for a start.These games are simple, fun, and don't get cluttered up with issues of presentation versus computation logic.
spectre256 2 days ago 0 replies      
Since the other commenters have mentioned a ton of great tools, programming languages, SDKs, and the like, I'll make some suggestions of a different type.

You said you'll be helping your nephew, but consider this as well: find a local group geared towards helping kids learn to program. For example, Coder Dojo(https://coderdojo.com/) has hundreds of locations all over the world. Your nephew doesn't need to be accompanied by a tech-savvy guardian or even bring a computer, usually such groups supply coaches and computers.

They are a ton of fun for all involved, and it's much, MUCH easier to learn something challenging like programming with a coach or even other students.

andersthue 18 hours ago 0 replies      
Thank you all for great pointers on what and how I best can help my nephew.

I have offered him my assistance and I hope he will take it, I will try to limit what i do and maximize the learning of how it is ok to fail and that it takes a lot of time to learn new stuff.

Hopefully he will be able to build something that will make him proud.

SkyRocknRoll 2 days ago 1 reply      
You can try following software from MIT

Create stories, games, and animationsShare with others around the world


xchip 2 days ago 0 replies      
Wow lucky you your nephew is interested in learning. Go for pacman, but before make sure he plays a bit so he gets kind of addicted to it. Then to spark his curiosity ask him questions about how he thinks it works, something like this: http://www.exploringbinary.com/how-i-taught-third-graders-bi...

Have fun! :)

k_ 2 days ago 0 replies      
Stencyl (http://www.stencyl.com/) could be a great tool : it's easy at first to do simple games without knowing anything about code, and you can progressively learn code, starting with basic logic.

Plus, it compiles natively to many platforms: iOS (iPhone/iPad), Android, Flash, Windows, Mac, Linux

mindrun 2 days ago 0 replies      
How about code.org? http://studio.code.org
nogridbag 2 days ago 0 replies      
Microsoft TouchDevelop was posted here on HN recently:


I tried out one of the examples to make a Flappy Bird clone in 5 minutes - pretty neat.

joshuapants 2 days ago 0 replies      
I like the Invent With Python series by Al Sweigart, they are CC licensed and they are a nice friendly introduction to programming with Python (one of the books deals with text games, another with Pygame). I'm not aware of translations into other languages, but they are written at a level for children to understand so they may be worth a look.

There are also languages like Scratch and various "no programming required" game development environments like Construct2. They might be good places to start, but they can also be crutches that prevent progress into more powerful tools.

edit: Is there some sort of downvote brigading going on here? I see a ton of helpful posts in gray.

vectorEQ 1 day ago 0 replies      
give him udk, that's a free tool where you can learn what an engine is, and do a whole lot of the work flow of develping a game in one environment / tool set. The documentation and community is also very helpful. love it! :) I would reccomend this before programming their own engine, to learn what kind of things are involved in making a game. You can make simple 2d games, or full on 3d games.
fredophile 2 days ago 0 replies      
Take a look at Roblox. It's aimed specifically at kids. It takes care of most of the hard stuff like physics, networking and rendering so you can focus on gameplay. It uses lua for the programming language so it's pretty easy to find learning resources online.
pjc50 2 days ago 0 replies      
Game Maker Studio is popular.
fsk 2 days ago 0 replies      
If you're a web programmer, then the easiest way is to do an HTML5/Javascript games. That's the closest to what you already know.

Get him some books on html5 and javascript, or good web-based resources.

Make a simple game with him, like minesweeper or Tetris.

Also, if you make an HTML5/Javascript game, you can use something like PhoneGap/Cordova to compile it to a mobile app.

bhashkarsharma 2 days ago 0 replies      
You can check out MIT App Inventor. It uses scratch. Here's an example of a game:http://appinventor.mit.edu/explore/ai2/space-invaders.html
colinbartlett 2 days ago 0 replies      
I know non-technical people that have used GameSalad to create games that were even published on the AppStore.


Might want to start with a general intro to computer programming though like Scratch, which has been mentioned here.

paublyrne 2 days ago 0 replies      
What about looking at Corona, if he has a mobile device or tablet to test on. It is simple to make simple things quickly, the physics libraries aren't complex.


hobo_mark 2 days ago 0 replies      
I was immediately reminded of this old classic


edtechdev 2 days ago 0 replies      
I'd recommend starting at code.org to learn the basics of programming (loops, etc.) and learn how to make basic games like flappy bird:


Then depending on his interests and abilities, there are various beginner-friendly tools for making games below, from easier to harder and free to commercial.

I would talk with him first about what kind of game is he interested in doing. Something like flappy bird or an arcade game, or modding minecraft, etc. If you make it about learning to program for programming's sake, he may get tired of it quickly and not be interested in programming again for a long time, if ever.




https://www.gethopscotch.com/ ipad)

http://www.toyengineapp.com/ (ipad)

http://twolivesleft.com/Codea/ (ipad)


a little more advanced (text instead of graphical programming), works in browser to make HTML5 games:


windows only:



http://www.learntomod.com/ (mod minecraft with visual programming)




onedev 2 days ago 0 replies      
Teach him about SOA and MVC, I hear 12year olds go nuts for that stuff.
ken_railey 2 days ago 0 replies      
Shameless plug: http://flowlab.io
kozukumi 2 days ago 1 reply      
I think Java is a nice teaching tool. It has a good OO design and you can't break anything with it. No worrying about memory, etc. The only real drawback is the verbosity and having to "just do" things at the beginning (such as ignoring just what public static void... means).
Jugurtha 2 days ago 0 replies      
This is really cool. I'd say drop the drag and drop; he's 12, not 4.

I started programming in BASIC around 9 and C at 14, didn't speak a word of English, and didn't have internet or access to books.

How I worked was: Suppose I wanted to print something, I'd look up the verb in a dictionary for "imprimer" and would find "print", then would look that up in the help. Then would copy the example code given and run it, and then I'd change stuff and see how it'd affect the functionning of code (errors? go back to dictionary, etc). And based on the consequences of my actions, I'd deduce the role of what I changed.

I wrote a program that gave you information on a country you'd enter (population, area, capital city).. You had to type the country in capital letters because I didn't know how to do it otherwise.

He's 12 years old and he's got the internet and you! It's also a great time to improve his English.

The biggest favor you'd do for him, whether you choose a graphical or another approach, is to encourage him and make him stick and never drop the ball. For me, the biggest mistake was going on and off. If I had kept at it, I'd be at least moderately good instead of sucking. You can also show him the work you are doing and make him understand that it's really not that hard to get started and hopefully, at some point, he'll understand the power of this: I can make this computer do mostly anything I want! And he'll be hooked.

TL;DR: Whatever you do, make the priority for him to stick and understand the power at his fingertips.

gavanwoolery 2 days ago 0 replies      
I started learning in QBASIC at around that age (my highschool also taught BASIC on Apple IIe machines). There are modern (i.e. 64 bit) versions of it but I can't vouch for them. If you can get the original version up and running, it is a great intro to programming.
doctorpangloss 2 days ago 0 replies      
Many of the games he might already be familiar with have sandbox, modding or programming-like environments that require no documentation to get started.

If he plays Minecraft, he should definitely study Redstone (http://www.minecraft101.net/redstone/redstone-basics.html). You can make whole computers with it (https://www.youtube.com/watch?v=aQqWorbrAaY). It's what I recommend to my friends who are looking to get their children into programming or making games. Don't underestimate how much more compelling Minecraft is than literally everything else out there.

Starcraft II is free, and its map editor is excellent for nearly every kind of top-down game. It's a very drag-and-drop sort of interface that doesn't require any programming. You can probably build the widest variety of games with it.

Team Fortress 2, which is also free, comes with the Hammer Editor. It's a little more idiosyncratic than Starcraft II's map editor, but also a great way to just drop things in and play. It's ideal for first person shooters.

A bunch of games have really fascinating programming-like experiences. DOTA 2 (free) has its Workshop Tools; Cities: Skylines (paid) has an Asset Builder and programmed mods. A lot of these games are a bit above 12 years old though, so it might be a little intimidating.

I think for most kids, they're more interested in Garry's Mod (http://www.garrysmod.com) and Little Big Planetsandbox environments. You just do stuff and things happen, and it's all very pseudo-physical.

I've seen some other recommendations on here. Generally most kids aren't equipped with the amount of patience these actual programming environments require. If you insist on programming, then Scratch is the best of the options. Check out the first assignment in Harvard's CS50 class here (http://cdn.cs50.net/2015/spring/psets/0/pset0/pset0.html#itc...). To put in perspective, this is regarded as one of the easiest to learn and most polished programming environments, and students at University level (almost twice your son's age!) are given 2 weeks to make something. So as an introduction, this is still extremely hard.

Conversely, things like Unity3D are going to be super crazy complicated, to be completely honest. It's disheartening to read any documentation. Just orbiting the camera in the viewport is a skill. Plus, lots of kids like to build multiplayer experiences, which are all possible with the map-making and modding tools above, but not possible with any of the actual coding frameworks written below.

jowiar 2 days ago 0 replies      
I'll plug my friend's book here: http://www.gamkedo.com/kit/

It's in JS/canvas, so tools that you should be familiar with.

fallinghawks 2 days ago 0 replies      
This might be a little too simple but check out Blockly


hluska 2 days ago 1 reply      
Is he a Minecraft fan?? If so, Minecraft has a very active modding community and that might be a great place to start.
frenchHipstaz 2 days ago 0 replies      
He could try darkBasic Pro for a start. That's how I got into programming.
euroclydon 2 days ago 0 replies      
load81 by the author or Redis. It does not get any more elegant than this!


Ask HN: Are non-freemium games an obsolete business model?
9 points by yummybear  1 day ago   7 comments top 6
suprjami 1 day ago 1 reply      
I like the one-time-IAP model.

You can either make some of your game (a few levels, a fraction of the overall length) free then charge for the rest. This gives me a chance to play your game, and if I like it I'll pay.

You could also add a one-time-IAP which subtly improves gameplay. Most do this as a "buy to remove ads" but the Piggy Bank in Crossy Road is a good example of a clever use of this model.

When the Honest Android Games blog was going, it would cover games with fair one-time-IAP to unlock full games, so don't feel like you're selling out because you include one purchase. After all, this was the shareware model in the 90s and that was more than fair.

taprun 1 day ago 0 replies      
There are all sorts of business models that work for cell phone games. Here are the three most common:

* Freemium - Get users then try to charge them money later

* Up front - Get paid by people, then provide them with a game

* Ad-based - Get users and then sell their attention to companies

The reason why freemium is so popular is that it makes sales much easier. Users can try a game with zero risk of spending money on something they don't like. For this reason users are more likely to download your game instead of a paid app. Once they get hooked, they are more likely to spend money. I would argue this is a good thing for users and for publishers. Users have reduced risk and publishers can get in front of more potential customers.

Fremium doesn't have to be pay-to-win or scammy. Depending upon your game, you can sell access to more levels, better AI, multiplayer support, new graphic tiles or other items that provide real value without being scammy. The original Doom worked like this... The first levels were free, but if you wanted to play the entire game, you had to pay up. The fact that the first part was free allowed it to spread like a virus and boosted its sales immeasurably.

Freemium can be applied to almost anything. I wrote a book and give away one chapter. Want the rest? Time to break open that wallet. It doesn't feel scammy at all. Folks can read the free chapter and get a feel for the type of content and quality that the rest of the book contains. Less risk for them, more money for me.

mcv 1 day ago 0 replies      
Freemium certainly seems to be a very successful model, but that doesn't have to mean other models are obsolete. Important to keep in mind, though, is that on mobile app stores, there's a ridiculous number of games available, and many of them are free. You need to have a plan on how to compete with free.

There different ways to handle free or freemium:

* a playable demo (limited in features or scope, like only a few levels) with a paid full version - this is the classic model, and it's a really good and honest one. The full version could be either a separate app, or unlockable in-game (through in-app purchase or entering a code).

* a full featured, ad-loaded free version and an ad-free paid version. Popular on mobile because ads are easy to do. People who don't mind the ads might never move to full, but ads can apparently bring in a lot of money. You could even do just the ad version, but some people hate them and don't mind paying for an ad-free version if they like the game.

* a limited, ad-loaded demo version. This one is a bit two-faced and feels a bit more sleazy to me; it's simultaneously a limited demo from which you hope people will upgrade to full, but you also want ad revenue from the demo, which itself is basically an ad for the full version.

* a free limited version with multiple, staged upgrades to more versions. Sleazy if you're dishonest about this up-front; it's a bait-and-switch if they expect to buy the full version and then don't get it. But if you're open about it, buying access to more levels or more worlds could be a totally reasonable way to do this.

* a free full version with in-app purchases that give in-game bonuses. This is the big one that seems to be incredibly effective (Clash of Clans, Candy Crush, Hay Day and all those other mobile games use this). Most people will just play for free, but a small group of addicts, or "whales" will be paying through to nose to fuel their addiction to your game. Ethically creepy if you really want to milk the addiction angle.

I'm sure there are other variations that I'm forgetting at the moment.

zapu 1 day ago 0 replies      
Why iOS only? Pay to play model still works pretty well on PC. See the numbers for yourself:

* http://steamspy.com/

* http://steamspy.com/genre/Indie

lsiebert 1 day ago 0 replies      
There is another model, though I'm not sure it works for IOS. The Subscription model. You get access to the full game as long as you continue to pay for it.
brianwawok 1 day ago 0 replies      
How about free one level, $1 to enable rest?

Not scummy but also gives people a free trial.

Ask HN: How much should I be paid an hour? (Australia, Contract FED)
15 points by ausdevthrowaway  3 days ago   23 comments top 6
dsacco 2 days ago 0 replies      
I'll preface by saying that it's hard for me to really critique that number because I don't know where in Australia you live and what the cost of living is there.

That said, intuitively I feel that is insanely low. If you are framing yourself as a consultant who can solve quantifiable business problems using frontend development, then ~$400 per day is absurd. I would say increase regardless of your living costs. Asssuming 30 weeks of utilization, you're working for $60,000 per year. If you're doing remote freelance work then you can target US companies and literally quadruple this.

I live in NY and I charge between $1000 and $2000 per day for information security services that normally take 2 - 4 weeks per engagement. Mind you - information security is a specialization that is not as quantifiable as developing a website for business purposes, so in theory you should be able to achieve higher rates than that (Brennan Dunn, as an example, charges $20,000 per week as of 2014, and he does a mixture of web development and copywriting).

If you follow 'patio11's advice you can certainly increase this. The beautiful thing about being a consultant is that you can choose to work remotely, which means you can anchor your cost to the living costs of your client's location. I'd be charging the same if I lived in Kansas.

Increase your rates, and if necessary rebrand/reframe your value proposition. Also - get rid of the recruitment agency. Agencies can be good, but you need transparency regarding your rate and how much they are taking for placing you. You should also try to develop a strong personal network for referrals.

You will know when you're successful because you start saying no to potential clients as much or more than you say yes.

xytop 3 days ago 3 replies      
Oh guys..I'm a senior web developer (working on a leading position in a company which runs 3 startups), I speak natively Rails, PHP.. fluent in SQL and still i get..


I'm in Europe though.. but when I look at your numbers I want to cry.

That's very a lot to my taste.

Edit: did calculations.. even $24/h ($46800/year)

girvo 2 days ago 0 replies      
Depends. Freelance, or consultant? I've done both, and am in Brisbane. I charged $400/day as my normal rate for the latter. The former was project dependant. And could be from $10/h if I messed up quoting to $1000/h if I quoted well and everything went well.

Working as a full time "full stack" engineer I'm earning $50/hr with 8 years of experience under my belt. Which I prefer, as I earn good money for my age and location, without the stress of finding work.

nness 3 days ago 0 replies      
Depends on the number of hours you are working a day, and assuming you're being charged out at time and materials, that would be $50-60 p/hour.
stephenr 3 days ago 0 replies      
In my experience pimps (Im sorry, "contract agencies") just add their costs on top of your requested rate, and offer that to the client.
candeira 3 days ago 2 replies      
You don't say how much experience you have, how many hours/day, which city you work in, or in which industry. So I'll answer assuming you're junior but you've been doing this for at least a year, you can write good code and good English, you're working 8 hour days, you're in Sydney or Melbourne, and you contract out to an agency doing work for mid-size companies.

I'd say you are at the very very low end of the scale, if not falling off the scale. If you have any skill in front-end JS, and aren't a trainee or a recent graduate with zero experience, you should be getting twice that money easily.

For a comparison, I do back-end and devops work, and I charge in the range between $85 and $175 per hour (1), depending on the client and the work. Right now I have a project of each. I suspect I'm also undercharging some clients, and that intermediaries who genuinely can't pay me more are also undercharging. However, I don't work for recruiters/outsourcers, but directly for companies shipping software, though some of them are intermediaries in the sense that they run a project for a client, and then hire me as a contractor instead of as an employee. Also, I haven't done almost any front-end work, but it's my impression that front-end skills are in higher demand, and rates are higher on average.

(1) AUD, not USD.

You say you don't have other people's salaries to compare. I too wish Aussie JS and front-end freelancers shared their fees here. Here's how to compare freelance day/hour rates to a full time salary, by the way:

A full time worker puts in about 2000 hours a year. As a freelancer, you have to put in your own training, sales (finding work), you pay your own superannuation (because you do, right?), equipment (you buy your own laptop), training (you buy your own books and courses, you pay your own way to attend conferences), etc.

Thus, when comparing your day rates with the money a full time worker gets, you should take into account extra benefits paid by their employer like super (for non-australians, this is a retirement account, by law employers' contributions are about 9%, but some companies pay more, up to the mid-10s), training courses and conferences, etc.

As a freelancer, you don't have sickies or paid holiday of any kind, so you should account for 1000 billable hours a year. Working more is the cherry on top, and less is a risk that you hedge by having good rates.

Therefore, $85/hour is more or less equivalent to an $85.000/yr salary + benefits. $175/hour would be equivalent to $175.000/year salary + benefits.

Obviously this is without taking into account tax brackets, forced downtime if you have health issues, and the averaging of good and bad weeks/months/years. Also, perceptions of salaries/rates aren't linear, neither for you nor for potential employers.


Note: this advice is for an hourly rate programmer. HN legends patio11 and tptacek will rightly advise you to get out of this game if you can, and I agree with them. I'm trying to do it myself. But while you're in it, this is what I've learnt that I can share.





There is a lot of the above advice that you start applying now while still in the hourly rate game, so I'm pasting the link to tptacek's comment again, because it's hella relevant and pithy.


Good luck. And to my fellow Aussie freelancers, please share your rates and help everybody negotiate better with clients and employers.

Ask HN: What technologies to use for new startup ideas?
4 points by spectrum1234  1 day ago   7 comments top 6
cweagans 1 day ago 1 reply      
Just use the tool that you know and that you can deliver with. No need to jump on the bandwagon of the new shiny language/framework/methodology of the week. If you can ship software in php, use it. If you can ship with node + react, use it. Focus on building.

And stay away from oDesk, elance, freelancer.com, etc. If you want good technical help, go with gun.io. I'm not affiliated with them in any way, other than being a freelancer on their platform. You will pay more for sure, but you'll end up with something useful rather than a broken pile of hacks.

MalcolmDiggs 1 day ago 0 replies      
IMHO: If your plan is to outsource these projects, the most important factor is your level of comfort with the code. Outsourcing is tricky, and you might need to be very hands on (for code reviews, bug fixes, project planning, etc). You don't want to be building prototypes that you couldn't maintain/troubleshoot yourself.

I say that all to say: go with what you know.

Sure, the differences between certain platforms and technologies do matter (especially at scale)... But if your only present-concern is getting products out the door, then your comfort-level should trump all other concerns.

sgdesign 1 day ago 0 replies      
Out of all the technologies out there right now I would say Meteor is the fastest to learn to get a prototype out the door quickly. Rails is also always a good option since it's so popular.

If your priority is building a prototype (and not becoming a developer) I would focus on being practical, as opposed to spending months finding and learning the "best" possible technology.

aaronbrethorst 1 day ago 0 replies      
Don't waste your money hiring contractors to build your product, especially off of oDesk.

Personally, what I'd recommend is find someone local (yes it'll cost more), and say that what you want to do is pair program with them with the intention of bringing up your skill and comfort level with programming.

mgaffneyny 5 hours ago 0 replies      
Agree with Meteor, trying out RamNode now too for VPS
_RPM 1 day ago 0 replies      
Rust, Go, or any other new technology. Hell, maybe even some React, (Angular.js is old school
       cached 16 June 2015 12:05:02 GMT