+
arduino
+
+
automatic programming
codeskulptor
game
GGJ
graphical effects
+
+
oscilloscope
+
SIGBOVIK
unit tests
xrobot
diff --git a/theme/tipuesearch/img/expand.png b/theme/tipuesearch/img/expand.png
old mode 100644
new mode 100755
diff --git a/theme/tipuesearch/img/link.png b/theme/tipuesearch/img/link.png
old mode 100644
new mode 100755
diff --git a/tipuesearch_content.json b/tipuesearch_content.json
index 8640648..34ed9ad 100644
--- a/tipuesearch_content.json
+++ b/tipuesearch_content.json
@@ -1 +1 @@
-{"pages":[{"text":"Just to keep the blog rolling, I'm posting this ten-second clip of Guybrush Threepwood coming into existence from some sort of primordial soup of pixels. On the left, you can see the distortion field applied to the original image to deform it. It consists of a field of vectors, each of them centered on a pixel of the image, following a 2D Ornstein-Uhlenbeck process . They are convolved with a Gaussian kernel that grows as the video steps forward.","tags":"thingies","loc":"http://blog.debiatan.net/guybrush.html","title":"Distortion Vector Field"},{"text":"UTBP is a new subparadigm of Declarative Programming, in which code is generated from a description of its intended behavior, specified through unit tests. This work was presented at SIGBOVIK 2014 and received the Most Frighteningly Like Real Research Award. For an in-depth tour of UTBP, you can check the article and browse the associated GitHub repository . If you prefer a light introduction, you can choose between two versions of the same video. This one is dubbed: This one is subbed:","tags":"tools","loc":"http://blog.debiatan.net/utbp.html","title":"Unit-Test-Based Programming"},{"text":"This weekend I participated in the sixth edition of the Global Game Jam . The goal of the event was to create a game related in some way to a given theme in 48 hours. This year's theme was We don't see things as they are, we see them as we are . I decided to go for a multiplayer Gradius clone in which collisions with enemies remap your controls. I developed it using CodeSkulptor , which is basically a Python interpreter running on top of Javascript. Needless to say, it's no speed demon. See for yourself: If you want to give it a try, I have two suggestions to make: Find someone to play against (otherwise is going to look as sad as my single player game above). Run it on Chrome. Here's the profile of the game at the GGJ webpage and a link to the game . Enjoy! Update : Looks like my game placed third on the local vote we held after the Jam! Hooray!","tags":"games","loc":"http://blog.debiatan.net/gradius-meets-twister.html","title":"Gradius meets Twister"},{"text":"Every once in a while, I need to step outside the command line. Sometimes I'm even forced to interact with deaf graphical programs, those that do not listen to standard input or a meager HTTP port. In those desperate times, were it not for tools such as XAUT or xdotool , I would have to type and click outside of VIM , like cavemen probably did. Those two little programs are enough to make me happy when confronted with an X11 server. However, my computer, of a more whimsical nature, is reluctant to execute binaries other than a Python interpreter (like any other well-meaning general-purpose device assembled during the 21st century, really). That is why I have decided to write the simplest Python library I could think of that is able to: Find out the position of the mouse pointer Move the mouse pointer around the screen Press and release mouse buttons Press and release keys in the keyboard Capture the screen The xrobot library is lean, simple and Python[23]-compliant. It is just a wrapper around functions defined inside python-xlib . Since Xlib screen capture is painfully slow, the python-gtk bindings are used instead, if present. I have decided to return images as numpy arrays for my convenience; if you find that dependency unbearable, you can root it out easily from the code. Here's me, at five hundred clicks/second. I leave you with a link to the xrobot github repository and some sample code: import xrobot xr = xrobot . XRobot () xr . move ( 10 , 10 ) robot = XRobot () x , y = robot . mouse_pos () print ( 'Current mouse position: x =' , x , 'y =' , y ) robot . move ( 10 , 10 ) robot . click ( 1 ) robot . key ( 'a' ) # Press and release 'a' robot . key_down ( 'comma' ) # Press ',' robot . key_up ( 'comma' ) # Release ',' width , height = robot . screen_resolution () print ( 'Screen width:' , width , 'Screen height:' , height ) img = robot . capture_screen () import pylab as pl pl . imshow ( img ) pl . show ()","tags":"tools","loc":"http://blog.debiatan.net/xrobot.html","title":"xrobot"}]}
\ No newline at end of file
+{"pages":[{"text":"It seems that building an oscilloscope on top of an Arduino board is some sort of rite of passage. Do a duckduckgo search and you will see that all the good names for this kind of project are already taken, so I have decided to name mine just oscilloscope . In my defense, I'll say that I have written mine because I needed the most basic of oscilloscopes and it's just easier to build one from scratch than to adapt some already existing code. I've written my oscilloscope code it in order to inspect a single-channel periodic signal with a frequency close to 250 Hz. My first trivial attempt at the task already recorded the signal at 5 kHz and transmitted it over USB without the need to buffer data in the RAM of the microcontroller, so I haven't bothered speeding it up. The main bottleneck in my case is the serial transmission. Trying to collect more than 5800 samples per second will likely result in the loss of some of them. I've written some extra code that checks for missing samples, but it never detects problems at 5 kHz and, frankly, I'm OK with twenty samples per cycle. All in all, putting together the C firmware and the Python client, the project takes less than 130 lines. The program that checks for periodicity, finds the frequency and aligns the cycles to display them adds 90 extra lines. The output of this program looks like this: Visualization of several cycles of a PWM signal at 250 Hz after going through a simple RC circuit. Here's the link to the github repository .","tags":"tools","loc":"http://blog.debiatan.net/oscilloscope.html","title":"Oscilloscope"},{"text":"Just to keep the blog rolling, I'm posting this ten-second clip of Guybrush Threepwood coming into existence from some sort of primordial soup of pixels. On the left, you can see the distortion field applied to the original image to deform it. It consists of a field of vectors, each of them centered on a pixel of the image, following a 2D Ornstein-Uhlenbeck process . They are convolved with a Gaussian kernel that grows as the video steps forward.","tags":"thingies","loc":"http://blog.debiatan.net/guybrush.html","title":"Distortion Vector Field"},{"text":"UTBP is a new subparadigm of Declarative Programming, in which code is generated from a description of its intended behavior, specified through unit tests. This work was presented at SIGBOVIK 2014 and received the Most Frighteningly Like Real Research Award. For an in-depth tour of UTBP, you can check the article and browse the associated GitHub repository . If you prefer a light introduction, you can choose between two versions of the same video. This one is dubbed: This one is subbed:","tags":"tools","loc":"http://blog.debiatan.net/utbp.html","title":"Unit-Test-Based Programming"},{"text":"This weekend I participated in the sixth edition of the Global Game Jam . The goal of the event was to create a game related in some way to a given theme in 48 hours. This year's theme was We don't see things as they are, we see them as we are . I decided to go for a multiplayer Gradius clone in which collisions with enemies remap your controls. I developed it using CodeSkulptor , which is basically a Python interpreter running on top of Javascript. Needless to say, it's no speed demon. See for yourself: If you want to give it a try, I have two suggestions to make: Find someone to play against (otherwise is going to look as sad as my single player game above). Run it on Chrome. Here's the profile of the game at the GGJ webpage and a link to the game . Enjoy! Update : Looks like my game placed third on the local vote we held after the Jam! Hooray!","tags":"games","loc":"http://blog.debiatan.net/gradius-meets-twister.html","title":"Gradius meets Twister"},{"text":"Every once in a while, I need to step outside the command line. Sometimes I'm even forced to interact with deaf graphical programs, those that do not listen to standard input or a meager HTTP port. In those desperate times, were it not for tools such as XAUT or xdotool , I would have to type and click outside of VIM , like cavemen probably did. Those two little programs are enough to make me happy when confronted with an X11 server. However, my computer, of a more whimsical nature, is reluctant to execute binaries other than a Python interpreter (like any other well-meaning general-purpose device assembled during the 21st century, really). That is why I have decided to write the simplest Python library I could think of that is able to: Find out the position of the mouse pointer Move the mouse pointer around the screen Press and release mouse buttons Press and release keys in the keyboard Capture the screen The xrobot library is lean, simple and Python[23]-compliant. It is just a wrapper around functions defined inside python-xlib . Since Xlib screen capture is painfully slow, the python-gtk bindings are used instead, if present. I have decided to return images as numpy arrays for my convenience; if you find that dependency unbearable, you can root it out easily from the code. Here's me, at five hundred clicks/second. I leave you with a link to the xrobot github repository and some sample code: import xrobot xr = xrobot . XRobot () xr . move ( 10 , 10 ) robot = XRobot () x , y = robot . mouse_pos () print ( 'Current mouse position: x =' , x , 'y =' , y ) robot . move ( 10 , 10 ) robot . click ( 1 ) robot . key ( 'a' ) # Press and release 'a' robot . key_down ( 'comma' ) # Press ',' robot . key_up ( 'comma' ) # Release ',' width , height = robot . screen_resolution () print ( 'Screen width:' , width , 'Screen height:' , height ) img = robot . capture_screen () import pylab as pl pl . imshow ( img ) pl . show ()","tags":"tools","loc":"http://blog.debiatan.net/xrobot.html","title":"xrobot"}]}
\ No newline at end of file
diff --git a/utbp.html b/utbp.html
index fbe95b0..3c3a9d0 100644
--- a/utbp.html
+++ b/utbp.html
@@ -101,7 +101,7 @@