Sunday, January 2, 2022

about this blog

Well I want to make some notes about this blog. At first I have 2 groups of posts on Russian and English languages. Who interesting in various question about interview on software developer positions can grep by interview tag (it's not only my own experience but also experience of my friends and interesting things from the internet). Posts about life behind IT available with life tag. Posts about GPS and navigation avalible with gps tag. I'm working with GPS system from my MSc thesis. and have some experience with DSP algorithms in this field, in this topics I'll try to undercover some interesting things from easy to understand point of the view. Posts about ARM and Linux without any comments. Any other significant things will be added as soon as they appear.

The opinion published on this blog are my own, not necessarily those of my employer.

Friday, July 21, 2017

install rpy2 on Mac+R v 3.4.1 + virtenv

It's just pain :/ So small cheat sheet.

1) add to ~/.bash_profile
export R_HOME=/usr/local/Cellar/r/3.4.1/lib/R

2) Copy over (oh yes, facepalm) headers
cp -R /usr/local/Cellar/r/3.4.1/lib/R/include/R* /usr/local/include/

don't forget to delete them after 

Thursday, January 19, 2017

k-means and pca against mnist

Recently I've implemented SVD low-rank approximation for image compression, but then I thought that actually this low-rank approximation shows direction with highest variance... and that means we could estimate how many classes we should pick to train K-Means...

Saturday, January 14, 2017

Octave online

Guys, have you seen Octave online? quite impressive thing, you can store!!! your scripts, it can plot and does symbolic evaluations! Basic Machine Learning, Linear Algebra, Convex optimization, etc courses can be done right without any investment in an expensive software (hello Matlab basic bundle for 5k). w00h00

http://octave-online.net/

Wednesday, January 11, 2017

SVD low rank approximation for pictures (SVD image compression on Python3)

Well, tons of posts were written about it. It wont be "yet another one". But I implemented it anyway, just for fun. I wont explain theoretical part, but will suggest some links about it.

So good docs are:
http://timbaumann.info/svd-image-compression-demo/

Some good docs (thx Berkeley). This book is abandoned now, but it's good to read and store link for future reference.
http://inst.eecs.berkeley.edu/~ee127a/book/login/l_svd_low_rank.html
http://inst.eecs.berkeley.edu/~ee127a/book/login/l_svd_apps_image.html

Just nice presentation about PCA and SVD
http://math.arizona.edu/~brio/VIGRE/ThursdayTalk.pdf

and the source svd-img-compression.py

magic happens in np.dot() we pickup just take approx_rank singular values and discard others, so get some compression.

Result is below, on left side depicted original greyscale picture with rank equals 440 on a right side depicted low rank approximation with rank equals 50


Monday, November 7, 2016

Tensorflow in Gentoo virtualenv

Just tried to install tensorflow in Gentoo virtual env with python 3.4 and failed

Tuesday, September 20, 2016

k-means and MNIST dataset

Just thought few days ago how should look avarage 0 or 1 or 9 or any number. So downloaded MNIST dataset and implemented k-means algorithm (I could calculate average vector in every cluster, but that wont be interesting).

Sunday, August 21, 2016

Back to the Linux or how I debugged silent crash

Just got tired from Mac and decided to move to my old Gentoo Linux. After recompiling world (oh yeah, all from sources) I stuck with SIGSEGV with plot command in Octave (Matlab like math package).

When I tried to plot anything it crashed with SIGSEGV without any obvious reason. So I got to go deeper to fix it. Gentoo supports nice debug options all that one needs is just to enable them
https://wiki.gentoo.org/wiki/Debugging

After that simple
# sudo ulimit -c 99999999
# octave
octave:1> plot(1)

then crash with core in the current folder. Now one need to unwind the stack
# gdb /usr/lib/debug/usr/bin/octave-cli-3.8.2.debug core
(gdb) bt
#0  fl_create_gl_context (g=0x0) at Fl_Gl_Choice.H:102
#1  Fl_Gl_Window::make_current (this=0xc12430) at Fl_Gl_Window.cxx:168
#2  0x00007fc1a5706447 in plot_window::show_canvas (this=0xc11bb0,
    this=0xc11bb0) at dldfcn/__init_fltk__.cc:935
....
#88 0x00007fc1b715a620 in __libc_start_main () from /lib64/libc.so.6
#89 0x0000000000400979 in _start ()

