December 1, 2013

Why Agile May Ruin Us All — Medium

Why Agile May Ruin Us All — Medium: "I ran into Scrum, and"

'via Blog this'

Bizarre stuff I dislike
- Stand UP meeting facing headquarter building
- Putting pieces of paper into the wall

 Stuff I like
- Music in the office space
- Pair programming with personal friend
- Getting Thing Done



November 26, 2013

Async / await explained in 5 seconds

Hi,


import scala.async.Async.{async, await}


  val fiveSeccond = async {
    val start = new java.util.Date()
    
    await { future { Thread.sleep(5000) } }
    
    val t = new java.util.Date()
    s"> ${start.getSeconds} - ${t.getSeconds}"
  }                                               //> fiveSeccond  :  = scala.concurrent.impl.Promise$DefaultPromise@1cb237
                                                  //| 8
  Await.result(fiveSeccond, 10 second)            //> res1:  = > 16 - 21
 
:)

May 30, 2013

BlackBox office power manager command-line script


Hi,

I asked student to make command line interface to the http://www.black-box.at/en-at/fi/1574/12791/Power-Switch-Cabinet-NG/O2.

Device has ajax over http with digest auth interface.

I works just fine, but ...

Random testing on IP addresses is really horrible idea. Half of our platform was down this morning.



#! /usr/bin/python

import sys, os, re
import getopt
import shlex, subprocess


command = "curl -u \"admin:admin\" --noproxy 192.168.100.1 --digest http://192.168.100.1/user/control.cgi --data-binary CMD="

def output_print(command):
 args = shlex.split(command)        
        output, error = subprocess.Popen(args,stdout = subprocess.PIPE, stderr= subprocess.PIPE).communicate()

 match = re.findall( r'var data=(.*)\;', output, re.MULTILINE)
        status = None
        if match:
  try:
   true = 1
   false = 0 # eval context
                 status = eval(str(match[0]))
  except TypeError:
                        print ("Status eval error")
                        return 1
 [Name, p2, port_state] = status[1]
 print Name
        print "|--------------------------------------------"
        print "|  Port         | State             "
        print "|--------------------------------------------"

 for i in range(4):
  [Name, P0, State,P1,P2,P3] = port_state[i]
  print ">",Name, "          |", State
 return


def main(argv):
        global command
 if len(argv) == 0:
  output_print(command)


 elif len(argv) == 2:
                ports = ['1','2','3','4']
                switch = {'ON':0,'OFF':1}

  if not argv[0] in ports:
                        print argv[0] + " is not port number"
                        return -1

  if not argv[1].upper() in switch.keys():
                        print argv[1] + " switch nok"
                        return -1

                command = command + "0_%d_%s" % (int(argv[0]) -1, str(switch.get(argv[1].upper())))
               
  output_print(command)
 else:
  print "not correct number of arguments, should be two - Port number and new state on/off"


if __name__ == '__main__':
    main(sys.argv[1:])



December 20, 2012

Property based testing for unit testers with PropEr – Part 1 «

Property based testing for unit testers with PropEr – Part 1 «: "Eric states his basic expectations as follows:

I can put arbitrary terms into the dictionary as keys
I can put arbitrary terms into the dictionary as values
When I put a value in the dictionary by a key, I can retrieve that same value
When I put a different value in the dictionary by key it does not change other key value pairs.
When I update a value the new value in available by the new key
When a value does not exist a not found exception is created"

'via Blog this'



%%% @author vlad 
%%% @copyright (C) 2012, vlad
%%% @doc
%%%
%%% @end
%%% Created : 17 Dec 2012 by vlad 

-module(erlware_tests).

-compile(export_all).

-ifdef(TEST).

-include_lib("proper/include/proper.hrl").
-include_lib("eunit/include/eunit.hrl").


%% --------------------------------------------------------------------------------
%% Erlware Dictionary
%% --------------------------------------------------------------------------------

%% I can put arbitrary terms into the dictionary as keys
key() -> nat().
    %union([integer(), atom()]).

%% I can put arbitrary terms into the dictionary as values
value() -> nat(). %union([integer(), atom(), binary(), boolean(), string()]).


sym_dict() ->
    ?SIZED(Size,sym_dict(Size)).

sym_dict(0) ->
    {'$call', ec_dictionary, new, [ec_gb_trees]};
sym_dict(Size) ->
    ?LAZY(frequency([
       {1, {'$call', ec_dictionary, remove, [key(), sym_dict(Size - 1)]}},
       {2, {'$call', ec_dictionary, add, [value(), value(), sym_dict(Size - 1)]}}
      ])).

