Oleg Andreev



Software designer with focus on user experience and security.

You may start with my selection of articles on Bitcoin.

Переводы некоторых статей на русский.



Product architect at Chain.

Author of Gitbox version control app.

Author of CoreBitcoin, a Bitcoin toolkit for Objective-C.

Author of BTCRuby, a Bitcoin toolkit for Ruby.

Former lead dev of FunGolf GPS, the best golfer's personal assistant.



I am happy to give you an interview or provide you with a consultation.
I am very interested in innovative ways to secure property and personal interactions: all the way from cryptography to user interfaces. I am not interested in trading, mining or building exchanges.

This blog enlightens people thanks to your generous donations: 1TipsuQ7CSqfQsjA9KU5jarSB1AnrVLLo

man git-commit-tree

DIAGNOSTICS
       You don't exist. Go away!
           The passwd(5) gecos field couldn't be read

       Your parents must have hated you!
           The passwd(5) gecos field is longer than a giant static buffer.

       Your sysadmin must hate you!
           The passwd(5) name field is longer than a giant static buffer.

ruby inject mastery

def movie_events_grouped_by_titles_and_theaters
   events = Event.all.inject({}) do |titles, event|
     ((titles[event.title] ||= {})[event.theater] ||= []) << event
     titles
   end
end 
(my response to the mail list discussion; in russian)

~/.gitconfig

[user]
    name = Oleg Andreev
    email = oleganza@gmail.com

[apply]
    whitespace = strip

[diff]
    color = auto
    rename = copy

[pager]
    color = true

# this one is very cool: 
#   green means "to be committed" 
#   red means "not to be committed"
[status]
    color = auto

GitHub is a social network, indeed

Today I have received a letter:

Hello Oleg,

I’m a Io newbie. I was watching some of your sample code on Github (loved funnyFactorial ;-) when I discovered your “learning french” subdir. I’m french and would be pleased to answer / comment / whatever about that language (not so human).

^_^

Git cookbook: commit id for a given path

$ git rev-list -n 1 HEAD <path/to/folder>

Returns the latest commit, which modified a given path. This is useful to find out whether something has recently changed in the particular folder.

Time-driven development

Young hacker looks at the figures: “2 hours for the feature Foo, 4 hours for the feature Bar”. He feels that kind of pressure: “I have to make it! I have to type faster, think faster, test faster.”

This is an awful feeling. So here’s the (possible) solution to this situation: try to think of time as of money you are investing. Tell yourself how much time of your life would you invest into this piece of #$@^ (of course, take into account your rate/salary). Now it looks like you score the feature Foo for just 2 hours: it doesn’t worth 4 hours or more. Spend 10-15 minutes for planning the way to spend that much time and do your best. If some trouble strikes and you’re out of time, just give up. Go to another feature and let this to be discussed on a weekly meeting when there’s time to schedule next iteration.

If the client wants a fixed price for software, you will not have any additional time. In such case - either do a dirty job, or work all the night. You to decide.

Excerpt from One Method At A Time Is Quite A Waste Of Time by Andreas Gal, Michael Bebenita, and Michael Franz. This paper is about trace trees in virtual machines.

Excerpt from One Method At A Time Is Quite A Waste Of Time by Andreas Gal, Michael Bebenita, and Michael Franz. This paper is about trace trees in virtual machines.

English—2

And when they drop back to French, discussion becomes a complete nonsense.

English

At this very moment I’m attending a meeting at The Big Company in France. There are six french folks around me speaking English instead of French. The only reason for that is me — I don’t speak French. It’s a bit hard for everyone to speak and understand English and initially I was a little bit ashamed of that. But soon I realized that the difficulty of speaking English makes everyone to focus on the essentials and prevents spoiling everyone’s time on the nonsense. Sweet.

The current version of TeX is 3.1415926; it was last updated in March 2008. The design was frozen after version 3.0, and no new feature or fundamental change will be added, so all newer versions will contain only bug fixes. Even though Donald Knuth himself has suggested a few areas in which TeX could have been improved, he indicated that he firmly believes that having an unchanged system that will produce the same output now and in the future is more important than introducing new features. For this reason, he has stated that the “absolutely final change (to be made after my death)” will be to change the version number to π, at which point all remaining bugs will become features. Likewise, versions of METAFONT after 2.0 asymptotically approach e, and a similar change will be applied after Knuth’s death. Wikipedia article on TeX versioning. By the way, Perl 6 milestones are numbered with 2 Pi decimal digits.