?

Log in

Random Ramblings
Recent Entries 
jdahlin has officially fired the PyGTK salvo for Python 3000, so I took the liberty of updating the package to beta 2. Enjoy.
11th-Jun-2008 08:58 pm - Everyone Loves Web Interfaces

Version 0.1 of fas-planet is now available. It needs the patches from FAS tickets 57 and 59 in order to work. Feel free to tear up the code and tell me what's wrong. I know I'm missing a lot of i18n, and the error-handling is sub-par, but I think I got most of it right.

And for the non-techies, here's an action shot:

5th-Jun-2008 09:25 pm - The planet awakens...

You're absolutely right Alex; it sucks. It sucks, it sucks, it sucks. Now, having said that, it is better (for some people, at least) than the scheme we had before, which is to say... no scheme at all.

In fact, I would go so far as to say that what we had was an antischeme. Sure, all you had to do was send your feed and hackergotchi URLs to someone and they would add it to their text file. While trivial for non-technical people to use, it has a couple of flaws:

  1. It requires a person on the other side to do some work. If they're busy or on vacation, you're not getting added to the Planet.
  2. It requires said person to maintain a text file containing a rather large number of entries. The tedium is astounding.

Now, you could throw more people at the task, but that has diminishing returns beyond approximately 3 people (No, I have no scientific proof for that "fact". Read some Brooks if you want more details about my reasoning.).

But the simple truth is that we already have this handy web app that we use to handle our accounts. Why not let it handle the necessary data, while still allowing a self-serve scheme? Let it collect the data, and store it, and process it, and fold, spindle, and mutilate it. After all, that's what machines are good at (heck, that's the only thing they're good at). FAS2 already has a plugin system (although I don't believe that it's been battle-tested), so now we just need someone to actually sit down and write it.

Needed, actually. I've decided to sit down and write it myself. I can't guarantee that it will appear in a timely fashion seeing as to how much I have to learn/figure out, but, it'll be there. And hopefully far less sucky.

30th-May-2008 06:05 am - A long-overdue update

Get it while it's hot!

Blah blah packaging bugs blah blah.

19th-Apr-2008 11:22 pm - A preview release of my own

Enjoy.

As always, packaging bug reports are welcome.

10th-Apr-2008 01:56 pm - O_o What? ... Oh fine...
[ignacio@ignacio ~]$ history | awk '{a[$2]++ } END{for(i in a){print a[i] " " i}}'|sort -rn|head
149 cd
99 ls
68 git
62 rpm
58 man
54 less
42 sudo
37 make
35 df
32 find
[ignacio@localhost ~]$ history | awk '{a[$2]++ } END{for(i in a){print a[i] " " i}}'|sort -rn|head
135 ls
90 rpmbuild
90 cd
82 sudo
59 less
57 vi
50 make
45 rpm
42 mock
33 rm

No, I still haven't named my laptop yet.

16th-Mar-2008 12:56 am - Security-enhanced Python
Time to put this down, now that I've had some time to think it over.

Imagine names in Python treated as files in SELinux. Yeah, that's SEPython.

More details as I actually get some of it done.
26th-Feb-2008 07:43 pm - My Landlord Must Die

So, I'm moving. Or rather, I'm supposed to be.

There aren't many suitable apartments around here at the price I'm looking for. I thought I had found a few decent choices, but they need a reference from my current landlord. The same landlord that only shows up once or twice a week. But I digress. I filled out all the information as far as I knew it, including my landlord's phone number. All good.

Fast forward a few days.

They've all attempted to verify my reference information. And lo and behold, the person at the phone number isn't my landlord. It's someone who's never heard of me, and is certainly not renting out an apartment at my location. Oh joy.

He showed up tonight, and I asked him what his phone number was. His response? "I don't have a phone." Of course, I know that he's LYING since I doubt he's talking to himself upstairs right now. And I can't just go "Hey F*CKFACE, what's your F*CKING PHONE NUMBER?!", for as much has he may deserve it.

So now I'm going to pay him half the rent twice a month until I get out of here. If he dares to refuse those terms then I'm just going to remind him of the apartments I was SO close to having, but lost because of his idiocy.

5th-Feb-2008 01:03 pm - git Madness!

This one's for you, Mike:

git pull
git branch -r live
git rebase master live
git push

And it further (only slightly-related) news, Fedora 9 "Sulphur" Alpha is out.

4th-Feb-2008 02:50 am - Drinking in L.A.

I finally got around to doing an update to my Bran Van Python 3000 package. It should now be mostly 64-bit clean.

C extensions will need some changing before they'll build. I'll let GeoIP-Python-1.2.1-py3000.patch from the python3000-GeoIP SRPM do the talking:

diff -up GeoIP-Python-1.2.1/py_GeoIP.c.py3000 GeoIP-Python-1.2.1/py_GeoIP.c
--- GeoIP-Python-1.2.1/py_GeoIP.c.py3000	2008-02-04 02:21:54.000000000 -0500
+++ GeoIP-Python-1.2.1/py_GeoIP.c	2008-02-04 02:22:27.000000000 -0500
@@ -22,7 +22,7 @@
 #include "GeoIP.h"
 #include "GeoIPCity.h"
 
-staticforward PyTypeObject GeoIP_GeoIPType;
+static PyTypeObject GeoIP_GeoIPType;
 
 typedef struct {
   PyObject_HEAD;
@@ -297,11 +297,16 @@ static PyMethodDef GeoIP_Class_methods[]
   {NULL, NULL, 0, NULL}
 };
 
-DL_EXPORT(void)
+#ifndef PyMODINIT_FUNC	/* declarations for DLL import/export */
+#define PyMODINIT_FUNC void
+#endif
+PyMODINIT_FUNC
 initGeoIP(void) 
 {
   PyObject *m, *d, *tmp;
-  GeoIP_GeoIPType.ob_type = &PyType_Type;
+  GeoIP_GeoIPType.tp_new = PyType_GenericNew;
+  if (PyType_Ready(&GeoIP_GeoIPType) < 0)
+    return;
 
   m = Py_InitModule("GeoIP", GeoIP_Class_methods);
   d = PyModule_GetDict(m);
@@ -328,11 +333,11 @@ initGeoIP(void) 
   PyDict_SetItemString(d, "country_names", cname);
   PyDict_SetItemString(d, "country_continents", ccont);
 
-  tmp = PyInt_FromLong(0);
+  tmp = PyLong_FromLong(0);
   PyDict_SetItemString(d, "GEOIP_STANDARD", tmp);
   Py_DECREF(tmp);
 
-  tmp = PyInt_FromLong(1);
+  tmp = PyLong_FromLong(1);
   PyDict_SetItemString(d, "GEOIP_MEMORY_CACHE", tmp);
   Py_DECREF(tmp);
 }

This page was loaded Feb 22nd 2017, 5:48 pm GMT.