niedziela, 5 marca 2017

0patch

I've just read about very interesting product - 0patch. Occasionaly, we got to know that some companies didn't fixed the bug which is causing serious vulnerability. When it becomes public sometimes we have to wait months for an official patch and 0patch want to provide own unofficial fixes.
The idea is simple: they prepare small patches which are applied by 0patch agent in the runtime. That solution uses technique called function hooking to modify existing code. They also shared manual for developers which shows how to prepare own patches.

Links:
0patch blog

sobota, 4 lutego 2017

Nixie clock #1 - boost converter and my first PCB

Some time ago I bought couple of nixie tubes. Nixie tubes look nice especially in the dark. when I saw them first time I decided to build something on my own (I'm going to build a clock).

First I had to build boost converter because tubes are working with high voltage (170-190V). I used this one which converts input voltage in range 9-12V to needed values. Output can be modified with potentiometer. After I bought all parts and assembled circuit I tested it with tube:


Today I've created my first PCB using thermal transfer of a circuit printed (using laser printer) on the special glossy paper. It was also etched in a Sodium Persulfate solution. Results:


It is not perfect but pretty good considering that it was my first time :) I will put on that board my boost converter.

EDIT:

Board after soldering.

Project files:
https://github.com/eszkadev/nixie-clock/tree/master/boost-converter

poniedziałek, 2 stycznia 2017

LSTM - recurrent neural networks

Since september, I was focused on my graduation project. I was working with my two friends and one of the topics was classification of data. We have to recognize gestures from data which was comming from gloves equiped with accelerometer and magnetometer sensors.

There are several methods to handle that kind of problem: Dynamic Time Warping, Hidden Markov Models and neural networks. We decided to use LSTMs (Long Short Time Memory) - special type of recurent neural networks which is current "state of the art" for classification problems. That solution was introduced in 1997 by Sepp Hochreiter and Jürgen Schmidhuber (paper) and thanks to many succesful applications in that field becomes very popular.

Our application was written in C#. We was looking for framework which can be easily integrated, supports training on GPUs and of course allows to create LSTM networks. We found CNTK which is deep learning, open source framework developed by Microsoft. It is written in C++ and provides wrapping library for evaluation models in C#. It allows to build generic network model using SimpleNetworkBuilder, which is good entry point for beginners.

Some links related to LSTMs, classification:
http://karpathy.github.io/2015/05/21/rnn-effectiveness/
https://colah.github.io/posts/2015-08-Understanding-LSTMs/
http://people.idsia.ch/~juergen/tpami_2008.pdf
http://www.cs.ucr.edu/~eamonn/DTW_myths.pdf

wtorek, 1 listopada 2016

openSUSE Tumbleweed - grub2 installed in non-EFI mode

Last time after I've installed openSUSE Tumbleweed, I've got incorrect grub2 installation (but system instalation was successful). Instead of using EFI my grub2 was configured to run in the classic mode. After reboot I was able to see only the grub2 command line.

Here is the solution:

First we need to find our grub config file. We can do it using:
 > search.file /boot/grub2/grub.cfg

We should get something like:
 (hd1,gpt6)

Now load that config:
 > configfile (hd1,gpt6)/boot/grub2/grub.cfg

The grub menu should appear. Unfortunately entries were incorrect because of using e.g. "linux" command instead of "linuxefi". We have to change that, so press "e" to edit your entry. Next, change "linux" to "linuxefi" and "initrd" to "initrdefi".
To boot press F10.
After your OS is loaded open YaST, then go to Bootloader settings and change mode to "GRUB2 EFI". Done!

środa, 14 września 2016

LibreOffice conference 2016 - Brno


This year again I had the pleasure to attend in the annual LibreOffice conference. This time it was organized in Brno, Czech Republic on September 7-9th 2016.

The conference was very well organized. The conference venue was located in the modern campus of the Faculty of Information Technology at the Brno University of Technology. Every day we listened talks and participated in events on evenings. It was a good opportunity to meet my mentors and other GSoC students. One of the best things is that you can find out who is behind well known IRC nick :)

First day started with opening session and presentation of the state of the project. That day we also took part in HackNight - hacking together in the Red Hat office. My short talk was on the last day of the conference. There was a GSoC panel where we were able to present our projects. At the end we went sightseeing Brno.

I would like to thank sponsors, The Document Foundation and all organizers for a great event.

We also found out where will be organized next meeting.


See you next year in Rome!

piątek, 19 sierpnia 2016

GSoC 2016 - Infrastructure for defining toolbars via .ui (Glade) files - Final report

My all commits can be found here: https://cgit.freedesktop.org/libreoffice/core/log/?qt=author&q=eszkadev%40gmail.com

Tasks from my proposal


Done:
  • Loading of different toolbar definitions in the Writer, Calc and Impress
  • NotebookBar and Classic mode switching
  • Mechanism to show/hide widgets depending on the context
  • Priorities for widgets to allow dynamic hiding according to screen size
  • Improved look of various widgets for their presentation in the toolbar

Not finished:
  • Mechanism to add new tabs for the extensions
  • Mechanism to customize the toolbar

Main changes


  • Controls converted to be used outside sidebar:
  • Possibility to change icon size in the Sidebar and Notebookbar [commit] [commit]

  • Sidebar panels converted to single widgets:
  • Container with widget priorities [commit]
    • widget groups are collapsed when there is no enough space, user can access them from a dropdown menu


  • Multiple Notebookbar implementations [commit]
    • user can switch to other view using menubar

  • Toolbar modes - tdf#101249 [commit]
    • User can switch between different modes: default, single toolbar, sidebar and notebookbar
  • Created custom widgets for better look:
    • SmallButton - button with reduced width [commit]
    • BigToolBox - container for large buttons with dropdown menu [commit]


    • NotebookbarToolBox - container with possibility to switch icon size to use in the Notebookbar


    • NotebookbarTabControl - TabControl with context dependent tabs and the file popup menu

niedziela, 10 lipca 2016

The environment to program AVR microcontrollers on Windows

I've tested a lot of tools which can be used to develop systems based on AVRs and finally found something ideal for me. My setup:

WinAVR is a pack of needed apps: compiler (avr-gcc) and programming tool (avrdude). We should install it first. As an IDE I use Eclipse. The advantage of Eclipse is that I can share the same project on Windows and Linux. It supports my low-cost programmer - USBasp and I can easily change fuse bits clicking in the GUI:



To intall AVR plugin follow this tutorial.
On newer versions of Windows you can met problem with avr-gcc (error 0xc0000142):



To fix this issue you have to download fixed dll and copy to (WinAVR PATH)\utils\bin.

The last step is to add programmer in Eclipse to the AVR properties. To create new AVR project click New Project > C Project > AVR Cross Target Application > Empty Project and then set your MCU type, frequency etc.

To install USBasp in Windows the driver is needed: http://zadig.akeo.ie/. You have to choose "libusb-win32" in the driver field.