%% Is it realy work?
%% proper_gen:sample(erlware_tests:value()).
%% proper_gen:sample(erlware_tests:key()).
%% proper_gen:sample(erlware_tests:sym_dict()).
%% {ok,D} = proper_gen:pick(erlware_tests:sym_dict(),10).

%% When I put a value in the dictionary by a key, I can retrieve that same value
prop_get_after_add() ->
    ?FORALL({Dict,K,V}, {sym_dict(), key(), value()},
            V =:= ec_dictionary:get(K, ec_dictionary:add(K, V, Dict))
           ).

%% When I put a different value in the dictionary by key it does not change other key value pairs.
prop_add_twice_get_first() ->
    ?FORALL({Dict,K1,V1,K2,V2}, {sym_dict(), key(), value(), key(), value()},
            ?IMPLIES(K1 /= K2,
                     V1 =:= ec_dictionary:get(K1,
                                              ec_dictionary:add(K2, V2,
                                                                ec_dictionary:add(K1, V1, Dict))) 
                    )).

%% When I update a value the new value in available by the new key
prop_update_the_value() ->
    ?FORALL({Dict,K,V1,V2}, {sym_dict(), key(), value(), value()},
                V2 =:= ec_dictionary:get(K,
                                         ec_dictionary:add(K, V2,
                                                           ec_dictionary:add(K, V1, Dict)))
           ).

%% When a value does not exist a not found exception is created
does_not_exist_exception_test() ->
    ?assertThrow(not_found, ec_dictionary:get(42, ec_dictionary:new(ec_gb_trees))). 


-endif. % (TEST).

July 14, 2012

Flow-based programming - Wikipedia, the free encyclopedia

Flow-based programming - Wikipedia, the free encyclopedia:

'via Blog this'

First impression FBP made on me while playing with Lego edition of LabView. I still prefer CPS actor based style to program robots but I found that most of protocol handling can be nicely decomposed in FBP.



