HN user

dougk7

48 karma

[hn handle] @gmail

Posts4
Comments36
View on HN

This article really nailed it. I spent two months last year in the D.R Congo and in those 2 months I had approximately only 4 hours of coding.

Electricity was reliable only between 11PM to 5AM and we spent New year's eve in the dark.

My data provider had a special 3G plan where you get 1Gb data between 12AM and 6AM for $1. This worked well for the first 2 weeks only then connection became non-existent. The only thing the provider had to say was "sorry but we don't have coverage in your area."

Yet I met some brilliant folks who would make amazing programmers if only they had access to all the resources we get with reliable internet and electricity. I spoke with many of them about starting a computer club where we meet weekly, share ideas and learn from each other. Some were kin but many were skeptical because they're used to unkept promises.

Edit: Forgot to mention that the state has installed fiber optic in some parts the capital city but nobody wants to use it because they know the government will abuse it and extort millions from users. And the country's ccTLD .cd is still one of the most expensive in the world.

I minimise costs by using a mix of GAE and AWS: Host the main application on GAE but for background services use AWS. E.g I use AWS SES for mails and S3 for storing uploads and blobs.

Also storing objects that don't need indexes as pickled blobs in a parent model helps a lot. The advantage over JSON is that you don't need extra code to parse, (de)serialized and validate the object.

Elasticsearch is really awesome for keeping large amount of searchable data. I used it in a previous application where we stored millions of items a week.

For data retention I had different indexes with different TTLs, depending on the type of queries that hit them (queries that only dealt with frequent items were sent to an index with a very short TTL).

For graphing I also used Graphite, with metrics (http://metrics.codahale.com/) for sending data from Java programs and scales (https://github.com/Cue/scales) for sending data from Python applications.

The only problem I had was tuning it for faceting (Faceting consumed lots of RAM).

+1. If you just replace "smaller" with "less armed", you get the history of most Sub-Saharan African countries in a nutshell. Unfortunately the schools there still teach more history about medieval Europe than post-colonial Africa.

In addition to vukmir's suggestion of Robert Sedgewick's Coursera video lectures (which have some animations to help visualize the data structures operations), I find "The Algorithm Design Manual" very useful for interviews. The chapters dealing with data structures are concise and contain just enough information to be useful during an interview.

SEEKING WORK - Remote

Full stack developer, primarily backend.

I've worked extensively with backends of systems doing lots of NLP, ML and IR tasks (classification, stream processing, sentiment analysis, clustering, search) and I've optimized MySQL databases to process and store very large amounts of data. I enjoy playing with data and writing APIs and services.

Primary skills:

    * Python
    * Javascript
    * DevOps (Linux)
    * AWS (EC2, RDS, S3, Autoscaling)
    * NLP and Machine Learning
Tools I often use and other skills:
    * Lucene (Solr and ElasticSearch)
    * Redis
    * RabbitMQ
    * Thrift
    * AppEngine
    * Java
Github: https://github.com/dougk7

Email: dougk7@gmail.com

I've only started freelancing in the last couple of weeks so the rest of my portfolio is full of personal projects available on request (includes a teespring.com clone, a couple of vertical search engines and some OpenCV projects).

I'm fluent in French and English.

Founders' Accents 13 years ago

I'm originally bilingual (French and Lingala). I've been living in an English speaking country for the last 10 years, moved here as a teen. It still takes me a lot of effort to pronounce some sounds. e.g some words borrowed straight from French and words containing 'r' when it follows a consonant as in 'brother', 'prescribe', 'degrade'.

What I discovered is I may be too poor to own art but I can create it for people who are rich enough to own it. With time and the right opportunities I can increase the price until my name == expensive art.

Fascinating read, my memory wasn't as vivid as this person's but I didn't need much effort to recall anything. Like you, it all changed with age.

It was really wonderful sometimes because I didn't need to read textbooks, take extensive notes or do homework. The down side was, as a kid, it got me into a lot of trouble when people lied and I would re-tell them something they had said before that contradicted what they're saying now.

One day in my last year of high school, toward the end of the first semester, the math teachers was shocked when he opened my exercise book to find that I stopped taking notes on the 3rd week of school and the rest of the book was filled with doodles. I was one of his best students though :)

Yes we haven't had a "World war" and your intention isn't to minimise things but you've just minimised things - those wars are not simple conflicts. The second Congo war alone took more than 5 million lives. Although officially over, lives are still being lost everyday from its aftermath. http://en.wikipedia.org/wiki/Second_Congo_War - more recently, not even a month ago, there was another fight that saw a city fall in rebel arms and thousands of people flee from their homes.

I first familiarise myself with what the project does and read the docs, especially if there's an overview of the architecture documented somewhere. Then clone the project locally and open it in an IDE like Eclipse that will allow you to quickly jump between modules and see the structure of the project. Starting from an entry point (e.g the main() function), work your way into the parts you're interested in. If there's any dependency you also want to look into, just clone it and open it as well.

I also prefer reading through projects I use either as a dependency or as part of a system I'm building.

For that the Apache foundation's projects is an excellent place to start. They have very good documentations and the forums are filled with discussions.

e.g Apache Nutch (before the v2.0 release) - there are many talks and slides you can find on its architecture and the source code isn't hard to read. http://nutch.apache.org/

Twitter's github projects are also very good - especially when I started learning scala.

One project that I read for fun, it was hard to go through but the exercise was worth it is Chromium. http://www.chromium.org/developers

Me! For statistics - I discovered its beauty after failing it once, then trying to do machine learning tasks without a solid knowedge of stats.