Home | Sigma | Efendi | Picasa | Cluster 2 | Cluster 1 | Dad | EZ | Meta

Nodes tagged efendi

...And the New One
Posted 11.18.11 at 07:04 PM UTC
Tagged efendi | # | Comment [0]

No more butterscotch!

Just Indulge Me For A While
Posted 11.14.11 at 07:25 AM UTC
Tagged efendi | # | Comment [0]

Aside from the beautiful HTML that is generated by efendi directly (I'm not screwing with my templating engine), this new design is pretty much authentic ancient HTML, circa 2.0 or so. No stylesheets, background set on the BODY tag, classic stuff.

I have a real classy template I'm working on now in parallel, so enjoy my under construction view for a while!

Do We Have a Winner?
Posted 06.15.10 at 04:24 AM UTC
Tagged efendi, teddy | # | Comment [0]

Teddy has handled over 630 requests from Yandex, an obviously irresponsible and crappy Russian search engine, in the past three days. Although quite a few were apparently just before I applied my fix to Efendi, it's a good sign that I held up against the last attack.

The last hammering ended about 23 hours ago as of this writing:

CPU Graph!

I am almost certain that CPU activity at this scale for this long would have taken me down in the past.

Efendi 1.0.3: Wacky Wallaby
Posted 06.13.10 at 02:28 PM UTC
Tagged efendi | # | Comment [0]

In a nod to the international festival that is the World Cup, I have decided to make it easier for those wily Chinese and Russian search engines to index my blog. So, I have finally externalized the RSS feed update process, which at least in my empirical testing has caused a significant gain in request-by-request performance.

We'll see how it holds up.

Efendi 1.0.2
Posted 09.19.09 at 06:34 AM UTC
Tagged efendi | # | Comment [0]

Efendi, fortunately for my database, has always used UTC time for its inner workings. It now ensures this (in case of a different server configuration) and reports UTC as the time zone with every output of time.

Efendi 1.0.0!
Posted 07.27.09 at 04:30 PM UTC
Tagged efendi | # | Comment [0]

Efendi 1.0.0 is out! Take a look at the fancy feed integration... a Picasa link should be folded into the blog a bit down this page as long as this post is toward the top of the front page.

At this point, Sigma, Cluster, and Picasa updates will be provided whenever they show up.

Mood: Joyful

Efendi Nearly Complete
Posted 07.27.09 at 12:11 PM UTC
Tagged efendi, cluster, me | # | Comment [1]

In accordance with my somewhat obsessive efforts lately to clear my personal to-do list, my fabled blog software is quickly reaching version 1.0. The Picasa and Google Code integration is working just right, and I only have a plugin to handle Cluster's RSS feed left to complete tonight or tomorrow evening.

Actually writing Cluster is next on the to-do list, besides setting up a dropbox account to handle file serving for the blog (saving the need to develop a file manager for Efendi). I am kind of relieved to be writing content finally, given that this weekend featured two different projects both providing technological lily-gilding without ever touching actual story material.

I finally got a TrueCrypt volume set up to my liking to hold business documents, and I scanned quite a few new things in. I should have done this years ago: having a PDF of your birth certificate, passport, etc. can come in quite handy when you're filling out forms online or otherwise.

My scheme for TrueCrypt is very emergency-focused, meaning I didn't want some ridiculous 25-character password between an authorized someone and the data. So I took advantage of the "keyfile" functionality in the program to use a small encryption key placed on a tiny USB flash drive. If the drive is plugged in, the volume decrypts. If the key is absent, the program forbids access.

A cryptography expert will likely say this is kind of insecure. I tend to take what I feel is the ultimate pragmatic view on encryption, so I'm cool with whatever "risk" I am assuming here.

I plan to improve the process using this creative method, which makes sure my little key drive will always bind to drive K:. This could prevent some mix-ups if multiple drives were plugged in.

A Nice Little Python Story
Posted 06.16.09 at 06:36 AM UTC
Tagged efendi, programming, python | # | Comment [1]

I talk quite a bit about Python recently, partly because it's the only language I'm actively using right now aside from VBA. I was doing a little gedankening (it's a gerund now!) this morning about folding RSS feeds into the main content stream of Efendi.

Typically, if you are throwing around what just instinctively feels like a classical computer science problem, you need to start just absently paging through Python documentation looking for an official solution to your problem.

It seems a little esoteric at first, but my problem is a fairly classical one when broken down:

Let's substitute numbers for dates to make things easier to read, and I'll depict it below:

Main list:

30 - Cookies
42 - Brownies
45 - Key Lime Pie
49 - Lokum
52 - Jello
58 - Fruit Salad
60 - Baklava
75 - Carrot Cake
88 - Chocolate Cake
92 - Ice Cream

Let's take the second slice of four:

52 - Jello
58 - Fruit Salad
60 - Baklava
75 - Carrot Cake

If we were folding RSS entries into this list, we would only want "dates" between 50 and 75. A date of 49 would be above Lokum on the first page, and a date of 76 would be above Chocolate Cake on the third page.

Anyway, I now need some efficient way to do this slicing.

Enter bisect, a nice little module tucked away in the mathy part of the Python library docs. Its function is to calculate where a certain item should be inserted into a sorted list to retain sorting order. Sounds like the solution.

But, we're dealing with RSS feed items, not raw numbers. This module will have to compare things, so what to do?

In C++, you might have a remote shot of using operator overloading.

In Python, just monkey patch the RSS library. What? Monkey patching means overwriting or adding functionality atop an existing library. So, Python tells you to implement a class function called __cmp__() to override or add comparison functionality. You just have __cmp__ look at the dates of the posts to derive the comparison.

For non-programmers, it is probably hard to see the appeal of such flexibility. In fact, it might be expected that there has been this kind of flexibility in programming for a long time. This is not the case.

In C, you get errors or warnings trying to convert figures from decimals to whole numbers. And there is a compiler switch called pedantic to make it even worse.

Python is freeing, as is Ruby, and also JavaScript (which is much better to write when there's a toolkit like jQuery to help with browser compatibility). It says "if it can work it will work," which is much different than getting your knuckles wrapped for initiating an implicit forced coersion on type int, or something like that.

Efendi 0.1.2
Posted 06.12.09 at 05:55 PM UTC
Tagged efendi | # | Comment [1]

I'm pleased to say that Efendi 0.1.2 is running live on the server. I now get e-mails when people comment, my password field is auto-selected when I go to the login page (which is really a lot more important than it sounds), tag suggestions, commissions are working, and I can edit my design template without shell access. Among other things.

It's basically finished. Feeds will probably single-handedly consume 0.1.3, followed by a very lightweight file manager, finally an implementation of list nodes by tag, and the afterthought of RSS generation.

Progress and More Progress
Posted 06.10.09 at 10:02 AM UTC
Tagged efendi, turkey | # | Comment [2]

Comment moderation (AJAX-y, I might add) is fully enabled and functional, riding around on my USB stick until I get back to a non-firewalled connection. Git has really been a boon for working between firewalled and unfirewalled locations. I can still make my commits, branches, merges, etc. without an accessible server.

Things have been pretty terrible at work lately, but they're looking up significantly now. I've found another time management hint: Outlook's "timeline" view for messages is a good way to know if you're letting something slip through the cracks.

I started up Chrono Trigger yesterday, which always feels good. I'm going to try to avoid grind-levelling this time. I want to know how hard the game really is. We just did that with Secret of Mana and really didn't have a problem at any point in the game.

By the way, another interesting part about playing with Efendi from work is that I get to see all the cute little quirks that IE6 offers, before actually getting the code checked in and pretending that it works okay.

Some of them are preventable (strange treatments of CSS classes and attributes), and some are just broken (like sizing of textareas). The input box I'm using now to type this has a horizontal scrollbar thanks to IE6. Oh, well. At least the thing works, even the AJAX (thanks to jQuery).

Next >