Two hours ago I've heard on the radio about the 51st Annual Meeting of the Association for Computational Linguistics which is held at the moment in Sofia According to the guest speaker (a professor from Bulgarian Academy of Science) the official program will be over today but the next two days will feature workshops and tutorials.
Definitely not to be missed if you are in Sofia. I'm not unfortunately :(. If you can please visit and share what you saw with me. Thanks!
There are comments.
Just a quick reference of environment variables as seen by the
BGshellPlusFree
terminal app.
APPCPU=
AUTOORIENTS=portrait
BASEFS=/base
BMETRICS_NAME=launcher
BOARDFILE=/base/board.tdf
BOARD_CONFIG=factory_sfi
BOOT_LOADER=RIMBOOT
BOOT_START_TIME=1375381026
CELLULAR_NET_IF_PREFIX=cellular
COVERHEIGHT=396
COVERWIDTH=334
CPU=armle-v7
DECKARD_DEBUG=0
DECKARD_DEBUG_SCRIPT=0
DISK_ALIMIT=65536
FLASHTMP=/tmp
FLASH_FONT_CFG_PATH=/etc/system/config/flash-font.cfg
FONTCONFIG_FILE=/etc/fontconfig/fonts.conf
GRAPHICS_ROOT=/usr/lib/graphics/omap4470
HEIGHT=1280
HMI_REMOTE=FALSE
HMI_VOLUME_SCALE=50
HOME=/accounts/1000/appdata/com.BGmot.BGshellPlusFree.gYABgHVtFpaI1Xhiaw0hMuCbPNk/data
IFS='
'
IFS_BOOT_ENV=yes
KSH_VERSION='@(#)PD KSH v5.2.14 99/07/13.2'
LANG=C
LD_LIBRARY_PATH=/usr/lib/qt4/lib:app/native/lib:/usr/lib/appserv
LIBIMG_CFGFILE=/etc/system/config/img.conf
LOCFILE=/usr/share/locale/locale.file
LOGDIR=/var/log
MAILCHECK=600
MHSDEVICE=tiw_sap0
MIN_VALID_DATE=200905010000.00
MIN_VALID_DATE_SEC=1241136000
MM_INIT=/base/lib/dll/mmedia
NET_PPS_ROOT=/pps/services/networking
OLDPWD=/accounts/1000
OPTIND=1
ORIENTATION=0
OS_VERSION=10.1.0.1720
PATH=app/native:/base/bin:/base/usr/bin:/base/sbin:/base/usr/sbin:/base/usr/photon/bin:/base/scripts:/radio/bin:/radio/usr/bin:/radio/sbin:/radio/usr/sbin:/radio/scripts:/proc/boot:/base/bin:/base/sbin:/base/usr/bin:/base/usr/sbin
PERIMETER=personal
PERIMETER_HOME=/accounts/1000
PERSISTENCE_DATA=/
PHFONT=/dev/phfont
PHKSCOPE=1
PHOTON=/dev/photon
PLATFORM=London
PLATFORM_CLASS=phone
PLATFORM_FAMILY=
PLATFORM_FAMILY_LC=
PLATFORM_LOWERCASE=london
PLATFORM_REV=08
PPID=19493019
PPSDIR=/pps
PS1='$ '
PS2='> '
PS3='#? '
PS4='+ '
PWD=/accounts/1000/appdata/com.BGmot.BGshellPlusFree.gYABgHVtFpaI1Xhiaw0hMuCbPNk/data
QML_IMPORT_PATH=/base/usr/lib/qt4/imports
QT_LIB_PATH=/base/usr/lib/qt4/lib
QT_PLUGIN_PATH=/base/usr/lib/qt4/plugins
QT_QPA_PLATFORM=blackberry
RADIOBOARDFILE=/radio/radio.tdf
RADIOFS=/radio
RADIO_BOARD_CONFIG=m5730
RADIO_NET_IF_LIST=' cellular0 cellular1 cellular2 cellular3 cellular4'
RADIO_VERSION=10.1.0.1721
RAMSIZE=1G
RANDOM=18235
ROOTFS=/
ROTATION=top_up
RTC_CLOCK_OPTS=
RTC_CLOCK_TYPE=
RTC_OPTS=
SANDBOX=/accounts/1000/appdata/com.BGmot.BGshellPlusFree.gYABgHVtFpaI1Xhiaw0hMuCbPNk
SECONDS=2167
SHELL
STDIO_DEFAULT_BUFSIZE=8192
SYSNAME=nto
TEMP=/accounts/1000/appdata/com.BGmot.BGshellPlusFree.gYABgHVtFpaI1Xhiaw0hMuCbPNk/tmp
TERM=ansi
TMOUT=0
TMP=/accounts/1000/appdata/com.BGmot.BGshellPlusFree.gYABgHVtFpaI1Xhiaw0hMuCbPNk/tmp
TMPDIR=/accounts/1000/appdata/com.BGmot.BGshellPlusFree.gYABgHVtFpaI1Xhiaw0hMuCbPNk/tmp
WIDTH=768
WIFIDEVICE=tiw_sta0
WLANCHP=ti1283
WLANDEV=london
WLANDRV=mcp33
WLANSUPPVER=08
_=set
uname_m=OMAP4470_ES1.0_HS_London_Rev:08
There are comments.
BlackBerry 10 OS application security model is enforced by two major components: app permissions and filesystem access privileges.
Also it looks like that each app is assigned a separate group id. Below is a listing
of my currently installed apps as seen from devuser
. An application can't execute
another apps (e.g. exec) as far as I can see. Not possible with the shell app either.
I think I will have to bundle all command line tools together with a shell into a single app so the shell is able to invoke any of the commands that are not system standard. I'm not liking this very much!
$HOME is inside the app space too :(. See my other post about environment variables.
$ pwd
/accounts/1000
$ ls -l appdata/ appserv/
appdata/:
total 552
drwxr-x--- 6 apps 10143 4096 Jul 25 16:22 com.BGmot.BGshellPlusFree.gYABgHVtFpaI1Xhiaw0hMuCbPNk
drwxr-x--- 6 apps 10141 4096 Jul 20 21:34 com.catikkas.jenkins10.gYABgOZDFJiaJUObnHnYGyedaJE
drwxr-x--- 6 apps 10134 4096 Jul 17 09:02 com.example.Chat_1.gYABgLTE22iUbVEQqMQWh1h8qGw
drwxr-x--- 6 apps 10003 4096 Jul 13 01:56 com.foursquare.blackberry.gYABgBY3zYaCRi7CDRw5ChZRJ18
drwxr-x--- 6 apps 10004 4096 Jul 12 22:26 com.linkedin.gYABgPilB6lwL6lsxmVwDOfmbO8
drwxr-x--- 6 apps 10145 4096 Jul 27 22:05 com.mappau.SystemInformation.gYABgPYOA670hrzAeZ.Eg91JZFU
drwxr-x--- 6 apps 100051000 4096 Jul 12 23:04 com.rim.bb.app.adobeReader.gYABgAxBqJsMx5M..e.RfW5WpTU
drwxr-x--- 6 apps 10006 4096 Jul 13 00:06 com.rim.bb.app.facebook.gYABgDLo0nc9AhDgv2JAPixdyvQ
drwxr-x--- 6 apps 10123 4096 Jul 23 13:32 com.rim.bb.app.newsstand.gYABgIYcPYRGuuoXUB7e7VfgiaA
drwxr-x--- 6 apps 10116 4096 Jul 13 01:16 com.savvysaurus.RssSavvy.gYABgCcU_QDmZyIEIHfBoxukmi4
drwxr-x--- 6 apps 100021000 4096 Jul 12 22:39 com.tcs.maps.gYABgCxm2rf5o5xfFP8dPCQnlJY
drwxr-x--- 6 apps 10009 4096 Jul 12 22:18 com.twitter.gYABgMxtkHoH6S4G1_Ff5yu0E.I
drwxr-x--- 6 apps 10138 4096 Jul 18 21:27 helex.NativeFlash.gYABgHc51xjJK7eHzYQIH2y6hxA
drwxr-x--- 6 apps air_services 4096 Jul 12 21:57 sys.airservices
drwxr-x--- 6 apps 100131000 4096 Jul 13 02:24 sys.airtunes.gYABgCWWhIycHhiFjXeIyW1Qvpo
drwxr-x--- 6 apps 10014 4096 Jul 12 23:26 sys.android.gYABgKAOw1czN6neiAT72SGO.ns
drwxr-x--- 6 apps 10015 4096 Jul 12 23:26 sys.android.shell.gYABgCWpLq.7ipa6NFYT0JaLpt8
drwxr-x--- 6 apps 10016 4096 Jul 12 21:58 sys.appworld.gYABgNSvaLtte_snIx7wjRsOcyM
drwxr-x--- 6 apps 10017 4096 Jul 12 21:58 sys.bbm.gYABgLOJBR2Vz7FzS.kdgJchuag
drwxr-x--- 6 apps 100001000 4096 Jul 12 22:24 sys.browser.gYABgJYFHAzbeFMPCCpYWBtHAm0
drwxr-x--- 6 apps 10032 4096 Jul 12 23:00 sys.calculator.gYABgJidBvuZ89m_1j4PV2712.A
drwxr-x--- 6 apps 10034 4096 Jul 12 23:14 sys.camera.gYABgAvGHb4h9H5WeWdjQhXgeRM
drwxr-x--- 6 apps 10124 4096 Jul 17 10:45 sys.cfs.box.gYABgJKe3gZus2hhkRPM4zcarBU
drwxr-x--- 6 apps 10125 4096 Jul 17 10:45 sys.cfs.dropbox.gYABgKi0Cs_hMocaoCB7UgqkaIU
drwxr-x--- 6 apps 10126 4096 Jul 15 14:25 sys.cfs.webdav.todtm.gYABgGnToZvN4bqMB3xslfel.KU
drwxr-x--- 6 apps 10037 4096 Jul 14 22:21 sys.chat.gYABgADt.JeweQYFvYX28P5bwu0
drwxr-x--- 6 apps 10038 4096 Jul 12 23:07 sys.clock.gYABgKNXug.mDFoFoYHLmJofAts
drwxr-x--- 6 apps 10039 4096 Jul 12 22:53 sys.compass.gYABgM06vW4QuahSmSW7eBlHxb4
drwxr-x--- 6 apps 100101000 4096 Jul 12 22:59 sys.dxtg.launcher.gYABgHFqGG632tetjwVL_egrHHc
drwxr-x--- 6 apps 100121000 4096 Jul 12 22:59 sys.dxtg.sstg.gYABgLhf.C6ER6tWA.ObKMKalQU
drwxr-x--- 6 apps 100111000 4096 Aug 01 22:55 sys.dxtg.stg.gYABgKF.gjTVTclxOrZ0RRQcoTc
drwxr-x--- 6 apps 100871000 4096 Jul 15 00:40 sys.dxtg.wtg.gYABgKH0JhT7tasXrfXUyNxNaew
drwxr-x--- 6 apps 100431000 4096 Jul 14 23:30 sys.filepicker.gYABgBUOB4WQ4V0f7gH0kMCrcVA
drwxr-x--- 6 apps 10001 4096 Jul 12 21:58 sys.firstlaunch.gYABgE1L_lY.sjW85E1SCBQsrco
drwxr-x--- 6 apps 10044 4096 Jul 12 22:53 sys.games.gYABgCM5htxnRwx8VmvFMD0Hbj4
drwxr-x--- 6 apps 100451000 4096 Jul 12 23:05 sys.help.gYABgPG.Su8AzxaqqONbaanIprc
drwxr-x--- 6 apps keyboard 4096 Jul 12 21:57 sys.keyboard
drwxr-x--- 6 apps 100471000 4096 Jul 27 21:36 sys.mediaplayer.gYABgHtLSIC4bjdb005eaW5ixzU
drwxr-x--- 6 apps 10049 4096 Jul 12 23:00 sys.mmagic.gYABgGN_jnGTnVoC_K.mfaBq87g
drwxr-x--- 6 apps nto 4096 Jul 12 21:57 sys.navigator
drwxr-x--- 6 apps 100511000 4096 Jul 12 22:24 sys.notification_card.gYABgLyFNMkTny6ihJLjaG02jUU
drwxr-x--- 6 apps 10052 4096 Jul 17 10:38 sys.paymentsystem.gYABgPLIJa_bijh7gGqV5LuyCK4
drwxr-x--- 6 apps 100531000 4096 Jul 12 23:03 sys.perimeterbrowser.gYABgMgpl40MVrFkZvPEXRuQTGE
drwxr-x--- 6 apps 10054 4096 Jul 12 22:01 sys.phone.gYABgB3m3BHdGLR4aicCyzCVsYQ
drwxr-x--- 6 apps 10055 4096 Jul 15 00:42 sys.phone_settings.gYABgP8tnMCm3UDXaovgTHoEZB4
drwxr-x--- 6 apps 100561000 4096 Jul 15 21:08 sys.pictureeditor.gYABgIRm37_owYKt4P0uCEhSj.o
drwxr-x--- 6 apps 100571000 4096 Jul 12 22:01 sys.pictures.gYABgFZ.pCiYHqciL1zClEPjmps
drwxr-x--- 6 apps 100581000 4096 Jul 15 16:29 sys.picturesviewer.gYABgFKlvDBH.tdV7sGqIDZHnNY
drwxr-x--- 6 apps 10033 4096 Jul 12 22:10 sys.pim.calendar.gYABgG0xvpxP1jARa6DD5o.VL8A
drwxr-x--- 6 apps 10059 4096 Jul 16 09:15 sys.pim.calendar.viewer.eventcreate.gYABgBtmuosCGVI3YO1ImfFgbgY
drwxr-x--- 6 apps 100601000 4096 Jul 12 22:26 sys.pim.calendar.viewer.ics.gYABgMsLIpp41sIscDzLSeRZuIQ
drwxr-x--- 6 apps 10040 4096 Jul 12 22:14 sys.pim.contacts.gYABgGsAOuzqCT1fu5Zx4sqrJdY
drwxr-x--- 6 apps 100621000 4096 Jul 12 22:23 sys.pim.email.card.gYABgHLnJMGjgoIAsdeYM2JzUsU
drwxr-x--- 6 apps 10063 4096 Jul 13 01:49 sys.pim.email.composer.card.gYABgGkBKIp75QI99dsGTdrb5IE
drwxr-x--- 6 apps 10064 4096 Jul 12 21:58 sys.pim.messages.gYABgJ8jn83Ok_NEWYplPYozt5w
drwxr-x--- 6 apps 10065 4096 Jul 12 23:00 sys.pim.remember.gYABgF9PcqaN7GRKPlDPuqOyda0
drwxr-x--- 6 apps 100671000 4096 Jul 12 23:03 sys.printoutstogo.gYABgPMP3nxNZlNieZUDetUiQio
drwxr-x--- 6 apps 10068 4096 Jul 13 13:26 sys.search.gYABgPp5WMkB_07CE6wzbflslRQ
drwxr-x--- 6 apps 10069 4096 Jul 12 22:02 sys.settings.gYABgFXZghhSmuJ6oBTACT1DwpQ
drwxr-x--- 6 apps 10070 4096 Jul 12 22:01 sys.setupbuffet.gYABgCbSxd9WrFvFV8sJDoI7tlE
drwxr-x--- 6 apps 10071 4096 Jul 16 09:18 sys.simtoolkit_ui_app.gYABgNsM_6zxbmp668bBbRexQiA
drwxr-x--- 6 apps 10072 4096 Jul 12 23:05 sys.smarttags.gYABgNvWPl0Fpbeva2LkhFplXYY
drwxr-x--- 6 apps 10073 4096 Jul 12 22:04 sys.socialconnect.facebook.gYABgPNVFtmlTnTGF_U0dFfTvgQ
drwxr-x--- 6 apps 10074 4096 Jul 12 22:26 sys.socialconnect.linkedin.gYABgCUcHQzQnN9ZnpyVppfXHEQ
drwxr-x--- 6 apps 10075 4096 Jul 12 22:18 sys.socialconnect.twitter.gYABgB2cPvkIcyPxzQPSK9Jx89U
drwxr-x--- 6 apps 10079 4096 Jul 23 13:27 sys.vad.gYABgJPtEgEJTVKTkyq7_BalYto
drwxr-x--- 6 apps 100811000 4096 Jul 12 22:37 sys.videoplayer.gYABgEydozZr9q.ClZkrItC9LMM
drwxr-x--- 6 apps 10085 4096 Jul 12 22:47 sys.weather.gYABgKOf0EhVEWtCxrbBQ00sPSg
drwxr-x--- 6 apps 10086 4096 Jul 12 21:58 sys.zbbiocm.gYABgDZcy0Sq5cvKqkoZgR3qJps
appserv/:
total 0
dr-xr-xr-x 2 root nto 0 Aug 04 00:03 sys.cfs.box.gYABgJKe3gZus2hhkRPM4zcarBU
dr-xr-xr-x 2 root nto 0 Aug 04 00:03 sys.cfs.dropbox.gYABgKi0Cs_hMocaoCB7UgqkaIU
dr-xr-xr-x 2 root nto 0 Aug 04 00:03 sys.cfs.webdav.todtm.gYABgGnToZvN4bqMB3xslfel.KU
There are comments.
Smartphone hardware requirements updated with USB host mode requirement.
There are comments.
A summer hackathon will be held in Sofia between 16th and 22nd of August. The week prior to the event (12th to 15th) will be full of lectures and workshops to prepare the students for their task.
The goal this time is to create a new system for the Student Council organization which will host their new website and also provide more transparency into the organization and the work they do. The idea is initiated by the chairman of the council which is quite surprising for me to hear. You can read his motivation (in Bulgarian) here.
At the moment it is agreed that the system will be written in Python and Django and this is where I join. Together with Kiril Vladimirov I will be leading the Python/Django lecture and workshop in one of the days, likely 14th of August.
The program is not yet finalized so I can't share more info. Please watch this space for more details when they are available.
There are comments.
As some of you may know or have heard I'm in the process of ditching my Lenovo X220 in favor of a smartphone. The ultimate goal is to not need a personal computer at all and use only one device for all my processing needs. Everything else can be conveniently migrated to the cloud. The current favorite device is BlackBerry Z10 but that may change as I explore the smartphone world and my requirements.
This is my list of requirements, mainly for my own reference but you are welcome to comment and give me suggestions how to migrate.
+-----------------------+--------------------+-------------------+-------------------+
| Requirement | Lenovo X220 | BlackBerry Z10 | Notes |
+-----------------------+--------------------+-------------------+-------------------+
| Network Connectivity | RJ-45, Wi-Fi, | Wi-Fi, 3G | |
| | 3G (optional) | | |
| | or USB modem | | |
+-----------------------+--------------------+-------------------+-------------------+
| Battery Life | 8 hrs idle, 9 cell | 13 days standby | TBC |
| | 5-6 hrs networking | 10 hrs talk (3G) | |
+-----------------------+--------------------+-------------------+-------------------+
| Display Size | 1366x768, 96 DPI | 1280x768, 356 PPI | |
+-----------------------+--------------------+-------------------+-------------------+
| Sunlight Readable | Very hard even at | Yes, even at | TBC |
| | full brightness | medium brightness | |
+-----------------------+--------------------+-------------------+-------------------+
| Weight | around 1,5 kg | 136g | |
+-----------------------+--------------------+-------------------+-------------------+
| Docking Capability | Integrated or USB | unknown, N/A | for desk usage |
+-----------------------+--------------------+-------------------+-------------------+
| External video/audio | VGA, 3,5mm jack | Micro HDMI, 3,5mm | presentation mode |
+-----------------------+--------------------+-------------------+-------------------+
| External Connectivity | USB 2.0 and 3.0, | micro USB 2.0, | |
| | Bluetooth | Bluetooth, NFC | |
+-----------------------+--------------------+-------------------+-------------------+
| Storage | 320GB, ~ 50G used | 16GB internal | TODO: speed test |
| | | 32GB microSD | |
+-----------------------+--------------------+-------------------+-------------------+
| RAM | 8GB | 2GB | TBC |
| | | 1GB on Dev device | |
+-----------------------+--------------------+-------------------+-------------------+
| CPU virtualization | Yes, full virt | No | loading other OS |
| | | | ** critical |
+-----------------------+--------------------+-------------------+-------------------+
| UPDATE 2013-08-03 | Yes | No, |** essential |
| USB host mode | | ETA 10.2 Aug 2013 | |
+-----------------------+--------------------+-------------------+-------------------+
Notes:
I need a test for the battery life of a smartphone in use and while traveling and connected to the Internet. Data shown is as given by manufacturer. Talking from experience the 10 hrs talk time are roughly equivalent to 10 hrs of Internet and apps usage. I have to charge my Z10 almost every day and I still don't use it that actively.
The displays of all recent smartphones are far better than notebooks. I can read my phone outside but haven't actually tried a direct sunlight exposure. Will do this and update with more info.
Speed storage may be an issue, although I don't use storage intensive applications. Will test this and report with more info.
RAM is a BIG issue. Currently my desktop utilizes around 4GB but on x86_64 objects are bigger (Python objects are 4x compared to i386). I've previously used an old Lenovo T60 with only 2GB of RAM and i386 environment. Didn't have any issues.
On Z10 the memory is not utilized in the best fashion. Something is eating away
RAM and I'm left with around 150MB of free memory after some phone use. For one
/tmp
is mounted directly into RAM and some apps are misbehaving. I've seen a low
cost Android tablets and phones running with 512MB of RAM. Need to investigate more.
Virtualization and most importantly USB pass-through is a critical issue. I have a proprietary smart-card electronic signature device which needs to continue working. I have no problems running a cloud instance but haven't figured out how to do USB pass-through between local hardware and cloud instance.
UPDATE 2013-08-03: USB host mode is essential for some docking hardware. This means that the phone will be able to connect to external USB devices such as USB drives or cameras. For more info read here and here.
Here things get hairy as I use quite a lot of software.
+----------------------+---------------------+------------------------------------------------+
| Linux Software | BlackBerry 10 OS | Notes |
+----------------------+---------------------+------------------------------------------------+
| UPDATE 2013-08-02 | Built-in | I need to check if BB encryption meets my |
| LUKS/disk encryption | | enterprise requirements. |
+----------------------+---------------------+------------------------------------------------+
| Bash shell | v5.2.14 99/07/13.2 | I have no idea how compatible PD KSH is. |
| | | For serious scripting I will need Bash anyway. |
+----------------------+---------------------+------------------------------------------------+
| GNU Coreutils | | Some tools are present but not all. |
| | | No idea if GNU or other implementation (BSD) |
+----------------------+---------------------+------------------------------------------------+
| OpenSSH | | There are some apps available, need to test UX |
+----------------------+---------------------+------------------------------------------------+
| Serial console | | I use several on Linux, mostly |
| access tools | | `conserver-client`. |
+----------------------+---------------------+------------------------------------------------+
| Kerberos tools | | Internal apps I use authenticate with Kerberos |
+----------------------+---------------------+------------------------------------------------+
| Cisco VPN | Built-in | Several GW types supported. Not tested. |
+----------------------+---------------------+------------------------------------------------+
| OpenVPN client | N/A AFAIK | |
+----------------------+---------------------+------------------------------------------------+
| Python 2.6 | Python 2.7 and 3.2 | `devuser` has no permissions to run Python 2.7 |
+----------------------+---------------------+------------------------------------------------+
| Ruby | | Mostly for cloud related mgmt commands. |
+----------------------+---------------------+------------------------------------------------+
| Firefox | built-in Browser | Missing plugins functionality. |
+----------------------+---------------------+------------------------------------------------+
| Thunderbird | BlackBerry Hub | Messaging experience on BB is quite cool but |
| email & RSS | RSS Savvy | missing multiple sender addresses and RSS does |
| | | not integrate into BB Hub |
+----------------------+---------------------+------------------------------------------------+
| Social Networks | Stand alone apps | Integrate well with BlackBerry Hub. |
+----------------------+---------------------+------------------------------------------------+
| Rhythmbox | built-in player | Not tested but I need to bookmark online radio |
| Totem (audio) | | stations. |
+----------------------+---------------------+------------------------------------------------+
| Totem (video) | built-in player | Works fine, already watched MPEG v4 videos. |
+----------------------+---------------------+------------------------------------------------+
| Transmission | N/A | No bittorrent client apps available but |
| | | BB fork for Transmission exists on GitHub. |
+----------------------+---------------------+------------------------------------------------+
| Evince (PDF) | Adobe Reader | Not tested yet. |
+----------------------+---------------------+------------------------------------------------+
| - | Kindle | eBook reader, Android version. Works fine. |
+----------------------+---------------------+------------------------------------------------+
| Libre Office | Docs To Go | MS office compatible, displays presentations, |
| | | limited editing, mostly read-only mode. |
+----------------------+---------------------+------------------------------------------------+
| Text Editor | Several | None tested yet. |
+----------------------+---------------------+------------------------------------------------+
| Purple | Yaairc | I need IRC and XMPP (Gtalk) mostly. Dodo seems |
| | Dodo | to have some issues, I can't receive messages. |
+----------------------+---------------------+------------------------------------------------+
| Twinkle (SIP) | | Several available but not tested. |
+----------------------+---------------------+------------------------------------------------+
| GIMP | | Image cropping and resizing mostly. |
+----------------------+---------------------+------------------------------------------------+
| Inkscape | | Simple drawings and graphics. |
+----------------------+---------------------+------------------------------------------------+
| CUPS (printing) | | Should be able to print stuff. |
+----------------------+---------------------+------------------------------------------------+
| xSane (scanner) | | Documents scanning, can do pictures too. |
+----------------------+---------------------+------------------------------------------------+
I will describe my software use cases in details in a later update. Most important of all is a nice text editor to write code and text (mainly this blog) and the shell tools.
To make things easier I will first transition entertainment and personal activities and later work related ones.
In the next few days I will start by exploring all the hardware requirements first and update this blog with some of the findings. Along with this I will share the personal activities progress.
There are comments.
Yesterday I've mentioned a start-up project called obuvki41plus.com and that it accepts phone orders instead of online electronic orders like everyone else. I will tell you why.
Image CC-BY Southern Foodways Alliance
obuvki41plus.com is a re-seller business my spouse runs. It specializes in large size, elegant ladies shoes - Europe size 41 plus, which are hard to find in Bulgaria. There is a shopping cart component on the website which at the end redirects to a simple page with instructions how to order via phone. Why not online orders like everyone else? Several reasons!
The business target group is very limited - women who wear large shoe size and like the proposed shoe style and can afford the higher price (quality shoes only, sorry). On top of that the business model is online only. The rule of thumb is to make everything possible to lower barrier to entry for customers! Also don't make our lives harder in doing so.
Phone ordering is the easiest way for customers in Bulgaria. I myself often prefer it because of the too many steps and too many fields to fill-in when ordering online. The reality is that most local websites are horribly made with respect to user experience and many users are not that fluent with Internet as it may seem. No need to get people frustrated if they are about to spend their money with you!
Phone ordering, especially in the early business stage lets you know your customers. This is invaluable feedback for you as the owner and you can't get that from an online ordering system. It just doesn't work, I've tried!
A phone ordering system is just so easy to implement. Later that can be scaled with some automated IVR system and a call center; Or just migrate it to online ordering system;
The website in question is supposed to be no-maintenance as much as possible. It is static HTML and no database at all. Introducing online ordering is just too much of a technological overhead in this case;
Last but probably most important is customer care - not only we want to make it easy for them to order but want to prevent frequent returns caused by wrong product expectations or incorrect size. After all shoes need to be tried first.
So to summarize - the orders are taken in person via phone including objection handling and questions answering. An order may consist of up to 3 pairs of shoes which are shipped to the customer with the option to try them out upon delivery! Buy all or just a pair - it's a customer call! Small return fee is imposed to prevent abuse!
For that kind of business this seems to be the best solution so far. I'd love to hear other owners experience and decision logic. Please use the comments to tell us how you've organized the sales/ordering/delivery process in your company and why so. Thanks!
There are comments.
This is a simple story about a website I helped create without using any programming at all. It took me two days because of the images and the logo design which I've commissioned to a friend.
The website is obuvki41plus.com which is a re-seller business my spouse runs. It specializes in large size, elegant ladies shoes - Europe size 41 plus (hard to find in Bulgaria), hence the name.
I could have used some JavaScript templating engine like Handlebars but at the time I didn't know about it and I prefer not to write JavaScript if possible :).
I did some coding after the initial release eventually. I've transformed the website to a Django based site which is exported as static HTML.
This helps me with faster deployment/management as everything is stored in git, allows templates inheritance and also makes the site ready to add more functionality if required.
There are comments.
A simple bug with the Facebook like and share widget. Looks familiar? Indeed it is! SofiaValley had the same bug 2 months ago.
Already reported and hopefully they fix it.
There are comments.
Imagga is a cloud platform that helps businesses and individuals organize their images in a fast and cost-effective way. They develop a range of advanced proprietary image recognition and image processing technologies, which are built into several services such as smart image cropping, color extraction and multi-color search, visual similarity search and auto-tagging.
During Balkan Venture Forum in Sofia I sat down with Georgi Kadrev to talk about technology. Surprisingly this hi-tech service is built on top of standard low-tech components and lots of hard work.
Core functionality is developed in C and C++ with the OpenCV library. Imagga relies heavily on own image processing algorithms for their core features. These were built as a combination of their own research activities and publications from other researchers.
Image processing is executed by worker nodes configured with their own software stack. Nodes are distributed among Amazon EC2 and other data centers.
Client libraries to access Imagga API are available in PHP, Ruby and Java.
Imagga has built several websites to showcase their technology. Cropp.me, ColorsLike.me, StockPodium and AutoTag.me were built with PHP, JavaScript and jQuery above a standard LAMP stack.
Recently Imagga also started using GPU computing with nVidia Tesla cards. They use C++ and Python bindings for CUDA.
As an initially bootstrapping start-up we chose something that is basically free, reliable and popular - that's why started with the LAMP stack. It proved to be stable and convenient for our web needs and we preserved it. The use of C++ is a natural choice for computational intensive tasks that we need to perform for the purpose of our core expertise - image processing. Though we initially wrote the whole core technology code from scratch, we later switched to OpenCV for some of the building blocks as it is very well optimized and continuously extended image processing library.
With the raise of affordable high-performance GPU processors and their availability in server instances, we decided it's time to take advantage of this highly parallel architecture, perfectly suitable for image processing tasks.
Georgi Kadrev
If you’d like to hear more from Imagga please comment below. I will ask them to follow this thread and reply to your questions.
There are comments.
RETiDoc automates personal ID data entry, speeding up customer service and eliminating costly errors. The product is based on OCR algorithms and could be used on hardware devices scanning the ID card or through a compact scanner box specially designed for the need. The main problem tackled by RETiDoc is manual data entry at service providers, which is a time consuming, low-customer satisfaction process, filled with expensive typos and low productivity at provider’s front offices.
Co-founder Martin Kulov takes us behind the scenes.
RETiDoc is the second start-up featured on this blog to rely heavily on Microsoft technologies. Software development is done in C# using Visual Studio and Team Foundation Service.
Microsoft Test Manager is used to organize the test process!
Unfortunately this section is missing. The original format of this blog is for the start-up founders or head of IT to tell the readers what factors led to selection of the named technologies. RETiDoc team is busy at the moment, working on their product launch and don't have the time to fill-in the details.
Hopefully they will do so in the future.
If you’d like to hear more from RETiDoc please comment below.
There are comments.
I've been exploring text-to-speech synthesizers for Bulgarian in the past few weeks. I found only three. Here is my review and opinion about two competitive companies, one of which lost me as a client.
eSpeak is a compact open source software speech synthesizer for English and other languages, for Linux and Windows.
I'm using espeak-1.47.11-1, from Fedora - the src.rpm rebuilt on Red Hat Enterprise Linux 6. Earlier versions do not support Bulgarian.
There is only one available voice for Bulgarian, which seems to have reasonably good pronunciation. There are some errors though, it's not perfect. The voice however is horrible. It's the worst computer generated voice of all solutions I've found so far.
Good for initial testing since it requires virtually no setup and can be used from the command line.
SpeechLab is developed by the Bulgarian Association for Computational Linguistics. There's a sample of only one voice but I was told others can be added as well. Not sure about that.
Listening to the sample I think this is the most correct synthesizer of all. The voice still sounds computerized but better compared to eSpeak. The same voice is used by local TV channels when showing news related to Anonymous and one could probably say it will be accepted by the general public if used into a software product.
BACL has transferred the sales rights to a company called Aquasyst-Eco which claims to have a desktop and a server product. The server version is supposed to work on Linux too. There is also a version for Android.
Initially I thought to use SpeechLab but BACL and the trading vendor didn't make it easy on me. There's virtually no documentation, all links to samples from the official product pages are broken, they didn't reply to any of my emails nor phone calls.
As much as I prefer working/using locally developed products (not only software) I will never use SpeechLab because its creators don't give a fuck about customers. Why should I give a fuck about the product then?
Innoetics is a Greek company, a spin-off of the Institute of Language & Speech Processing (ILSP) of ‘Athena’ Research Centre. Something like BACL I suppose but a bit more commercially oriented.
Initially I though to use their TTS Batch product to produce audio samples and asked for a demo. They were very quick in their response and gave me an FTP download of the software, plus demo activation key and documentation. Via email they've sent me tons of info plus pricing and additional proposals. I didn't even try this demo because it runs on Windows which I don't have.
It turned out Innoetics has built the SpeakVolumes web service which has two modes of operation - on-the-fly audio generation using a SOAP based API and offline generation via the web site. Pricing for SpeakVolumes (per words) was much more competitive than their Windows products for my use case.
I've created an account at SpeakVolumes and they've bumped up my initial words credit so I can give it a try. Works like a charm.
There is only one voice for Bulgarian called Irina (sample). The voice is very soft, female voice, speaks slower compared to eSpeak and SpeechLab and sounds very natural. It makes a few mistakes but from a 250 words sample that I used only a couple were pronounced with minor mistakes.
The web service generates a Base64 encoded MP3 file and returns it as response to the client. See example Python script here.
The fact that Innoetics involved with me very quickly and provided me with demo accounts and all sorts of information about their products and the web API makes SpeakVolumes my choice for Text-To-Speech conversion for Bulgarian.
Andre Polykanine from the eSpeak mailing list told me about Ivona. It is a Polish company and seems to have been acquired by Amazon now. Andre told me Ivona had planned Bulgarian support some time ago, but now rejected it for some reason. They didn't reply to my email though.
Have you seen other text-to-speech synthesizers for Bulgarian? Let me know what are they and if you have tried them out.
There are comments.
You can SSH into a BlackBerry Z10 device even on Linux. I'm using Red Hat Enterprise Linux 6 and here is how to establish the connection.
1) Enable USB networking between your Linux desktop and the Z10;
2) Install the Momentics IDE. You need it to create debug tokens and to start the SSH daemon on the device;
3) Obtain signing keys and create a debug token by following the wizard in the IDE. I just started a new project and followed the instructions;
4) Install debug token on device using the IDE. From Window -> Preferences
select
Blackberry -> Signing
. Just create and deploy the debug token on the device. Mine was
automatically discovered so I just had to follow the prompts;
5) Reboot and re-enable development mode (I'm not sure if this was necessary);
6) Generate a 4096 bit key for SSH. Smaller keys won't work. You can use your current key if it is 4096 bit;
$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/atodorov/.ssh/id_rsa): /home/atodorov/.rim/testKey_4096_rsa
/home/atodorov/.rim/testKey_4096_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/atodorov/.rim/testKey_4096_rsa.
Your public key has been saved in /home/atodorov/.rim/testKey_4096_rsa.pub.
The key fingerprint is:
77:73:55:03:e1:fc:5b:df:a6:e9:2c:b4:d4:1e:0c:b2 atodorov@redbull.mini
The key's randomart image is:
+--[ RSA 4096]----+
| oo..|
| o o|
| o .|
| . . .. |
| S .oo+...|
| .E.oo+ =|
| o o o+|
| o..+ |
| o= |
+-----------------+
7) Update key permissions, since ssh complains:
$ chmod 600 ~/.rim/testKey_4096_rsa.pub
8) By default SSH is not listening on your BlackBerry. Use the blackberry-connect
command to start the SSH daemon on the device. It will upload your public SSH key
to the device and start the SSH daemon on the other side. password
is your device
password;
$ pwd
/home/atodorov/bbndk/host_10_1_0_231/linux/x86/usr/bin
$ ./blackberry-connect 169.254.0.1 -password 123456 -sshPublicKey ~/.rim/testKey_4096_rsa.pub
Info: Connecting to target 169.254.0.1:4455
Info: Authenticating with target 169.254.0.1:4455
Info: Encryption parameters verified
Info: Authenticating with target credentials.
Info: Successfully authenticated with target credentials.
Info: Sending ssh key to target 169.254.0.1:4455
Info: ssh key successfully transferred.
Info: Successfully connected. This application must remain running in order to use debug tools. Exiting the application will terminate this connection.
9) Check if SSH is running on the device
$ nmap 169.254.0.1
Starting Nmap 5.51 ( http://nmap.org ) at 2013-07-18 10:19 EEST
Stats: 0:00:01 elapsed; 0 hosts completed (1 up), 1 undergoing Connect Scan
Connect Scan Timing: About 14.30% done; ETC: 10:20 (0:00:06 remaining)
Nmap scan report for 169.254.0.1
Host is up (0.00097s latency).
Not shown: 991 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
139/tcp open netbios-ssn
443/tcp open https
445/tcp open microsoft-ds
1111/tcp open lmsocialserver
5555/tcp open freeciv
8000/tcp open http-alt
8443/tcp open https-alt
Nmap done: 1 IP address (1 host up) scanned in 12.47 seconds
10) Use SSH with the specified key to connect to the Z10. Username is devuser
.
Here's a simple session:
$ ssh -i ~/.rim/testKey_4096_rsa devuser@169.254.0.1
$
$ pwd
/accounts/devuser
$ uname -a
QNX atodorovZ10 8.0.0 2013/05/02-08:42:48EDT OMAP4470_ES1.0_HS_London_Rev:08 armle
$ date
Fri Jul 19 23:39:19 EEST 2013
$ ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33192
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
tiw_drv0: flags=8c02<BROADCAST,OACTIVE,SIMPLEX,MULTICAST> mtu 1500
address: 1c:69:a5:d0:10:cd
tiw_sta0: flags=40008c43<UP,BROADCAST,RUNNING,OACTIVE,SIMPLEX,MULTICAST,ACCEPTRTADV> mtu 1500
address: 1c:69:a5:d0:10:cd
inet 192.168.0.100 netmask 0xffffff00 broadcast 192.168.0.255
inet6 fe80::1e69:a5ff:fed0:10cd%tiw_sta0 prefixlen 64 scopeid 0x12
tiw_p2pdev0: flags=8c02<BROADCAST,OACTIVE,SIMPLEX,MULTICAST> mtu 1500
address: 1c:69:a5:d0:10:cd
tiw_p2pgrp0: flags=8c02<BROADCAST,OACTIVE,SIMPLEX,MULTICAST> mtu 1500
address: 1c:69:a5:d0:10:cd
tiw_ibss0: flags=8c02<BROADCAST,OACTIVE,SIMPLEX,MULTICAST> mtu 1500
address: 1c:69:a5:d0:10:cd
pflog0: flags=0 mtu 33192
lo2: flags=8048<LOOPBACK,RUNNING,MULTICAST> mtu 33192
cellular0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
cellular1: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
cellular2: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
cellular3: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
cellular4: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
bptp0: flags=8043<UP,BROADCAST,RUNNING,MULTICAST> mtu 1356
inet6 fe80::1e69:a5ff:fed0:10cd%bptp0 prefixlen 64 scopeid 0x2d
inet6 fd02:42ac:77b2:d543:c158:fabb:6276:80e6 prefixlen 8
ecm0: flags=8a43<UP,BROADCAST,RUNNING,ALLMULTI,SIMPLEX,MULTICAST> mtu 1500
address: 1e:69:a5:d0:10:cd
inet 169.254.0.1 netmask 0xfffffffc broadcast 169.254.0.3
inet6 fe80::1c69:a5ff:fed0:10cd%ecm0 prefixlen 64 scopeid 0x2e
IMPORTANT: you can also use the WiFi address of the device to pass to
backberry-connect
and ssh. It works for me.
I'm starting to explore the dark world of QNX in the next couple of days and will keep you posted! Until then - happy hacking.
There are comments.
How do you generate useful stats from a git repo? In particular how do you calculate the monetary cost of development effort behind that git repo? I've found the gitstats project which helped me answer the above question.
Git clone the repo and make sure you
have Python and Gnuplot installed. gitstat
will generate html files and
graphics from your git history.
In my case I only needed to know how long it took for a project to be developed. It turned out that around 56% of the days since day one were active and there were an average of 8,5 commits per active day in the repo.
I took the number of active days and multiplied by an average daily wage to come up with a real number. This is what I consider to be the cost to develop the software from scratch. This is overly simplified, but serves my needs to establish some base line.
There's the COCOMO method which is probably more accurate but I didn't find any usable online COCOMO calculator.
There are comments.
This is the first post in upcoming series while I explore my BlackBerry Z10 device and figure out what's on it.
First configure Z10 for
USB networking.
Then from Settings - Security and Privacey - Development Mode
turn
Use Development Mode
to On
.
From my Linux box I run nmap against the usb (169.254.0.1) and
wi-fi (192.168.0.100) addresses of Z10:
$ nmap 169.254.0.1
Starting Nmap 5.51 ( http://nmap.org ) at 2013-07-17 23:03 EEST
Nmap scan report for 169.254.0.1
Host is up (0.00087s latency).
Not shown: 994 closed ports
PORT STATE SERVICE
80/tcp open http
139/tcp open netbios-ssn
443/tcp open https
445/tcp open microsoft-ds
1111/tcp filtered lmsocialserver
8443/tcp open https-alt
Nmap done: 1 IP address (1 host up) scanned in 21.41 seconds
$ nmap 192.168.0.100
Starting Nmap 5.51 ( http://nmap.org ) at 2013-07-17 23:04 EEST
Nmap scan report for 192.168.0.100
Host is up (0.0035s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
443/tcp open https
1111/tcp filtered lmsocialserver
Nmap done: 1 IP address (1 host up) scanned in 15.64 seconds
Firefox says the certificate used for https is invalid:
The certificate is not trusted because it is self-signed.
The certificate is only valid for PlayBook: 1c:69:a5:d0:10:cd
1c:69:a5:d0:10:cd
is the wi-fi interface MAC address.
All the http ports produce a 404 with index.html
not found!
Trying some UDP scan:
# nmap -sU 169.254.0.1
Starting Nmap 5.51 ( http://nmap.org ) at 2013-07-17 23:32 EEST
Nmap scan report for 169.254.0.1
Host is up (0.00075s latency).
Not shown: 995 closed ports
PORT STATE SERVICE
67/udp open|filtered dhcps
68/udp open|filtered dhcpc
137/udp open netbios-ns
138/udp open|filtered netbios-dgm
5353/udp open zeroconf
MAC Address: 1E:69:A5:D0:10:CD (Unknown)
# nmap -sU 192.168.0.100
Starting Nmap 5.51 ( http://nmap.org ) at 2013-07-17 23:33 EEST
Nmap scan report for 192.168.0.100
Host is up (0.065s latency).
Not shown: 995 closed ports
PORT STATE SERVICE
67/udp open|filtered dhcps
68/udp open|filtered dhcpc
137/udp open|filtered netbios-ns
138/udp open|filtered netbios-dgm
5353/udp open|filtered zeroconf
MAC Address: 1C:69:A5:D0:10:CD (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 143.65 seconds
There are comments.
On Linux there is a feature called USB networking which provides you with a TCP/IP connection to another device connected via USB cable. Here is how to connect your BlackBerry Z10 to your Linux laptop over USB. I use Red Hat Enterprise Linux but should work out of the box for other distros too.
Connect the Z10 to your laptop:
$ lsusb
Bus 001 Device 005: ID 0fca:8020 Research In Motion, Ltd. Blackberry Playbook (CD-Rom mode)
By default many USB devices will present a virtual CD-ROM with drivers for Windows.
This is the case here too. To change it go to Settings - Storage and Access
and
set USB Connection
to Connect to Mac
!
If necessary plug out and back in the Z10.
$ lsusb
Bus 001 Device 007: ID 0fca:8013 Research In Motion, Ltd.
$ ifconfig
usb0 Link encap:Ethernet HWaddr 1E:69:A5:D0:11:0A
inet addr:169.254.0.2 Bcast:169.254.0.3 Mask:255.255.255.252
inet6 addr: fe80::1c69:a5ff:fed0:110a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:49 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:16002 (15.6 KiB) TX bytes:1152 (1.1 KiB)
IMPORTANT: In the same Storage and Access
screen scroll down to
USB Mass Storage
and turn it Off
. If you don't do this your Z10 will appear
as USB flash drive and no USB networking will be available. This is how it looks:
$ lsusb
Bus 001 Device 008: ID 0fca:8014 Research In Motion, Ltd.
IMPORTANT: If you need your Z10 storage accessible together with USB networking
you can try accessing the device over Wi-Fi.
Configure it from the same Storage and Access
screen. Then your device will be
available through Samba on its wireless IP address. I've tried it, works for me!
You don't need anything else to get this working. All set!
My intention is to use either USB networking or Wi-Fi to connect to the Z10 shell and explore it in more details.
There are comments.
I can honestly state that BlackBerry Z10 sucks big time when it comes to importing your contacts from another non-BlackBerry device. I've been struggling to transfer my contacts from Nokia 6303 to the Z10 for one day.
I tried a simple sync of the contacts from Nokia to Z10 over Bluetooth but that failed miserably, telling me the Z10 doesn't support this functionality. This is what to do:
Settings - Sync and backup - Create backup
;Apps - Extras - Memory card - Backup files
;Backup000.NBF
and
transfer it via Bluetooth (or USB cable) to my laptop;For the record: this is a ZIP file with different extension. I've tried also to transfer it to the Z10 and open from File manager but to no avail.
contacts/
directory
containing hundreds of .vcf
files;.vcf
files into one. On Linux this is done withcat *.vcf > ../all.vcf
For the record: I've tried also sending all of these files to Z10. Via the
File manager individual vCards open just fine but you need to Save
them one
by one. The combined vCard file didn't display correctly at all. Showed only one
contact.
Then go to Gmail (or any other CardDAV service) and import all your vCards.
Go to Contacts - More - Import
- and select the combined vCard file since Gmail
doesn't support multi-file uploads;
On your BlackBerry go to Settings - Accounts
and add your Gmail account.
By default this will create profiles for mail, calendar and contacts which will
be synchronized with the device.
WARNING I had my Gmail previously configured on the Z10. Despite the account was configured to re-sync every 15 minutes it took around 2 hours for phone numbers to sync. And to make it worse there is no button for manual re-sync.
All of this done I have thousands of contacts on my Z10 spread across phone numbers, emails, vCards and contacts from social networks. I've noticed some of them (my guess those that had the same email or name) combined auto-magically. The rest can easily be linked together using the Contacts app Link functionality.
For the record: It is also possible to send vCards one by one directly from Nokia to Z10 via Bluetooth. The trouble is that for every entry you need to go through several layers of menu options and confirmations. This makes it impractical.
Contacts Link feature can be improved and made more easy to use, e.g.
The current Link interface is sub-optimal
The current Link interface is buggy - when searching contacts to add as links it shows the currently opened contact too. Luckily it doesn't crash when the same entry is selected :). I've tried.
This is with OS Version 10.0.10.261.
There are comments.
Do you want to have the latest and greatest devices on the market? For free? No problem if you are a software developer! Over the years I've got several devices for free and I will tell you how I did it.
Find a hardware vendor that has launched new products, is behind competitors in terms of software eco-system and present them with a great application which you will code on their device.
This week I've been at the BlackBerry 10 Mini Jam in Sofia and I got a BlackBerry Z10 Dev Alpha B smart-phone.
BlackBerry 10 OS is different from previous versions. It has a QNX kernel and is largely incompatible with previous software. This means all apps need to be rewritten.
Another thing to note is that BlackBerry is behind Android, iPhone and probably Windows Phone in terms of applications. It is in their interest to lower the barrier to entry for developers and boost their software eco-system. Which in turn makes customers happy because they can find all sorts of applications. It's that simple.
Being a Linux guy my idea is to trade my Lenovo X220 for a smart-phone. The only thing(s) I need is all the command line tools which I use: bash, vim, coreutils and most notably Python. So I've decided to try and port all of these to the BlackBerry 10 OS. It should be doable because QNX is POSIX compliant and the OS itself comes with C/C++ and Qt/QML native development stack.
I have a few other ideas which are still taking shape in my head and are mostly towards mobile development.
I've heard BlackBerry Developer Group Balkan may have some devices to give away to developers so I simply asked. They liked my ideas and agreed to give me a developer device.
In addition they've given away the real product (not dev alpha devices) for free at Twitter contests held during couple of events so far. Several guys I know were lucky enough to win the prizes.
In the past I've taken part in testing Fedora onto the XO laptop produced by the One Laptop Per Child project.
It is cool and innovative device with its software especially adapted to child education. The general public wanted to have a standard Linux distro running on the same hardware. Fedora being the original foundation on which the XO Linux distro was built was a good choice (among others).
I have received for free the XO laptop shown here and mainly tested networking related stuff. After the test initiative was completed (and also the upstream OLPC project ceased to exist closely after that) I got to keep the device for myself.
I'll keep my eyes open for a Firefox OS or Ubuntu Phone devices. As they come into stores they will have to compete with already established vendors.
Let me and everyone else know if you got a device for free being a developer! Share your story and tips into the comments below.
There are comments.
OpenShift is still missing the client side tools to set environment variables without exposing the values in source code but there is a way to do it. Here is how.
First ssh into your application and navigate to the $OPENSHIFT_DATA_DIR
.
Create a file to define your environment.
$ rhc ssh -a difio
Password: ***
[difio-otb.rhcloud.com 51d32a854382ecf7a9000116]\> cd $OPENSHIFT_DATA_DIR
[difio-otb.rhcloud.com data]\> vi myenv.sh
[difio-otb.rhcloud.com data]\> cat myenv.sh
#!/bin/bash
export MYENV="hello"
[difio-otb.rhcloud.com data]\> chmod a+x myenv.sh
[difio-otb.rhcloud.com data]\> exit
Connection to difio-otb.rhcloud.com closed.
Now modify your code and git push to OpenShift. Then ssh into the app once again to verify that your configuration is still in place.
[atodorov@redbull difio]$ rhc ssh -a difio
Password: ***
[difio-otb.rhcloud.com 51d32a854382ecf7a9000116]\> cd $OPENSHIFT_DATA_DIR
[difio-otb.rhcloud.com data]\> ls -l
total 4
-rwxr-xr-x. 1 51d32a854382ecf7a9000116 51d32a854382ecf7a9000116 34 8 jul 14,33 myenv.sh
[difio-otb.rhcloud.com data]\>
Use the defined variables as you wish.
There are comments.
Bulgarian start-up TimeHeroes.org is helping a non-profit organization to collect used computers and books for children in foster care. They are helping more children get access to the Internet.
I will donate an Asus eeePC and a Fujitsu laptop plus all books from my Give Away List, which are not currently taken. Because this is not much I have an offer for everyone else, who would like to help.
Give a book or your old laptop and get a new one with discount!.
My company Open Technologies Bulgaria, Ltd. is an authorized reseller of Vali Computers and Fujitsu. Hardware reselling is not the main company activity but a backup in case a customer wants to purchase entire solution from one vendor.
I will not charge the standard reseller's discount (between 5% and 10%) if you drop-off your books or old laptops with me and agree to donated them to children. The offer is valid as long as the donation campaign is (I don't know how long but looks like ongoing).
You can select anything from http://www.vali.bg with the reseller's discount off! Delivery or pick-up is on you though.
If you want to participate use the comments below and I will get in touch with you.
There are comments.