sábado, 27 de enero de 2018

2 ways to anchor a regex in elisp

This one I just learnt reading a PR in the melpa repo.


Usually we use ^ and $ to match the beginning and end of the line when dealing with regular expressions.

But, the same way we have \A and \z in ruby , in elisp manual: elisp regex backslash explains there is \` and \'  (that would be written \\` and \\' inside your regex string) to anchor the regex match to the beginning and end of the string or buffer. While $ matches end of the line, so "hello$" will match "hello\ngoodbye", while "hello\\'" will not.

jueves, 25 de enero de 2018

make vlc fit fullscreen window

It's an annoying thing but I was already getting used to it: VLC scales its window strangely (using ratpoison window manager), and I always have to split and 'unsplit' the frame it's in, so it adapts its proportions to the enclosing frame.

But here is the solution: 

Try this...(note: this was written using VLC 2.0.5, but it should also apply to 2.0.7)

  1. In VLC, click ToolsPreferences
  2. In the bottom left, for "Show Settings", click Simple (it might already be selected).
  3. At the top left, make sure "Interface" is selected (it should be).
  4. On the right side, for "Look & Feel", uncheck...
    • [ ] Resize interface to video size
    ...you may also wanna check (or it might already be checked)...
    • [■] Integrate video in interface
  5. Click Save
  6. Manually re-size the VLC window to the size you want.
  7. Close VLC to commit the pref change & window resize.
  8. Run VLC, play some files & report if that's what you want.

It might be useful to my future self, and as I'm not sure where vlc saves its config, I might have to redo it in my future installs. (FYI, the config is saved in ~/.config/vlc/vlcrc, and the info is there, so just carry that file with your dotfiles and you should be fine).



jueves, 28 de diciembre de 2017

so this is where the msn notification sound comes from

If you remember this sound, I'll tell you  that I was listening to Youssou Ndour while hacking some Lua on my computer, and was listening to this track, And heard that familiar sound that made me alt-tab to some messaging application (which I don't have anymore).

The muscle memory reaction made me find which was the app, and yes, it's damn msn.

lunes, 4 de diciembre de 2017

New-old books for thinking about thinking

So here there are the 4 books I recently got that are keeping me *very* entertained.



Two of them are Lisp-related, and two of them are Hofstadter's.
  • The minds I : Short stories from Hofstadter, Dennet, and other sci-fi authors and thinkers. I discovered Stanislaw Lem (author of the story 'The Congress' is inspired on).  The whole book is mindblowing. 75% read so far.
  •  Fluid Concepts and Creative Analogies. Another Hofstadter's book. It goes deep in his view of what AI means, and the different phases where a human brain is creating something from nothing. Example: The sense of 50*10 being "easier" than 74*18: which are the reasons why we find that happening? Can we make machines think in that way also? Is it worth it? 40% read so far.
  • Partial Evaluation and Automatic Program Generation: I've been wanting to read that book for ages, and it's free in pdf.  The phisical copies are astronomically expensive, but I was lucky enough that my book bot found a copy for 3 euros :). It uses crazy techniques to turn interpreters into compiler generators. Futamura projections are totally mindbending. 20% read so far.

  • Building Problem Solvers: A Lisp book on problem solvers.  I discovered this techniques in Norvig's PAIP, and also CTM has some parts of Constraint Programming, and I thought that was pretty cool and broad, so I got that one also.  The book is written in "pre-common" Lisp, so no CLOS, and *lots* of mutable state, setf-ing function arguments and the like.  I'm just starting it, but I think it will be more valuable method-wise than code-wise.

viernes, 10 de noviembre de 2017

asm and reverse engineering

I've been lately giving a shot to some assembler tutorials. Just because.

I never did any serious assembler, but when I was into reversing I was eating asm for breakfast, but from the read perspective.

In https://github.com/kidd/assembler-tutorials there are the few codes I wrote, either following tutorials, or walking random paths myself, using nasmx macros.

In windows, there's MASM and NASM, but MASM is not in GNU/Linux, so the option was NASM. It's nice that it gives me the same syntax I was used to in the old days using W32Dasm, ollydbg, soft-ice and friends.

Anyway, I've been looking at nasmX, which are a bunch of macros that lift assembler a bit. At least, allowing you to write with ifs, whiles, and "forgetting" about the calling conventions. Super cool!

Meanwhile, I've been also following some reverse engineering forums, and rediscovered RE a bit. A nice fuzzy feeling that many things are the same, but tooling changed (radare2 is a must in linux, and the learning curve is vim-like).  Still, I'm starting to do my first hacks on android using anbox, apktool, and jd.  very basic stuff, but nopping a few things and rerunning them in the mobile is already an achievement!

 As always, lots of resources, and not so much time to swallow them.

miércoles, 8 de noviembre de 2017

Finally publishing commit-msg-prefix.el

It's been a few months since I released commit-msg-prefix.
Just to remember a bit what was it about, I created a gif so that we all can relate again to it.


The user story is the following:

  • In your company/organisation, you have to follow some rule of prefixing all your commits with either a keyword (Add/Remove/Fix/Hotfix/Bump/Release) or an issue number, or something like that.
  • When you are about to commit that, you know what you just did (you should!), but you can't remember which particular issue number was that.
  • Then you go to jira/trello/github-issues/younameit and look for that and insert it.  
Usually, as it's been a long running issue, you have commits with that number, in your recent commit history, so an alternative to the last bullet point is to have a quick look at git log.

Well, commit-msg-prefix makes this automatically for you, so it shows the latest commits (filtered as you want), and lets you choose one (find-as-you-type provided by helm/ivy/ido), and inserts the first word of the commit.

Obviously, most of the relevant settings are configurable, so you can have support for fancier substitutions, or use mercurial logs.

The package itself is pretty simple, but it might be useful to others, and if it is, I'm happy to share it.  

I just issued the Pull Request for it to be in melpa, so more users can give it a try and I can test it a bit further. I hope it will be accepted  and will be available in melpa soon.

In the future, if it has some adoption, it might make sense to merge it into magit, but I don't want to bother magintainers when the idea is not widely tested yet.

Happy hacking!

martes, 7 de noviembre de 2017

So,... Here's Ivan Sutherland blowing your mind

Just by chance I stumbled upon an Ivan Sutherland's talk. And Listening to this guy is an enlightening experience.

The pace of his talk is calm but not slow, concrete but not obvious, and man.... he talks about history that he's lived in his own self.

For those who do not know who's Ivan Sutherland, he's the guy who invented sketchpad, where many of the concepts that today we give for granted, and some that we're just starting to develop now (most of it in the early sixties).  Here's the link to the sketchpad thesis, in case you want to read about it.

Btw, thesis supervisor: Claude E. Shannon.

Here's the talk. Give it a shot. Insight level: "Alan Kay".