Add some blog posts

Also an index page that automatically generates a list of all the
posts available.
This commit is contained in:
Tom Willemsen 2012-12-10 02:22:18 +01:00
parent 210460d177
commit a2f077cf13
13 changed files with 478 additions and 0 deletions

View file

@ -0,0 +1,101 @@
#+TITLE: The 98% perfect RSS solution
#+DATE: 2012-11-30 10:00
#+TAGS: rss emacs gnus gwene tt-rss avandu
* Test
I've been looking for the "perfect" RSS reading solution for a while
and I just got this idea for a setup that has to be about 98% of all
I'm looking for.
The things I'm looking for are:
- Emacs interface. This isn't that big a problem since anything
with an API can be made to have such an interface, and I feel
comfortable enough with Emacs Lisp to write it myself if I have
to, like I was doing with [[http://code.ryuslash.org/cgit.cgi/emacs/avandu/][avandu]], but then it /does/ need a(n/ good)
API.
- Unbound to a single computer. It's a hassle to have to remember
what you have and haven't read. If it was easy your RSS reader
wouldn't care about (un)read items, everything would just be
"items". So sharing that state between computers is pretty
important.
- A server. Something that keeps running 24/7. Or at least the
closest possible approximation of that. It's no good to miss
everything that happens between 11pm and 9am just because you
don't have your feed reader running. Of course this is only a
problem if you're following some high-traffic feeds, but they
exist too.
- Runs locally. The nice thing about having shell access to a
server somewhere that someone else keeps online for you is the
possibility to run something like [[http://newsbeuter.org/][newsbeuter]] and just
(de/reat)tach from whichever computer you're working on. The
downside is, though, that this breaks pretty much all integration
with your desktop. Opening URLs becomes a reliance on your
terminal emulator's ability to parse and open them. Viewing media
such as images, or audio files from a podcast, turns into ~Save,
Transfer, Open~ instead of just the ~Open~.
- Handles big feed lists. Even if you only read five feeds, the day
may come you'll be reading fifty, or even much more. A piece of
software that handles this well is a must. This is the problem I
had with [[http://codezen.org/canto/][canto]] and Emacs' [[http://www.emacswiki.org/emacs/NewsTicker][newsticker]]. *canto* looked awesome, the
most interesting interface to RSS feeds I have come across so far,
but back when I tried it trying to read my collection of feeds
would lock-up my computer. *newsticker* would lock-up my emacs
session for 10-20 minutes.
Now though I have found something that does it all. It is actually
a twist on something I used some time ago.
*Emacs* + [[http://gnus.org/][Gnus]] + [[http://gwene.org/][Gwene]] + [[http://www.cis.upenn.edu/~bcpierce/unison/][unison]]. Not the easiest thing to set-up
perhaps, but once *Emacs* + *Gnus* is in place the rest is a piece of
cake.
*Gwene* is an awesome service that turns RSS feeds into
newsgroups. *unison* is an awesome piece of software for
synchronising files between different computers. *Gnus* is a real
newsreader. *Emacs* is what *Gnus* runs on.
So it's kind-of like cheating. *Gnus* is not unbound to a single
computer and *Gwene* doesn't offer server-side state tracking either.
But because *Gnus* uses a single file to store state about all of its
subscribed groups, this makes it a good candidate for sharing that
one file. This is not something unique to *Gnus*, at least [[http://www.slrn.org/][slrn]] uses
the same kind of file, the ~.newsrc~ file (or in *Gnus*' case
~.newsrc.eld~).
So I register the feeds I want to follow with *Gwene*, if they aren't
already registered. I subscribe to the resulting newsgroups on
~news.gwene.org~ with *Gnus* and when I switch over to another computer
I use *unison* to synchronise the ~.newsrc.eld~ file.
An example configuration of *Gnus* could just be as simple as:
#+BEGIN_SRC emacs-lisp
(setq gnus-select-method '(nntp "news.gwene.org"))
#+END_SRC
*unison* just needs:
#+BEGIN_EXAMPLE
root=/your/home/dir/
root=/your/server/root/
path=.newsrc.eld
#+END_EXAMPLE
And that's about it.
Now it's still not 100% perfect. I've seen that *Gwene* can't handle
100% of the feeds I throw at it, but these can be fixed either by
contacting the people publishing them or by improving *Gwene*'s
parser. It also doesn't automatically check periodicaly, though I
think *Gnus* can be set-up to do that, but since I also use it to read
my mail (again) that's not really an issue. It also isn't
accessible without *Emacs*, *Gnus* and *Unison*, but I hate web-interfaces
anyway.
So that's it. My 98% perfect RSS reading solution.

View file

@ -0,0 +1,22 @@
#+TITLE: A new org-blog
#+DATE: 2012-04-24 00:52:00
#+TAGS: org-blog project
I've taken it upon myself to update the ~org-blog.el~ that was written a
long time ago. I want something other than an extra layer over some
other system, ~org-mode~ has everything a blog needs, but it doesn't
generate an RSS feed or a special index page.
There was the ~org-blog.el~, but that uses some old functions that don't
exist anymore, so I thought I'd try to update it.
I just barely got it working, as you can see from this post. It
generates an RSS feed, but the links don't work. It generates an index
page, but no links to the individual pages (not that it needs it,
really). It doesn't listen to some of the settings (toc, sections) the
rest of the publishing projects do.
I'd also like to have all posts in a single file and use things like a
post's category and tags and such.
It'll be interesting to see what else I can fix.

View file

@ -0,0 +1,26 @@
#+TITLE: Another way to get a selection
#+DATE: 2012-05-03 10:04:00
#+TAGS: emacs elisp org-mode coding
When I was first looking into improving my mailbox selection function
I was looking at how to just ask the user for input with completions.
Though now that I came across ~tmm-prompt~ I really prefer this way of
working, at least in this case.
However, today another function was mentioned, in response to someone
pointing out ~org-completing-read~: ~completing-read~. Wow that's a far
leap.
Anyway:
#+BEGIN_SRC emacs-lisp
(completing-read "Your favorite color: "
'("red" "green" "blue" "yellow"))
#+END_SRC
This will ask for user input and provide these options as completions,
but it won't show a list of options, of provide shortcuts, like
~tmm-prompt~ does.
It's good to know these things, and I really should read both the
emacs manual and the emacs lisp reference manual at some point.

View file

@ -0,0 +1,42 @@
#+TITLE: Ask for selection in Emacs
#+DATE: 2012-05-02 21:09:00
#+TAGS: emacs elisp coding
I came across an email on one of the emacs mailing lists today, where
someone asked how to ask a user for input whilst providing
completions. The first answer he got was to try =tmm-prompt=, so I
looked into it a little.
I use =mu4e= as my primary email program, but since it isn't designed
(seemingly) for use with multiple accounts I've got some wrapper
functions that set some variables according to my liking and then
start =mu4e=. This works very well, but it's a pain to have to use =M-x
view-ryu-mail= or =M-x view-ninthfloor-mail= and such, so I wrote a
function to read a string from the minibuffer, which I then bound to
the ~<XF86Mail>~ key, this turned it into, for example =<XF86Mail> ryu=
and =<XF86Mail> ninthfloor= and so on, but this doesn't have any
completion or notification of my options.
So after looking at ~tmm-prompt~ I came up with the following:
#+BEGIN_SRC elisp
(defvar oni:mailbox-map
'(("ryulash.org" . "ryu")
("ninthfloor" . "ninthfloor"))
"A mailbox map for use with `tmm-prompt'.")
(defun view-ryu-mail ()...)
(defun view-ninthfloor-mail ()...)
(defun view-mu ()
(interactive)
(let* ((tmm-completion-prompt "Choose a mailbox\n")
(inbox (tmm-prompt oni:mailbox-map)))
(funcall (intern (concat "view-" inbox "-mail")))))
#+END_SRC
I've left out the definitions and some mail accounts for brevity.
~tmm-prompt~ is usually used when using the text-mode menu with =M-` `=,
but it works very well here too. This changes mailbox selection to,
for example =<XF86Mail> r= or =<XF86Mail> n=.

View file

@ -0,0 +1,18 @@
#+TITLE: Ask for selection in Emacs, addendum
#+DATE: 2012-05-02 21:52:00
#+TAGS: emacs elisp coding
I erroneously assumed (and thought I tested) that using ~tmm-prompt~
could be done the way I described before. The ~oni:mailbox-map~ variable
needs to be a little different from what I'd shown before, namely:
#+BEGIN_SRC elisp
(defvar oni:mailbox-map
'("top" ("menu" ("ryulash.org" . "ryu")
("ninthfloor" . "ninthfloor")
("gmail" . "gmail")
("aethon" . "aethon")))
"A mailbox map for use with `tmm-prompt'.")
#+END_SRC
Without the ~top~ and ~menu~ items it will complain about wrong arguments.

View file

@ -0,0 +1,21 @@
#+TITLE: A simple gnome-blog test
#+DATE: 2009-11-09 15:23
I've been looking for some way to post blog entries from my desktop
for a while now, I've come across Drivel (which crashes when I try to
log in to blogger with it), can't find a Bleezer package at work (just
checked it, first time I heard of it today) and no other gtk/gnome
client seems appealing.
Let's see what this gnome-blog app does.
Not much so far, bold or italic seems the be the only options
available to me at the moment, let's see about HTML:
to install gnome-blog in Ubuntu 9.04 use
#+BEGIN_SRC sh
sudo apt-get install gnome-blog
#+END_SRC
and the rest should then be self-evident.

View file

@ -0,0 +1,39 @@
#+TITLE: Code::Blocks "process terminted with signal 255 (0 minutes, 0 seconds)"
#+DATE: 2009-08-25 10:40
#+TAGS: codeblocks fedora coding
Yesterday after I came home from work I thought I'd try working on a
project I've been working on this past weekend.
I was away from home this weekend, so all the work I'd done had been
on another computer, in a virtual Ubuntu installation, so I hadn't yet
tried it at home.
Trying to build it went fine. Running it from a terminal went
fine. Even compiling and running on another Ubuntu installation (my
work laptop, non-virtual) went fine, but Code::Blocks reported to me
that whenever I tried running my application on my Fedora 11 home
installation that it terminated with signal 255.
I couldn't find what was wrong, I knew the application worked since I
tested it in another terminal window and if I debugged it it'd go
great up to the point where it met with a ~cin~ or ~cout~.
Being tired from a really long day (getting up at 5:00am, get on train
at 6:25am, get off train at 8:30am and at work 8:50am), I gave up
fairly quickly.
This morning though the itch got worse and I just had to investigate
further.
After about a minute of looking around I found someone at the Ubuntu
Forums asking about the exact same thing and it turns out that the
problem was that xterm wasn't installed. So a simple
#+BEGIN_SRC sh
su -c "yum install xterm"
#+END_SRC
was enough to fix the problem.
Now I can start developing my application again!

View file

@ -0,0 +1,40 @@
#+TITLE: Gnome-shell in Ubuntu 9.10
#+DATE: 2009-12-11 10:35
#+TAGS: gconf gnome gnome-panel gnome-shell linux ubuntu
Even though ~gnome-shell~ is really only a preview of what is to come
for gnome 3.0 and it's still buggy and sometimes not completely stable
perhaps, I really like it.
When I first saw the screenshots I was less then impressed, I thought
it didn't at all look like anything new or innovative, but rather
messy and confusing. But me being ever interested in new things and
all I just had to give it a try (the ~gnome-panel~ look was starting to
bore me).
Installing was easy
#+BEGIN_SRC sh
sudo apt-get install gnome-shell
#+END_SRC
and starting it afterwards was easy too
#+BEGIN_SRC sh
gnome-shell -r
#+END_SRC
Though first I had to disable compiz, which I don't really use anyway.
I was also using ~avant-window-navigator~, which disappeared on me but
still kept part of my notification area to itself. So the time after
that I first closed AWN and all was as it should be.
I didn't feel like having to manually start ~gnome-shell~ every time I
logged in so I started looking into a way to replace ~metacity~ and
~gnome-panel~ with ~gnome-shell~ and found that this could be done by
editing your ~gconf~ (with, for example, ~gconf-editor~) and setting the
~/desktop/gnome/session/required_components/windowmanager~ key from
~metacity~ to ~gnome-shell~.
Of course, since it is a composited window manager you need a video
card and driver that can handle screen compositing.

View file

@ -0,0 +1,48 @@
#+TITLE: Higher Resolution in Fedora 11 with proprietary NVidia Drivers
#+DATE: 2009-09-22 23:51
#+TAGS: fedora nvidia xorg
Ugh... I have been screwing around with this since the beginning of
time... Or at least since I installed Fedora for the so-manieth
time. Finally though I found out what I had to do.
Following [[http://forums.fedoraforum.org/showthread.php?t=204752][this guide]], I was able to easily and correctly install the
drivers. I used to build them myself, but that got me worse results
then anything.
To sum up, though:
#+BEGIN_SRC sh
# switch to super user (root)
su
# install rpmfusion repository
rpm -Uvh \
http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm \
http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm
# install the driver (I have an i686 pc, you might need a different architecture, like 64_32 or something similar)
yum install kmod-nvidia xorg-x11-drv-nvidia-libs.i586
# reboot to make changed take effect
reboot
#+END_SRC
This only got me a 1024x768 resolution, though... Which pissed me off...
I started looking around the internet for a way to fix it in the
~xorg.conf~ itself, which I'd done on Fedora 9 before, but didn't
remember how (the reason I'm writing this right now), but didn't
actually find what I was looking for.
In the end I found 2 supposed fixes, one added a Modes option to the
=Display= section of the =Screen= section, and another was to add a
=DisplaySize= option to the =Monitor= section.
Well, I found out I needed both, so I added =DisplaySize 1280 1024= to
the =Monitor= section and =Modes "1280x1024"= to the ~Display~ subsection
of the ~Screen~ section.
Now it's working again, running at 1280x1024 with screen compositing
(so I can run ~gnome-do~ with docky theme, which I'm trying out for a
while).

21
site/blog/index.org Normal file
View file

@ -0,0 +1,21 @@
#+TITLE: Blog
* Posts
#+begin_src emacs-lisp :exports results :results list
(defun file-to-data (file)
(unless (or (string= file ".") (string= file "..") (string= file "index.org"))
(let (title date)
(with-temp-buffer
(insert-file (concat "/home/slash/var/src/orgweb/site/blog/" file))
(goto-char (point-min))
(re-search-forward "^#\\+TITLE: \\(.*\\)$")
(setq title (buffer-substring-no-properties
(match-beginning 1) (match-end 1)))
(goto-char (point-min))
(re-search-forward "^#\\+DATE: \\(.*\\)$")
(setq date (buffer-substring-no-properties
(match-beginning 1) (match-end 1))))
(list date (concat "[[file:" file "][" title "]]")))))
(mapcar #'cadr (sort (delete nil (mapcar #'file-to-data (directory-files "/home/slash/var/src/orgweb/site/blog"))) (lambda (el1 el2) (not (string-lessp (car el1) (car el2))))))
#+end_src

View file

@ -0,0 +1,48 @@
#+TITLE: mod\_rewrite with Fedora 10 and ISPConfig for WordPress
#+DATE: 2009-12-09 10:33
#+TAGS: apache2 fedora ispconfig mod_rewrite
This relates to Fedora 10 and ISPConfig 3.0.1 set up as described in
[[http://www.howtoforge.org/perfect-server-fedora-10-ispconfig-3][this HowtoForge post]].
One of my colleagues recently got interested in offering our clients
Wordpress as a content management system, so he's been trying it out.
Yesterday he found out that if he wanted to change the permalink style
in Wordpress he needed write access to =.htaccess=, which he didn't have
because the user rights haven't been set up very well there.
So I gave him write access by using
#+BEGIN_SRC sh
chown apache:apache .htaccess
#+END_SRC
Unfortunately this resulted in a 500 Interal Server Error.
Looking at the error log for the website I tried this for it let me
know that =RewriteEngine= directives were not allowed in the =.htaccess=.
Since I didn't want to mess with the base configurations of ISPConfig
I started looking around for other options. Eventually I found that I
had to add something similar to this to the Apache directives field
under options under the website's settings
#+BEGIN_SRC text
<IfModule mod_rewrite.c>
<Directory /var/www/[sitename]/web/>
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</Directory>
</IfModule>
#+END_SRC
Of course ~[sitename]~ should be replaced with the name of your website.
It all works after I restarted the apache server myself, but I do not
know if that is completely necessary. Also it might take a few seconds
before ISPConfig finishes editing the configuration file.

View file

@ -0,0 +1,30 @@
#+TITLE: Not as perfect
#+DATE: 2012-12-01 16:01
#+LINK: emacs http://gnu.org/software/emacs/
#+LINK: gnus http://gnus.org
#+LINK: gwene http://gwene.org
#+LINK: unison http://www.cis.upenn.edu/~bcpierce/unison/
* Unexpected
I thought that the [[emacs][GNU Emacs]] + [[gnus][Gnus]] + [[gwene][Gwene]] + [[unison]] solution would
be near perfect, but it seems that it is, unfortunately, not
entirely the case.
* A problem
It seems that there is either something wrong with [[gwene]], or with
my connection to the [[gwene]] and [[gnus]] server.
The problem is that I'll add some RSS feed to [[gwene]] and it *will*
get registered and tell me it will be filled in a few minutes, but
then even days later they'll still not be available in the group
list.
I haven't found any reason why, they're not crazy feeds, I do get
other new groups (so it's not all of them), but it's annoying.
* Next
I think I'll start looking at other solutions again. Too bad,
because the feeds that are working are working really well for me.

View file

@ -0,0 +1,22 @@
#+TITLE: Removing a service manually in Windows Server 2008
#+DATE: 2009-11-09 12:24
#+TAGS: services windows
I was writing a test Windows Service and accidentally removed it
through the Programs and Features dialog, which removes the files, but
doesn't actually remove the service from the service list. So when I
tried to install the 2nd version of this test service it was
complaining that it already existed.
I looked around a little and found that I could delete the Service
from the registry in
~HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\[YourService]~. I
deleted the key (the little folder thingy) and it did show some
change, but my service was still there and the newer version still
wouldn't install.
After a little more looking around I found out that to fix it I could
use ~sc delete [YourService]~ to fix it. And it did!
Next time, though, I really should use the installer I used to install
it to remove it...