This is Umlet (http://www.umlet.com/) palette which you can copy to ../Umlet/palettes/FBP.uxf and use it for your own design.


  8
  
    com.umlet.element.custom.State
    
      8
      24
      104
      64
    
    READ
--
Read
  Masters

    
  
  
    com.umlet.element.Relation
    
      88
      40
      136
      64
    
    lt=->
m1=OUT
m2=IN[0]

    24;24;56;24;56;48;120;48
  
  
    com.umlet.element.custom.State
    
      208
      72
      104
      56
    
    COLLATE
--
Collate
    
  
  
    com.umlet.element.custom.State
    
      8
      112
      104
      64
    
    READ
--
Read
  Details

    
  
  
    com.umlet.element.Relation
    
      88
      88
      136
      72
    
    lt=->
m1=OUT
m2=IN[1]

    24;56;56;56;56;24;120;24
  
  
    com.umlet.element.custom.State
    
      200
      224
      112
      64
    
    PROC
--
Process
 Merged Streams
    
  
  
    com.umlet.element.Relation
    
      232
      104
      40
      136
    
    lt=->
m1=OUT
m2=IN

    24;24;24;120
  
  
    com.umlet.element.custom.State
    
      8
      192
      104
      64
    
    WRITE
--
Write
  New Masters

    
  
  
    com.umlet.element.custom.State
    
      8
      272
      104
      64
    
    REPORT
--
Summary 
 & Errors

    
  
  
    com.umlet.element.Relation
    
      88
      200
      128
      64
    
    lt=->
m1=OUTM
m2=IN

    112;48;88;48;88;24;24;24
  
  
    com.umlet.element.Relation
    
      88
      240
      128
      72
    
    lt=->
m1=OUTSE
m2=IN

    112;24;88;24;88;56;24;56
  



July 6, 2012

Using xrandr and gtf to add a new mode to your X configuration at runtime | arunviswanathan.com

Using xrandr and gtf to add a new mode to your X configuration at runtime | arunviswanathan.com:

'via Blog this'

In case if xrand reports:


DP3 connected 1920x1080+1680+0 (normal left inverted right x axis y axis) 477mm x 268mm
   1920x1080      60.0 +
   1680x1050      60.0

but monitor can not detect signal it is worst to try subj solution.

In my case HP EliteBook -> DP -> Benq BL2400 could not accept  '1920x1080      60.0' but
was convinced via:



xrandr --output LVDS1 --off
xrandr --newmode "1920x1080_59.90"  172.51  1920 2040 2248 2576  1080 1081 1084 1118  -HSync +Vsync
xrandr --addmode DP3 1920x1080_59.90
xrandr --output DP3 --mode 1920x1080_59.90 --rotate normal --output VGA1 --auto --rotate normal --left-of DP3 --pos 0x0



July 5, 2012

GIT tuning from under firewall

This summary is not available. Please click here to view the post.

February 2, 2012

The Linux Kernel Makefile.in

OpenSS7, one of my favorite projects, succeed to make fully blown LKM compilation.

After some experiments fail miserable...
My KISS style LKM inside Atoconf based on faking Makefile.in




OpenSS7 macro to find kernel

# =========================================================================
# _LINUX_KERNEL
# -------------------------------------------------------------------------
# The linux kernel build directory is the build kernel tree root against which
# kernel modules will be compiled.
# -------------------------------------------------------------------------
AC_DEFUN([_LINUX_KERNEL], [dnl
AC_CACHE_CHECK([for kernel build directory], [linux_cv_kernel_build], [dnl
AC_MSG_RESULT([searching...])
AC_ARG_WITH([kernel-build],
AS_HELP_STRING([--with-kernel-build=DIR],
[specify the base kernel build directory in which configured
kernel source resides.]),
[with_kernel_build="$withval"],
[with_kernel_build=])
if test :"${with_kernel_build:-no}" != :no
then
linux_cv_kernel_build="$with_kernel_build"
fi
if test :"${linux_cv_kernel_build:-no}" = :no -o ! -d "$linux_cv_kernel_build"
then
if test :"${linux_cv_kernel_build:-no}" = :no
then
AC_MSG_ERROR([
***
*** This package does not support headless kernel build. Install the
*** appropriate built kernel-source and kernel-headers package for the
*** target kernel and then configure again.
***
*** The following directories do no exist in the build environment:
*** "$with_kernel_build"
***
*** ])
fi
fi
AC_MSG_CHECKING([for kernel build directory]) ])
kbuilddir="$linux_cv_kernel_build"
AC_SUBST([kbuilddir])dnl
])# LINUX_KERNEL





acinclude.in per module macro

# =============================================================================
# _MODEM_SETUP_MODULES
# -----------------------------------------------------------------------------
AC_DEFUN([_MODEM_SETUP_MODULES], [dnl
AC_ARG_ENABLE([module-lte-sched],
AS_HELP_STRING([--enable-module-lte-sched],
[enable module lte_sched for linkage with MODEM.
@<:@default=module@:>@]),
[enable_module_lte_sched="$enableval"],
[if test :${modem_big_compile:-yes} = :yes ; then enable_module_lte_sched='yes' ; else enable_module_lte_sched='module' ; fi])
AM_CONDITIONAL([CONFIG_MODEM_LTE_SCHED], [test :${modem_cv_module_lte_sched:-module} = :yes])
# -----------------------------------------------------------------------------

AC_CACHE_CHECK([for MODEM module lte_sched], [modem_cv_module_lte_sched], [dnl
modem_cv_module_lte_sched="${enable_module_lte_sched:-module}"
if test :$modem_cv_module_lte_sched = :module -a :${linux_cv_k_linkage:-loadable} = :linkable ; then
modem_cv_module_lte_sched='yes'
fi])
# -----------------------------------------------------------------------------
case ${modem_cv_module_lte_sched:-module} in
(yes)
AC_DEFINE_UNQUOTED([CONFIG_MODEM_LTE_SCHED], [1], [When defined,] AC_PACKAGE_TITLE [
will include the lte_sched module for linkage with MODEM. When undefined,]
AC_PACKAGE_TITLE [will not include the lte_sched module for linkage with MODEM.])
;;
(module)
AC_DEFINE_UNQUOTED([CONFIG_MODEM_LTE_SCHED_MODULE], [1], [When defined,]
AC_PACKAGE_TITLE [will include the lte_sched module as a standalone loadable kernel module. When
undefined,] AC_PACKAGE_TITLE [will not include the lte_sched module as a standalone loadable kernel
module.])
;;
esac
# -----------------------------------------------------------------------------
AM_CONDITIONAL([CONFIG_MODEM_LTE_SCHED], [test :${modem_cv_module_lte_sched:-module} = :yes])
AM_CONDITIONAL([CONFIG_MODEM_LTE_SCHED_MODULE], [test :${modem_cv_module_lte_sched:-module} = :module])
])# _MODEM_SETUP_MODULES






Fake Makefile.in


target_alias = @target_alias@
target_cpu = @target_cpu@
prefix = @prefix@

KERNEL_ROOT=@kbuilddir@
TARGETDIR=$(prefix)/firmware

ifneq ($(KERNELRELEASE),)
ifdef V
KBUILD_VERBOSE = $(V)
endif

EXTRA_CFLAGS += -I$(src)
EXTRA_CFLAGS +=

@CONFIG_LTE_SCHED_MODULE_TRUE@lte_sched.c: lte_sched.h
@CONFIG_LTE_SCHED_MODULE_TRUE@obj-m += lte_sched.o

#sched_csap-y := sched_csap.o

else

all: modules

modules:
echo "Making $@ in `pwd`"
ARCH=$(target_cpu) CROSS_COMPILE="$(target_alias)-" \
$(MAKE) V=1 -C $(KERNEL_ROOT) M=`pwd` modules

clean:
echo "Making $@ in `pwd`"
ARCH=$(target_cpu) CROSS_COMPILE="$(target_alias)-" \
$(MAKE) V=0 -C $(KERNEL_ROOT) M=`pwd` clean

install:
echo "Making $@ in `pwd`"
ARCH=$(target_cpu) CROSS_COMPILE="$(target_alias)-" \
$(MAKE) V=1 -C $(KERNEL_ROOT) M=`pwd` INSTALL_MOD_PATH=$(TARGETDIR) modules_install
endif

January 22, 2012

EmacsWiki: Fly Make for ATS

EmacsWiki: Fly Make:

'via Blog this'


Following is the ATS aka Applied Type System initialization code in Emacs lisp.





; ats
(defun flymake-ats-init ()
(let* ((temp-file (flymake-init-create-temp-buffer-copy
'flymake-create-temp-inplace))
(local-file (file-relative-name
temp-file
(file-name-directory buffer-file-name))))
(list "atscc" (list "-tc " local-file))))

(add-to-list 'flymake-allowed-file-name-masks
'("\\.\\(d\\|s\\)ats\\'" flymake-ats-init))
(push
'("\\(syntax error: \\)?\\([^\n:]*\\): \\[?[0-9]*(line=\\([0-9]*\\), offs=\\([0-9]*\\))\\]?\\(.*\\)?"
2 3 4 5) flymake-err-line-patterns)

January 5, 2012

LOAD K MODULE SYMBOL TABLE INTO DEBUGGER

Hi,


scd /sys/module/chra read write/sections
cat .bss .data .text
0xf8e1e830
0xf8e1e6f4
0xf8e1e000
(gdb) add-symbol-file /home/nkhare/Training/LinuxKernel/oops/char-dev-read-write-oop/char-read-write.ko 0xf8e1e000 -s .data 0xf8e1e6f4 -s .bss 0xf8e1e830
add symbol table from file "/home/nkhare/Training/LinuxKernel/oops/char-dev-read-write-oop/char-read-write.ko" at
.text_addr = 0xf8e1e000
.data_addr = 0xf8e1e6f4
.bss_addr = 0xf8e1e830
(y or n) y
Reading symbols from /home/nkhare/Training/LinuxKernel/oops/char-dev-read-write-oop/char-read-write.ko...done.
(gdb) p mycdrv1_read
\$1 = {ssize_t (struct file *, char *, size_t, loff_t *)} 0xf8e1e000
(gdb) list mycdrv1_read

January 4, 2012

Versatile Platform Baseboards - QEMU

Versatile Platform Baseboards - ARM:

'via Blog this'

Hi,




1. NETWORK
sudo tunctl -u $USER -t tap1
ifconfig tap1 192.168.0.1
sudo /usr/sbin/dhcpd -d -cf ./dhcp.conf tap1

default-lease-time 6000;
max-lease-time 72000;
option domain-name-servers 192.168.0.1;
option routers 192.168.0.1;
server-name "192.168.0.1";
ddns-update-style none;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.254;
}


2. UML
pkill -SIGUSR1 -o linux-2.6.24-rc7
./kernel32-3.1.5 ubda=./Debian-Squeeze-x86-root_fs
eth0=tuntap,tap1,fe:f0:00:00:00:01,192.168.1.254 con0=fd:0,fd:1

3. QEMU
u-boot-2010.09/

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- versatilepb_config
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-

qemu-system-arm -M versatilepb -nographic -kernel u-boot
qemu-system-arm -M versatilepb -nographic -kernel u-boot -s -S

qemu-system-arm -kernel zImage.integrator -initrd arm_root.img -net nic -net tap,ifname=tap0,script=no

4. LINUX

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- versatile_defconfig -s
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage -s


qemu-system-arm -M versatilepb -nographic -kernel u-boot-2010.09/u-boot -net nic -net tap,ifname=tap1,script=no

5. U-BOOT

VersatilePB # sete ipaddr 192.168.0.2
VersatilePB # sete serverip 192.168.0.1
VersatilePB # sete bootfile linux-2.6.37.4.uImage
VersatilePB # tftpboot

$ dd if=/dev/zero of=flash.img bs=1M count=64
$ dd if=u-boot.bin of=flash.img conv=notrunc
$ qemu-system-arm -M versatilepb -nographic -pflash flash.img
VersatilePB # sete ipaddr 192.168.0.2
VersatilePB # sete serverip 192.168.0.1
VersatilePB # sete bootfile linux-2.6.37.4.uImage
VersatilePB # printenv

6. EVM
Linux T4000 2.6.37.4 #3 Fri Dec 23 13:54:46 EET 2011 armv5tejl GNU/Linux
T4000:~#

root=/dev/nfs rw nfsroot=135.243.22.64:/opt/rfs mem=256M earlycon=uart8250,mmio,0xfe090000,115200 console=ttyS0,115200n8 ip=135.243.22.59:::135.243.22.254:255.255.255.254::: hwaddress=eth1,00:02:F7:00:19:19 nol2x0 nopcie noswap

qemu-system-arm -M versatilepb -m 128M -kernel zImage -initrd rootfs -append "root=/dev/nfs rw nfsroot=135.243.22.63:/opt/rfs console=ttyAMA0 console=ttyS0 noswap ip=192.168.0.2::192.168.0.1:255.255.255.0:::" -nographic -net nic -net tap,ifname=tap1,script=no

7. HDA
qemu-system-arm -M versatilepb -cpu cortex-a8 -kernel ./vmlinuz -hda arm-rootfs.img -m 256 -append "root=/dev/sda mem=256M devtmpfs.mount=0 rw"

8. BB
qemu-system-arm -M versatilepb -m 128M -kernel zImage -initrd /udir/vkinzers/repos/openLRT/qemu/rootfs.bb.img -append "root=/dev/ram rdinit=/bin/sh console=ttyAMA0 console=ttyS0 ip=192.168.0.2::192.168.0.255:255.255.255.0:::" -nographic -net nic -net tap,ifname=tap1,script=no

tar xjvf busybox-1.19.3.tar.bz2
722 cd busybox-1.19.3/
723 make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- defconfig
724 make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- menuconfig
725 make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- install
726 ls -R _install/
727 cd _install find . | cpio -o --format=newc > ../rootfs.bb.img

December 11, 2011

dot xsession for laptop with two external monitors

Hi,

Docked laptop configuration with two headed card need to:
- rearrange outputs using xrandr
- start power manager and screensaver
- set secondary kayboard and modify kaymap
- start windows manager

All this can be done from xsession configuration only iff `gdm3' deactivated on startup.



$ cat .xsession

xrandr --output LVDS1 --off
xrandr --output DVI1 --auto --rotate normal --pos 0x0 --output VGA1 --auto --rotate normal --left-of DVI1

#if [ -x /usr/bin/nm-applet ] ; then
#   nm-applet --sm-disable &
#fi

gnome-power-manager > /dev/null &

xrdb $HOME/.Xdefaults
xset -b
xhost +
xset r 130
xset r 103


xsetroot -solid midnightblue
xsetroot -cursor_name left_ptr

xscreensaver -no-splash &

setxkbmap -layout us,ru\(phonetic\) -option "grp:alt_shift_toggle,grp_led:scroll"

xmodmap -e "remove Lock = Caps_Lock"
xmodmap -e "keysym Caps_Lock = Control_L"
xmodmap -e "add Control = Control_L"


gnome-terminal &
#gnome-session
exec xmonad


October 12, 2011

Launch external editor (VIM) from SlickEdit

Launch external editor (VIM) from SlickEdit: "name_info(','VSARG2_EDITORCTL|VSARG2_READ_ONLY|VSARG2_ICON|VSARG2_REQUIRES_MDI_EDITORCTL|VSARG2_MACRO|VSARG2_MARK|VSARG2_REQUIRES_EDITORCTL)
{
external_cmd ( "gvim", "--servername SRC --remote-silent +:" :+ p_line :+ " \"" :+ p_buf_name :+ \" , 0, 0 )
message("Launching " :+ p_buf_name :+ " in VIM...")
}"

'via Blog this'

my edit for emacsclient here

#include "slick.sh"

_command goto_emacs() name_info(','VSARG2_EDITORCTL|VSARG2_READ_ONLY|VSARG2_ICON|VSARG2_REQUIRES_MDI_EDITORCTL|VSARG2_MACRO|VSARG2_MARK|VSARG2_REQUIRES_EDITORCTL)
{
external_cmd ("emacsclient", " -n +" :+ p_line :+ ":" :+ p_col :+ " " :+ p_buf_name , 0, 0 )
message("Launching " :+ p_buf_name :+ " in Emacs...")
}

Enjoy it doing F12; goto_emacs; Edit; CopyPaste; F12 again and finally bind it to shortkeys or use Esc > got_emacs.





June 19, 2011

Graphical notation for Erlang processes

Hi,


Reading Maurice Castro "Towards an Event Modeling Language" ..
I remembered that Umlet has custom components but it was flexible enough to accommodate for Maurice's notation.

I brushed new Palette for Erlang process notation:
- Process definition with StartUp, ProcessLife and Interfaces
- Incarnation with and without link
-Synchronous and Asynchronous message passing 

It doesn't look close to original but feels more modern to me.


  9
  
    com.umlet.element.Class
    
      27
      90
      189
      162
    
    <<gen_server>>
X::erst
{T < 10 min}
--
{M,F,A}
_S=#state{val, another}_
--
/mod:start/0/
/mod:stop/1/
--
Responsibilities
- Coordinator
    
  
  
    com.umlet.element.Relation
    
      18
      234
      170
      63
    
    lt=.>
spawn
    27;45;153;45
  
  
    com.umlet.element.Relation
    
      18
      261
      170
      63
    
    lt=<x.>>>>>
spawn link
m2=1..n

    27;45;153;45
  
  
    com.umlet.element.Relation
    
      18
      306
      170
      63
    
    lt=<-
async msg
    27;45;153;45
  
  
    com.umlet.element.Relation
    
      18
      333
      170
      63
    
    lt=<<-
sync msg
    27;45;153;45
  
  
    com.umlet.element.Note
    
      9
      18
      279
      63
    
    - Process definition with StartUp, 
     ProcessLife and Interfaces
- Incarnation with and without link
- Synchronous and Asynchronous messages
fg=blue
    
  


June 6, 2011

Erlang, Testing and TDD

EUnit Testing gen_fsm – Part 1 | Erlang, Testing and TDD

Nice tutorial. TO support it with 'rebar on console we can use
$ while true; do inotifywait -r -e close_write --exclude ".*_flymake.*" */*.erl; rebar eunit; done

Works on linux.

March 4, 2011

Associative photography

Casual photographer snapshots done like (a) `I spy with my little eye.. ` something; and then putting camera between self ans something and taking a shot. Or (b) pick a subject; put a camera somewhere; imagine stranger come by and look in you camera; adjust; take a shot.

(b) is disassociative. This way impressionists work. You have to walk near their pictures to find that exactly spot where `camera was. (a) is associative method. It is all about creator. If in (b) most work is with light and sometime with color (usually DSLR get it right), going with (a) brings emotions, context and influence of stuff behind focal point to consideration.

It's hard to get `associative right. Nevertheless 8 from 10 images on `flickr taken this way.

March 3, 2011

Continuous Integration Corporate way

Hi,

I can think about differentiation in 9 ways and able to explain it to adult at least in 6 distinkt approaches.
It is because I have degree in physics and master my skills for quite a time.

Curiously, middle management in place where I get my salary, understand continuos integration in software project by reading few books, no hand on experience and not even asking experts (not me).

They did everything wrong in epic way...

Nevertheless I expressed my opinion constructively in requirement document.

This maretial is for internal use only, unless somebody care to know programers view on subject.

Problem with 150 cm fitting 152 size

My daughter is 150 cm height. I brought her trouthers of 152 size.
They did not fit perfectly.
It took her some time to decide how much she have to fold them.
What would your advice?

a) 1 cm
b) 2 cm
c) 4 cm

MurrayHill2011 - Vlad K. - Picasa Web Albums

Hi,


I tripped to NYC in work scope but since there no work happens I enjoyed my time with NYC people.