Resources to learn Russian

Everyone has its own preferred method to approach the (hard but fulfilling) task of learning a new language. In my case, I like to have a set of different resources that complement themselves and help me develop my skills in the areas that I think are needed to properly master a language: listening, writing, speaking and grammar.

So just in case it is helpful for anyone, please find below a list of all the resources that I use, organized by those categories.

Read more ›

Posted in Languages, Russian Tagged with: ,

Go directly to the Wikitionary page of the word you are looking for!

Simple JavaScript snippet that allows you to create a bookmark that will either redirect you to the Wikitionary page of the word you have selected with your cursor or will prompt which word you wanna search and will redirect directly there. After a small update, it now also redirects you directly to Google Search in case you are selecting a whole phrase instead of only a word.

No rocket science, but I am really using it a lot to speed up my vocabulary searches. Just create a new bookmark of whatever website, edit it and replace the URL with the code below. Now place your bookmark in the bookmarks’ bar and click it every time you need to search for something. Easy!

	var selection = (window.getSelection().toString() != "")? window.getSelection().toString(): prompt('Word to be searched for:'); 
	selection = selection.trim(); 

	if(selection.split(" ").length > 1){'' + selection);
	} else {'' + selection);
Posted in Code, Languages Tagged with: , ,

Applying Scrum (I/II)

Since I first heard about Agile Methodologies for Software Development, I knew that was for me. I mean, whenever I read something new about it, I cannot avoid thinking “ah, geez, this is soooo common sense”. And, because it is common sense, it sometimes happens that you forget about doing some of those things, and that is why all the structure created around this methods helps you in doing things right, not forgetting about the important things, and also, learning about what you did wrong and how to correct it.

Even though my department is not dedicated full time to software development, we do create continuously new tools and small pieces of software in order to perform new analysis or to ease our daily tasks and improve our efficiency and effectiveness: those tasks, usually, will receive feedback on the go, so we need to be flexible in order to embrace them as we go. Also, we do perform other daily tasks or studies that, in my opinion, can benefit from implementing Agile Methodologies.

That is why I decided to do some research and experiment myself the effect of applying Scrum schemes to organize the work of my department.

Read more ›

Posted in Software Development Tagged with: , ,

Vowel reduction in Russian

Unlike in Spanish, where each word has its unique sound and it is pronounced always the same in every word (that is, “you can pronounce things as you hear them”), in Russian there is a huge variability depending not only on the position of the syllable inside the word, but also in the letter order as well.

Read more ›

Posted in Languages, Russian Tagged with: ,

The Graphics Programming Blackbook

“The Graphics Programming Black Book” is going to be my first book recommendation for this new year. It is an amazing book, that will guide you through the insights of not only graphics programming, but also optimal programming and high performance code.

It was written by Michael Abrash in 1997, an even though it might seem outdated (due to the constant references to 8086, 8088 and the like x86 first processors), its content is still vividly current, as it helps you shape your mind on how to think when trying to develop high performance code. Also, this book is an amazing overview of how things where once upon a time, and how things have changed and increased in complexity while maintaining a common foundation, and also how amazing things could be accomplished with the limited hardware available at the time.

You can read each of the chapters that compose the book (there are 70 chapters that span for more than 800+ technically-intense pages) as free PDF files in this page, or you can buy it at your favorite online store, as for example at Amazon.

Posted in Computer Science Tagged with: , ,

Driving a 7-segment display with a Raspberry Pi (II)

Now that we have our hardware correctly connected, we only need to develop our software in order to make the display work. I will guide you through the whole process of creating the software, and I will post at the end a working piece of code for you to fork or use. Read more ›

Posted in ARM, Assembly, Computer Science, Hardware Tagged with: , , , ,

Driving a 7-segment display with a Raspberry Pi (I)

This post will be the first of a series of posts that will describe how to drive a 7-segment display from a Raspberry Pi, without any OS running in it. Today, I will talk about some important characteristics about 7-segment displays, how to wire things up, and another considerations that you ought to take into account before coding anything.

Even though I will describe general aspects and concepts about driving 7-segment displays, I will always use as an example my D323G (you can download the spreadsheet from here).

Read more ›

Posted in Hardware Tagged with: , , ,

Pull-up/pull-down resistors

If you just want to know what are pull-up/pull-down resistors meant to, then the following two bullets will be enough for you:

  • A pull-up resistor is a resistor connected between a source (in micro-controllers, typically 3V3 or 5V) and a GPIO. This way, when there is nothing connected to the pin, it will read a HIGH value (logical “1”).
  • A pull-down resistor, as you can know imagine, does exactly the opposite: it is connected between ground and the pin, so it reads, in absence of any other input, a LOW value (logical “0”).

Do you wanna know how to calculate the best value for your particular configuration? Did you know that there are usually pull-up/pull-down resistors inside the GPIO? Read on, then.

Read more ›

Posted in Computer Science, Hardware Tagged with: , , , ,

How to debug your bare-metal code with QEMU+GDB

This is just a quick tip to debug your bare-metal code using QEMU and GDB. Read more ›

Posted in ARM, Assembly, Code Tagged with: , , , ,

Quick note about second-order polynomials

This is not rocket-science, but just an useful way of quickly analyzing the “aspect” of a parabola. Assuming:

[latex]p(x)=a + bx + cx^{2}[/latex]

Then we have that:

[latex]x_{ep}={- b\over{2c}}[/latex]
[latex]{{d^{2}p\over{dx^{2}}} = 2c}
<0, \text{local maxima}\\ <0, \text{local minima} \end{cases}[/latex]

So, basically, we only need to check $latex sign({b\over{2c}})$ and $latex sign(c) $ in order to correctly position the local point. Just in case you need it, the value of the polynomial at that point is: $latex {p(x_{ep})}=a+{3b^{2}\over{4c}}$.

Posted in Maths Tagged with: , ,