<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5138087597266407078</id><updated>2011-11-28T23:55:57.159-06:00</updated><category term='jquery'/><category term='Sun'/><category term='MySQL'/><category term='javascript'/><category term='kb'/><category term='python'/><category term='Open Database Alliance'/><category term='creoleparser'/><category term='MPAB'/><category term='autolink'/><category term='MariaDB'/><category term='django'/><category term='text processing'/><category term='Meeting'/><title type='text'>Bryan's Blog</title><subtitle type='html'>Posts about django, jquery, mariadb and anything else I happen to think about.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bryanalsdorf.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5138087597266407078/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://bryanalsdorf.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Bryan Alsdorf</name><uri>http://www.blogger.com/profile/07116824564574113374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5138087597266407078.post-9004675372529884204</id><published>2010-07-02T13:17:00.000-05:00</published><updated>2010-07-02T13:17:59.686-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kb'/><category scheme='http://www.blogger.com/atom/ns#' term='text processing'/><category scheme='http://www.blogger.com/atom/ns#' term='autolink'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='creoleparser'/><title type='text'>Automatically Process Text in CreoleParser</title><content type='html'>We are using the fantastic&amp;nbsp;&lt;a href="http://code.google.com/p/creoleparser/"&gt;CreoleParser&lt;/a&gt;&amp;nbsp;in our&amp;nbsp;&lt;a href="http://kb.askmonty.org/"&gt;Knowledge Base&lt;/a&gt;&amp;nbsp;and one of the requests was to automatically link text such as "bug #1234" to the bugs DB. Luckily this is fairly simple to do, though I haven't found much documentation on it.&lt;br /&gt;&lt;br /&gt;To start, you will need your own dialect object:&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;from creoleparser import Parser, parse_args&lt;br /&gt;from creoleparser.dialects import creole11_base&lt;br /&gt;&lt;br /&gt;from .elements import AutoLink&lt;br /&gt;&lt;br /&gt;base = creole11_base(macro_func=macro_func)&lt;br /&gt;&lt;br /&gt;class MPDialect(base):&lt;br /&gt;    &lt;br /&gt;    auto_links = (AutoLink((('mwl', 'mwl[#&amp;#124;:](?P&amp;lt;mwl&amp;gt;\d+)', &lt;br /&gt;                             'http://askmonty.org/worklog/?tid=%(mwl)s', &lt;br /&gt;                             'MWL#%(mwl)s'),&lt;br /&gt;                             ('lwl', 'lwl[#&amp;#124;:](?P&amp;lt;lwl&amp;gt;\d+)', &lt;br /&gt;                             'http://forge.mysql.com/worklog/task.php?id=%(lwl)s', &lt;br /&gt;                             'MySQL Worklog #%(lwl)s'),&lt;br /&gt;                             ('mybug', 'mybug[#&amp;#124;:](?P&amp;lt;mybug&amp;gt;\d+)',&lt;br /&gt;                              'http://bugs.mysql.com/bug.php?id=%(mybug)s', &lt;br /&gt;                              'MySQL Bug #%(mybug)s'),&lt;br /&gt;                             ('lpbug', 'lpbug[#&amp;#124;:](?P&amp;lt;lpbug&amp;gt;\d+)',&lt;br /&gt;                              'https://bugs.launchpad.net/bugs/%(lpbug)s',&lt;br /&gt;                              'Bug #%(lpbug)s'))),)&lt;br /&gt;&lt;br /&gt;    def __init__(self, *args, **kwargs):&lt;br /&gt;        super(MPDialect, self).__init__(*args, **kwargs)&lt;br /&gt;        self.td.child_elements.extend([self.auto_links])&lt;br /&gt;        self.th.child_elements.extend([self.auto_links])&lt;br /&gt;&lt;br /&gt;    @property&lt;br /&gt;    def inline_elements(self):&lt;br /&gt;        elements = super(MPDialect, self).inline_elements&lt;br /&gt;        elements.extend((self.auto_links,))&lt;br /&gt;        return elements&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def create_parser(method='html'):&lt;br /&gt;    &amp;quot;&amp;quot;&amp;quot;Creates a parser customized for projects at Monty Program&lt;br /&gt;&lt;br /&gt;    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;&lt;br /&gt;    return Parser(MPDialect, method=method)&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;This is just setting up the dialect, the real work is done in the AutoLink element:&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;import re&lt;br /&gt;&lt;br /&gt;from creoleparser.elements import InlineElement, sanitizer&lt;br /&gt;from genshi import builder as bldr&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;class AutoLink(InlineElement):&lt;br /&gt;    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;    Used for translating text like bug#45 to a link&lt;br /&gt;    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;    &lt;br /&gt;    def __init__(self, patterns, tag=''):&lt;br /&gt;        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;        Patterns is a tuple of tuples, with each individual tuple containing&lt;br /&gt;        the following:&lt;br /&gt;            the code for this link, used in the regular expressions, &lt;br /&gt;                i.e. 'bug'&lt;br /&gt;            the regexp pattern to look for in the content, i.e. &lt;br /&gt;                'bug[#&amp;#124;:](?P&amp;lt;bug&amp;gt;\d+)'&lt;br /&gt;            the url to link to, in str formatting sentence, i.e.&lt;br /&gt;                'http://bugs.example.com/%(bug)s&lt;br /&gt;            the string to use as the title, i.e. 'Bug #%(bug)s'&lt;br /&gt;        &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;        &lt;br /&gt;        self.patterns = patterns&lt;br /&gt;        super(AutoLink, self).__init__(tag=tag,token=None)&lt;br /&gt;        self.regexp = re.compile(self.re_string(), re.IGNORECASE)&lt;br /&gt;    &lt;br /&gt;    def re_string(self):&lt;br /&gt;        return &amp;quot;&amp;#124;&amp;quot;.join([pattern[1] for pattern in self.patterns])&lt;br /&gt;&lt;br /&gt;    def _build(self,mo,element_store, environ):&lt;br /&gt;        return bldr.tag.a(self.alias(mo), href=self.href(mo))&lt;br /&gt;        &lt;br /&gt;    def href(self,mo):&lt;br /&gt;        &amp;quot;&amp;quot;&amp;quot;Returns the string for the href attribute of the Element.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;        for pattern in self.patterns:&lt;br /&gt;            if mo.group(pattern[0]) is not None:&lt;br /&gt;                return pattern[2] % mo.groupdict()&lt;br /&gt;&lt;br /&gt;    def alias(self,mo):&lt;br /&gt;        &amp;quot;&amp;quot;&amp;quot;Returns the string for the content of the Element.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;        for pattern in self.patterns:&lt;br /&gt;            if mo.group(pattern[0]) is not None:&lt;br /&gt;                return pattern[3] % mo.groupdict()&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;And thats it, creoleparser scans all text for the regular expressions you defined and replaces them with links.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5138087597266407078-9004675372529884204?l=bryanalsdorf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bryanalsdorf.blogspot.com/feeds/9004675372529884204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bryanalsdorf.blogspot.com/2010/07/automatically-process-text-in.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5138087597266407078/posts/default/9004675372529884204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5138087597266407078/posts/default/9004675372529884204'/><link rel='alternate' type='text/html' href='http://bryanalsdorf.blogspot.com/2010/07/automatically-process-text-in.html' title='Automatically Process Text in CreoleParser'/><author><name>Bryan Alsdorf</name><uri>http://www.blogger.com/profile/07116824564574113374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5138087597266407078.post-3044281382721113560</id><published>2010-01-18T15:10:00.000-06:00</published><updated>2010-01-18T15:10:59.673-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><title type='text'>Separating javascript from HTML (and automatically running it)</title><content type='html'>In the old days I wrote event handlers inline *shudder*, then I was enlightened by jQuery and separated event handlers from HTML. I still had a problem though, most of my javascript was still included in my HTML templates, just in a &amp;lt;script&amp;gt; block, like this:&lt;br /&gt;&lt;code&gt; &lt;br /&gt;&amp;lt;script&amp;gt;&lt;br /&gt;$(document).ready(function() {&lt;br /&gt;$('div.fancy_widget').click(some function here);&lt;br /&gt;});&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;div class="fancy_widget"&amp;gt;&lt;br /&gt;Something fancy that needs to be clicked here&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This is better, but still leaves JS mixed in our templates. A common solution is to put all your code in an external JS file (good) and run it for every page. jQuery is fast so for most part this doesn't cause problems but it doesn't seem right to me. Why would I want to try to bind an event to div.fancy_widget if that only appears on a few pages?&lt;br /&gt;&lt;br /&gt;This is my solution:&lt;br /&gt;Separate page / widget specific code into individual classes in an external file.&lt;br /&gt;&lt;br /&gt;external.js &lt;br /&gt;&lt;code&gt;&lt;br /&gt;function fancy_widget()&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;fancy_widget.ready = function()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;code&gt;$('div.fancy_widget').click(some function here);&lt;/code&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;In your HTML file, add "fancy_widget" as the class on your body tag:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;body class="fancy_widget"&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Run this code snippet (also in external.js) &lt;br /&gt;&lt;code&gt;&lt;br /&gt;$(document).ready(function() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // check the class of the body and try to execute the prep functions if there is a class defined for that&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $.each($("body").attr('class').split(" "), function() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this == '') {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (eval("typeof " + this) !== "undefined" &amp;amp;&amp;amp; eval("typeof " + this + '.ready') == 'function') {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eval(this + '.ready()');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;});&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;This will cause&amp;nbsp;fancy_widget.ready() to be called on any page with a body class of "fancy_widget". I also use this for page specific functionality.&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;I am sure this can be improved and extended but though I would go ahead and publish it.&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5138087597266407078-3044281382721113560?l=bryanalsdorf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bryanalsdorf.blogspot.com/feeds/3044281382721113560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bryanalsdorf.blogspot.com/2010/01/separating-javascript-from-html-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5138087597266407078/posts/default/3044281382721113560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5138087597266407078/posts/default/3044281382721113560'/><link rel='alternate' type='text/html' href='http://bryanalsdorf.blogspot.com/2010/01/separating-javascript-from-html-and.html' title='Separating javascript from HTML (and automatically running it)'/><author><name>Bryan Alsdorf</name><uri>http://www.blogger.com/profile/07116824564574113374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5138087597266407078.post-1731922612771488472</id><published>2009-10-30T11:39:00.000-05:00</published><updated>2009-10-30T11:43:01.964-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><title type='text'>Tweaking ModelForms in django</title><content type='html'>I try to use a lot of ModelForms in django, it makes things simple and keeps information in once place. However, sometimes I need to change one property of a field. The docs just suggest you define the field again in the form but this means you have to redefine all aspects of the field. Here is an easier way:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;class ProfileForm(forms.ModelForm):&lt;br /&gt;&lt;br /&gt;    def __init__(self, *args, **kwargs):&lt;br /&gt;        super(ProfileForm, self).__init__(*args, **kwargs)&lt;br /&gt;       &lt;br /&gt;        self.fields['details'].widget.attrs['cols'] = 100;&lt;br /&gt;        self.fields['details'].widget.attrs['rows'] = 12;&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5138087597266407078-1731922612771488472?l=bryanalsdorf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bryanalsdorf.blogspot.com/feeds/1731922612771488472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bryanalsdorf.blogspot.com/2009/10/tweaking-modelforms-in-django.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5138087597266407078/posts/default/1731922612771488472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5138087597266407078/posts/default/1731922612771488472'/><link rel='alternate' type='text/html' href='http://bryanalsdorf.blogspot.com/2009/10/tweaking-modelforms-in-django.html' title='Tweaking ModelForms in django'/><author><name>Bryan Alsdorf</name><uri>http://www.blogger.com/profile/07116824564574113374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5138087597266407078.post-6212380451596939914</id><published>2009-08-22T10:04:00.000-05:00</published><updated>2009-09-04T01:04:02.451-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Meeting'/><category scheme='http://www.blogger.com/atom/ns#' term='MariaDB'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Database Alliance'/><title type='text'>MP Team meeting in Majorca</title><content type='html'>So a few weeks back &lt;a href="http://askmonty.org/"&gt;my company&lt;/a&gt; had our first company meeting in beautiful Majorca Spain. Even though this is a resort location we worked hard planning the future of MariaDB. One great thing about working for an open company is almost everything we do can be put on our public wiki. You might especially be interested in our MariaDB's &lt;a href="http://askmonty.org/wiki/index.php/MariaDB51_release_plan"&gt;release plan&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Since I am not a MariaDB dev, my responsibility is to get our website ready for the GA as well as work for the &lt;a href="http://opendatabasealliance.com/"&gt;Open Database Alliance&lt;/a&gt;.  I decided to use django for the new ODBA site which has given me a chance to learn python and use framework instead of re-inventing the wheel.  Once I finish the project I will writeup my thoughts on django as I decide if I want to use it for other projects.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5138087597266407078-6212380451596939914?l=bryanalsdorf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bryanalsdorf.blogspot.com/feeds/6212380451596939914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bryanalsdorf.blogspot.com/2009/08/mp-team-meeting-in-majorca.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5138087597266407078/posts/default/6212380451596939914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5138087597266407078/posts/default/6212380451596939914'/><link rel='alternate' type='text/html' href='http://bryanalsdorf.blogspot.com/2009/08/mp-team-meeting-in-majorca.html' title='MP Team meeting in Majorca'/><author><name>Bryan Alsdorf</name><uri>http://www.blogger.com/profile/07116824564574113374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5138087597266407078.post-1533830848231124943</id><published>2009-08-13T15:03:00.000-05:00</published><updated>2009-08-13T15:12:26.931-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><title type='text'>django and AUTH_PROFILE_MODULE</title><content type='html'>This has been mentioned all over but for some reason I still made the same mistake everyone else did.&lt;br /&gt;&lt;br /&gt;When setting up a user profile in django, the value for AUTH_PROFILE_MODULE should just be the application name then the name of the model. For example, my project's name is "foo", the application is "bar" and the model is UserProfile. It made sense for me to put:&lt;br /&gt;&lt;pre&gt;AUTH_PROFILE_MODULE = 'foo.bar.models.UserProfile'&lt;/pre&gt;&lt;br /&gt;That gave me a "too many values to unpack error".  The proper value is&lt;br /&gt;&lt;pre&gt;AUTH_PROFILE_MODULE = 'bar.UserProfile'&lt;/pre&gt;&lt;br /&gt;Hopefully this helps someone out, maybe just me in a few months when I forget what I did.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5138087597266407078-1533830848231124943?l=bryanalsdorf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bryanalsdorf.blogspot.com/feeds/1533830848231124943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bryanalsdorf.blogspot.com/2009/08/django-and-authprofilemodule.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5138087597266407078/posts/default/1533830848231124943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5138087597266407078/posts/default/1533830848231124943'/><link rel='alternate' type='text/html' href='http://bryanalsdorf.blogspot.com/2009/08/django-and-authprofilemodule.html' title='django and AUTH_PROFILE_MODULE'/><author><name>Bryan Alsdorf</name><uri>http://www.blogger.com/profile/07116824564574113374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5138087597266407078.post-1907075868422785699</id><published>2009-08-05T12:24:00.000-05:00</published><updated>2009-08-05T12:54:12.406-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Sun'/><category scheme='http://www.blogger.com/atom/ns#' term='MPAB'/><title type='text'>OH HAI</title><content type='html'>I have been meaning to start blogging for a while but never made the time for it while working at MySQL / Sun. Now that I am at &lt;a href="http://askmonty.org/"&gt;Monty Program AB&lt;/a&gt; I am making time to share my random thoughts about technology, especially web applications and MySQL / MariaDB.&lt;br /&gt;&lt;br /&gt;I was at MySQL (then Sun) for 5 years, during that time my primary responsibility was providing tools for the excellent support team, primarily &lt;a href="http://forge.mysql.com/wiki/Eventum/"&gt;Eventum&lt;/a&gt; but also other internal items. My team also developed the MySQL Network portal (since rebranded to &lt;a href="http://enterprise.mysql.com/"&gt;MySQL Enterprise&lt;/a&gt;. My co-workers were great and I liked what I did but after the Sun acquisition I saw things changing and based on the number of colleagues who left ahead of me I wasn't the only one.&lt;br /&gt;&lt;br /&gt;In May of 2009 I left Sun and returned to startup culture, working with Monty at his new company Monty Program AB as Lead Web Developer. In such a small company there are a ton of different things to do and so far I have not been bored, always a new project to tackle and best of all I feel I make a difference.&lt;br /&gt;&lt;br /&gt;I probably will not be a prolific blogger (I actually want to get real work done) but when I start rambling it will generally be on my work here at MPAB or web development in general.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5138087597266407078-1907075868422785699?l=bryanalsdorf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bryanalsdorf.blogspot.com/feeds/1907075868422785699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bryanalsdorf.blogspot.com/2009/08/oh-hai.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5138087597266407078/posts/default/1907075868422785699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5138087597266407078/posts/default/1907075868422785699'/><link rel='alternate' type='text/html' href='http://bryanalsdorf.blogspot.com/2009/08/oh-hai.html' title='OH HAI'/><author><name>Bryan Alsdorf</name><uri>http://www.blogger.com/profile/07116824564574113374</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
