'Geek' Archive

flock…2 years later

April 22nd, 2008

I installed flock today. This isn’t my first time installing flock. In fact it may be my third, fourth, or fifth time. While flock has come a long way, I can’t help but think that articles like this one written last week remind me a lot of one a tiny one I wrote over 2 years ago.

What’s my point? No clue, maybe just gratuitous links to old posts of mine? Or maybe something about how disruptive technology isn’t about taking over an industry as much as challenging and building community. Flock’s better because firefox’s better because IE’s better because flock’s better….

Hide your feedback loops

April 17th, 2008

Neil posted today about restaurants and the challenge they have getting real feedback, assuming they’re one of the rare few who actually want feedback. The way we’ve been tackling feedback in BrainPark is to try and hide it from our users. Hide sounds a tad malicious but all that I mean is make feedback part of the application instead of soliciting feedback from users with forms and other garbage.

A somewhat trivial example, let’s say you’re building a code search tool for your intranet. You want to know when you’re search algorithm sucks and when it works so that you can improve it based on hard facts. What do you do? Add a “Did these search results help you?” form right? Ewww!

Build the feedback into your application. In this case, add an X beside each search result that allows the user to make that result go away. For the user, they can refine and shape the results to give them more value and reduce the noise. For you, you can now create reports that show your team precise examples, with real data, of where your search is failing.

If you could somehow add a similar feature that allowed the user to say ‘I should have saw this in my search results’ then you’re in even better shape. Now all your design/dev team has to continually reduce the amount your users have to ‘fix’ their search results.

More Solr MultiCore

April 15th, 2008

The MultipleIndexes wiki page may, or may not, contribute to the previous post…

“There are various strategies to take when you want to manage multiple “indexes” in a Single Servlet Container”

Solr Searching

April 15th, 2008

search.jpgAfter previous experiences with lucene.net, which weren’t all bad, I’m enjoying experimenting with Solr.

“Solr is an open source enterprise search server based on the Lucene Java search library, with XML/HTTP and JSON APIs, hit highlighting, faceted search, caching, replication, and a web administration interface.”

It was very simple to get an instance running locally with jetty and I had a test python client connected and searching using simplejson within minutes.

Here’s my question. I’m curious how applications are using MultiCore on Solr and what limits they’ve been able to take it to.

Let’s say you’re building an application like SalesForce where you have a lot of clients who technically have no need to search across each other. As well, each client may have multiple indices, let’s say 3 for the sake of having a number. Do you?

  1. Use MultiCore to dynamically generate unique indices for each new client resulting in creating and managing 3*(number of clients) indices.
  2. Create 3 potentially massive indices which will clearly impact search performance.

Assuming Solr and MultiCore can handle #1 then it seems the clear winner to me. Anyone??

DemoCampGuelph5

April 9th, 2008

Your very very last reminder about tonight’s DemoCampGuelph5. It’ll be a fun night as always, say hi if you make it out.

MontrealPython

April 3rd, 2008

I’m planning on attending next week’s MontrealPython2 event. If you have any other suggestions on what I should get myself into while in Montreal, please let me know.

DemoCampGuelph5

April 3rd, 2008

We’re closing in on next week’s DempCampGuelph5. We already have a healthy list of people wanting to demo and I’m excited about how many new people we have interested in demo’ing. I love watching our core attendees step up and demo but I love new blood.

I still get questions about this event that I’d like to clarify. This event is completely and utterly OPEN! We want you to attend. All you have to do is show up, enjoy some free food and pints courtesy our sponsor communitech.

So stick your name on the list and come join us next Wednesday!

You do NOT have to demo. You do NOT have to speak at all. You can skulk in the corner if that’s your deal. When you are ready, however, we’d love to hear what you have to say or see what you can demo. These events are first and foremost about community. It’s a chance to come out for a pint, meet other people in our community working on similar projects, and actually see what some are working on. That’s it. Everything else is gravy.

Cables as Art

March 6th, 2008

I hate to admit it but I do like these pic’s

cable.jpg

python class confusion II

February 21st, 2008

Man am I’m glad I’m dumb. Seriously, I really need to ask more stupid questions here if these are the returns I’m going to reap.

Check out the comments there. The links eventually lead me to explanations involving ascii art. Seriously, when’s the last time you read a tech article with ascii art? I’m equal parts envious and concerned about the guy who wrote that. In either case his art was very helpful.

Thanks to everyone who took the time to read my dumb question and point me in the right direction.

python class confusion

February 18th, 2008

I’m sure this is explained quite clearly somewhere like here or here. Hopefully someday I’ll be pythonic enough to understand. In the meantime, this is confusing to me and a bit scary. I’m hoping someone can explain to me why I’d want this behaviour.

Let’s take a really simple class with one method. All that method does is creates a variable local to that method and then print it out. One catch, first I call a second method, passing in that variable, and change it within the scope of that second method. As expected, that has no impact on the variable in the calling method and the result when you run it is “local…”

class klass(object):
    def settime(self, s):
        s=’remote’

    def dosomething(self):
        astring=’local’
        self.settime(astring)
        print “%s…” % astring

if __name__ == “__main__”:
    c = klass()
    c.dosomething()

Modify the above, adding a class within that same method call, again attempting to modify it in the second method call. Again, do nothing more than print both variables out. My instincts do NOT have me expecting the results I get, which are “local remote…”

class me(object):
    def __init__(self, n):
        self.name=n

class klass(object):
    def settime(self, t, s):
        t.name=’remote’
        s=’remote’

    def dosomething(self):
        astring=’local’
        aclass=me(‘local’)

        self.settime(aclass, astring)
        print “%s %s…” % (astring, aclass.name)

if __name__ == “__main__”:
    c = klass()
    c.dosomething()

No, these aren’t my typical naming conventions.