So, I didnt recompile nvidia drivers or my opengl config is bad. I had problems with opengl config, repoint it with eselect opengl and run X11 again.

Problem has solved

Wednesday, July 27, 2016

Two good books about neuro networks

Long time no see :) short post about machine learning. I wanted to go deeper into this field and tried to find some good book, not like a "Machine Learning in 24 hours" but something grad level with acceptable science payload. So I've read ~30% of Simon Haykin "Neural Networks and Learning Machines (3rd Edition)". Book is good, but not enough naive examples to jump in, like 1 neuron with 2 inputs, but science payload there is nice. Gazzillion links to articles and books, so book is useful when you know what to do. Then I found nice complementary book with naive examples. Also it's really cheap on Amazon - about 25$, also it can be downloaded for free from the official site. "Neural Network Design (2nd Edition)" by Hagan, et al. So have fun.

Meanwhile, I started uber small project - neural networks without any special lib. I use only numpy for matrix calculation. Everything slow but primitive and self explanatory. As a data set I'm using MNIST data set, it has 60k training samples and 10k test samples.

Simple implementation of Widrow-Hoff perceptron is here, ~70% success rate after training
https://github.com/venik/simple_neuro_networks/tree/master/src/one_layer_mnist

And MNIST reader is here
https://github.com/venik/simple_neuro_networks/blob/master/lib/mnist/mnist.py

also you probably want to see how does MNIST samples look on a screen
https://github.com/venik/simple_neuro_networks/tree/master/utils/mnist_reader

How to download MNIST is here
https://github.com/venik/simple_neuro_networks/tree/master/data_set/mnist

Thursday, November 21, 2013

Signum JTAG under virtualbox

I'm using Gentoo Linux as the host and Windows (other OSes) as the guest system on my laptop. Some time ago I had to debug ARM device with Signum JTAG but after I installed drivers Windows 7 Device Manager says "This device cannot start. (Code 10)" and no one know how to fix it. I reisntalled it few times, checked old and new drivers but the same. I checked Google but no answer. But I found the solution a little bit later.

Friday, November 1, 2013

Latex and track current version of a document

I wrote a lot of stuff on latex. But any stuff when I have to send it to someone who will revise it every time became pain in the butt, bcoz someone cannot distinguish one version from another. So I made a solution...

Saturday, August 24, 2013

Matlab EPS pictures and embedded fonts

Guys, if you found this article and can't read in rus, use google translate, below pretty easy text, most basically about matlab, EPS and inkscape to resolve problem with embedded fonts in EPS

Время от времени я пишу на latex всякий околонаучный бред. Недавно встала задача подготовить качественный текст.... картинки одного формата и в одном размере, хороший текст, хорошие формулы и т.д. Сделав в Matlab-е темплейт для картинок, шрифтов и размера я думал, что можно расслабиться....

Thursday, June 20, 2013

How to store Quartus project in VCS (on git example)

Recently I returned to write vhdl code again and faced against problem how to share project among other developers. Of course we need to track any changes and have ability to store project settings (like chip version, pin, etc). Quartus creates bunch of binary and log files, so what should we store and that not.

Monday, May 6, 2013

Book: Safe C++: How to avoid common mistakes

Recently I bought this one. So short review from me.

Monday, March 11, 2013

cygwin and tar

It was really hard battle. I have ant script with some ivy deps. deps in tar format and I use full path to untar it.

Thursday, March 7, 2013

android-ndk-profiler tweaks

Recently I need to check our software with profiler. I think everyone knows about gprof and Android as Linux small brother has it too. So android-ndk-profiler really usefull thing, but if one use ndk-build script (standart build scripts from NDK) soon one will see that sources stripped...

Thursday, January 24, 2013

Android JNI tips

So many time I thought - wtf with this function signature. Then I found that I can copy signature from .class file. And it was success.

Tuesday, December 11, 2012

git-svn cheat list 2

Small additional about svn git after this one. Sometimes I have svn repo with huge amount of commits (for now I have svn repo with about 50000 commits), clone it is a REAL pain.


Friday, November 30, 2012

Android native activity with Java classes

For some reason I was need to create native activity and bind Java class into it (btw after I done it I realized that it wont help me).

Tuesday, October 2, 2012

Android runtime linking

Look here. Android can't load all needed libraries that your .so library need. So you need to load by your hands.