Brandon's Blog
7/3/2009 #
Back Online
I feel like I’ve been maintaining radio silence for the last week. Things have been hectic but ended quite successfully yesterday. Today is kind of a ghost-day, as my to-do list only has three items: one is “find out how something works”, another is “look at European market statistics”, and the final is “get data from someone and send to someone else”. My calendar (Euro-English: “diary”) is empty.
I have decided to go ahead and break ranks and put my punctuation outside the quotation marks when not typesetting dialogue or the like. My leadership class tells me the most sophisticated way to influence people is to model the good behavior, so away we go.
It turns out I am now fully legal to work in Turkey. My Turkish really breaks down in highly technical or legalistic situations, so my best guess is that I am waiting on some social security stuff to get worked out here locally, then I should be migrated to local payroll, given my meal card at last (paid lunches is a statutory workers’ rights thing here), and in general start being compensated (in a wholistic sense) consistently with what my offer says.
I have to commend Shell for being fair during this process. Some things I would say we made hard on ourselves due to personal convictions: I was unwilling to ride my expense account as long as I was probably justified to do so, and I definitely didn’t want to get into the probably quite typical expat excesses of purchasing/renting extraneous sets of furniture and the like to avoid awkward transition time. The HR guidelines manage to make things relatively equitable for people in my situation, as well as those who are travelling so much they are nearly an expat by default.
But in the end, what is coming is more convenience than a massive justice thing.
I went through the somewhat elaborate solo adventure of getting a checking account set up here. I finally decided on Garanti as my bank, which is very expat-friendly. Most of the contractual stuff was in English and Turkish, so I know what I signed!
Garanti is the bank here that was running commercials with an Obama impersonator pumping their “low” (> 12%) interest rates for car loans and such. Banks here have been highly profitable throughout the crisis.
They have a nice presence and good locations (one kind of close to work, one kind of close to home). Yapi Kredi, my other choice, may have been more convenient, but they were probably going to be less friendly to my concerns as a foreigner. But, they do have a satellite branch on the ground floor of my building, so I walked away from a lot of convenience there.
There really isn’t a whole lot else to report. About 1,000 petrol dealers marched on Ankara two days ago demanding release of the price cap, and we are doing what we can to re-establish a viable business model for our shareholders despite the capricious interference with a highly competitive, fair business.
6/29/2009 #
Take a Walk in My Wooden Shoes
It’s nice to be home after a fairly long, draining trip to the Netherlands. It was a good training program, and I was very glad to finally be able to make it. Noordwijk was a very pretty beachside town, and Amsterdam slightly exceeded expectations. I would probably travel there just to see the Van Gogh museum, but touring there is mainly about getting a feel for the city and touching some of the history. Climbing up the bell tower in the Westrkirk was also a nice experience.
I got back to the office today to find that the Turkish government has capped the price on gas in a populist lunge at the oil industry. The cost of this is enormous and will likely leave some big-time damage in the broader market (even with the independent dealers). You can almost feel all the net present value models shifting downward as you sit in the office.
The more I work under my new time management methods the more I believe in them. The inbox is really the enemy.
6/19/2009 #
[Insert Dutch Reference Here]
I don’t know a good joke for going to the Netherlands. Wooden shoes? Maybe I’ll pick something up while I’m there.
We leave today for Amsterdam, to spend the weekend in the city center. We then take a train and bus out to Noordwijk (your guess is as good as mine: I’m saying Nord-why-k for now) for a week-long training/development thing that I’m about one month away from being technically barred from attending because of my longer tenure with the company.
My prior attempt to attend (in the Woodlands - not nearly as interesting) was foiled by that pesky hurricane.
We’ll see a few museums, probably ride some bikes, and get rained on a bit. Kristin will have a full week of shopping, windmill watching, and whatever else she can figure out to do.
I think I’ll save The Hague for a future trip, as I will likely be there at some point on more substantial business. It would probably be a train ride to get there from Amsterdam or Noordwijk… I really don’t know how it would best be done.
That will be fun, but I’m even more excited about our trip to southern Turkey and the Greek island of Mykonos, which will occur in mid-July.
Turkey follows the European model of crazily-long vacations in July and August. We’re going to take a few smaller ones and keep everything diversified a bit.
Work is much better now. Things have been really crazy with the government. I suppose the decisions will be finalized over the weekend and I might be able to talk directly with facts, but I would summarize that the Turkish market is seeing some drastic changes in atmosphere right now.
Feeds in Efendi are on a break right now so that I can actually have some waking free time at home. The AKP (ruling party in Turkey) is creating long working hours for me!
6/16/2009 #
Still Not Practical
I have finally found at least a remotely justifiable reason to get one of these:
With new DVD players having USB capabilities, you could actually use a Gumstix to provide a USB bridge to a shared network drive full of DivX movies or the like. It would effectively be a LAN bridge for your DVD player, without the DVD player having to support such a thing.
There are better ways to do this, but this way would be fun.
6/16/2009 #
And Also
Cluster is not on the page because Cluster does not currently exist on the server. It’s backed up like ten times in various places, but I’m really hoping to reimplement it in Python soon (or at least better PHP). I had high hopes for 2.0, but aside from the improvement in look and feel I don’t think we’ve had a single post go up without manual intervention on my part. This will be fixed soon.
Then I’ll update the darn thing!
6/16/2009 #
A Nice Little Python Story
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:
- We have an ordered list of blog entries, sorted by date
- There are zero or more other lists, not necessarily in date order, involving things like Picasa pictures, Google Code commits, Cluster updates, etc.
- We slice the primary ordered list to show, say, the fourth set of 10 items (this would be page four on the blog if there were ten nodes per page)
- We want to fold in (my word picture on “fold” is like putting the whipped cream into key lime pie filling, umm umm, don’t think about that in the morning when in a Central Asian country!) any entries which fall in between (or immediately above) the entries in the sliced list
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.
6/12/2009 #
Efendi 0.1.2
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.
6/10/2009 #
Progress and More Progress
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).
6/8/2009 #
It's Exciting
I am having trouble looking at my live install of Efendi 0.1.1 right now, because the working progress toward 0.1.2 looks so darn good. In addition to some big-time code cleanup, we now have a full-blown templating system and live tag suggestions as you type. The site template can also be uploaded or updated online now, with no filesystem access. The admin site also finally notifies you upon success (since response time is so fast it’s quite hard to tell sometimes without this).
I have conceptually redesigned the “commissions” system (inviting guest authors to post an entry). There will only be one open commission at a time (at most), which really streamlines the way everything will work on the back end. It’s a small price to pay to get what is a valuable but probably lightly used feature implemented with low overhead.
E-mail announcements are kind of fish in a barrel at this point, meaning I can focus my last-push energies primarily on feed management and display, which was the point of this project in the first place. It’s going to be lovely.
I am really amazed with the speed (when I’m not at work, of course). I was afraid Python might be a bit high-overhead, but clearly it’s beating the socks off TxP. I’m considering turning on template caching and see how much more I can squeeze out of the engine.
What’s next? Comment moderation will probably be the 0.1.2 landmark. Then comes the grunt work around feeds, commissions, and e-mail announcements.
6/6/2009 #
Efendi 0.1.1
The whole templating backend has been reworked, probably speeding things up yet more and making it all pluggable/adaptable.
> Newer Posts
< Older Posts