Uploaded on Mar. 30, 2008 |
Uploaded on Mar. 20, 2008 |
Uploaded on Dec. 25, 2007 |
Uploaded on Dec. 25, 2007 |
Uploaded on Dec. 25, 2007 |
Uploaded on Dec. 25, 2007 |
Uploaded on Dec. 25, 2007 |
Uploaded on Dec. 25, 2007 |
Uploaded on Sep. 11, 2007 |
Uploaded on Sep. 07, 2007 |
|
|
|
A few days ago I ordered 4 pillows from Amazon.com. When they shipped, I noticed right away that they shipped in 4 different packages. I immediately became suspicious, and couldn't wait to see what these things looked like. That's my Amazon Prime hard at work ($79 a year for free two day delivery on unlimited packages).
So, today they get here. Indeed, they're in 4 different packages. And they're HUGE boxes! I'm like "Holy s@#%, what did I get myself into?!?" I pictured getting rid of my bed and using just the pillows at this point; the boxes are literally that big. Hardly containing my cool, I tear into the first one. This is ridiculous. About a half a box of AIR WRAPPING and a normal sized pillow underneath. I was thrilled that my pillows didn't break during the shipping process, and I have Amazon.com and their air wrapping to thank for that.
I ordered four because originally I ordered three but could only get pillowcases in sets of two. They really f@#%@ed me over on that one. It's like hot dog buns and hot dogs. Twelve dogs and eight buns (or is it twelve buns and eight dogs???) Brutal. However, my original choice (guess) at pillows were backordered so I ordered a different brand, and this time four, because I wouldn't have the slightest clue what to do with an extra pillowcase. Maybe make a shirt out of it? I don't know. Probably give it to good will.
My brother gets home before me, so he checks the mail, and outside (we live in a trustworthy neighborhood) are these four gigantic boxes. He's like "What did this kid get this time?!?" So, he figures he better get them in. Assuming they'll be heavy, judging from the size, he gets ready for the strain. He bent over, grabbed a hold, and took one last breath before really putting all his might into lifting up these packages. I'm happy to report we didn't have to retrieve them from the roof today :)
Moral of the story: Packing guys really do care if your stuff gets to you in one piece. |
|
|
|
|
|
|
|
|
| Not really but close. Elder Scrolls IV: Oblivion has me hooked, it's a wonder two years haven't gone by already. I can write up a huge description of it, but just go visit my Google Pages page instead!! There, you will find nothing related to Oblivion. The end. |
|
|
|
|
|
|
|
|
Check out this GEM!!! I can't believe out of the 7 billion people out there, I am the first (with $35 and Internet access, and English speaking, and an interest in "movements" and domain name registering) to think of it!
OfTheWorldUnite.org
With a little Sub-domain action, it's a bazillion domain names in one!!
HockeyFans.OfTheWorldUnite.org
RedBeardedPeople.OfTheWorldUnite.org
StupidPeople.OfTheWorldUnite.org
PeopleWhoNeedMoreExamples.OfTheWorldUnite.org
You get the picture. If not, visit that last one, it's for you. |
|
|
|
|
|
|
|
|
Awesome week. On St. Patty's Day, went to Mara and Billy's apartment with a case of Harp beer (yummy, it was the first I've had of them), stayed there until around 7:30 waiting for Billy's sister with a bunch of people, pounding beers and joking around. Great times. Then went to see Blackthorn at the aforementioned Irish festival. There were a lot of Miller Lite kiosks set up... I mean, a lot. Like 30. In this huge clubhouse. We were already blitzed by the time we got there so the next 5-??? beers were just fuel on the fire. I felt great though. Irish music, lots of people there (I heard 1500 tickets were sold), a ride home, tons of beer, hardly any recollection. The things legendary nights are made of.
The next two days were allotted recovery days. I needed them too.
I had asked off Thursday and Friday, and being a contractor, I'm not given any vacation like regular employers are, but I can take days off and / or be sick, just like regular employees. Even take a 3 month vacation if I wanted to. I just don't get paid :p Mara calls me up on Thursday night after my parents had taken me out for dinner. She's like "Hey, I have a lot of left over beer, wanna come over and help me finish?" They had to work the next day too! We stayed up until 1am, drinking and playing @#%^hole, at which I am a master. I went from @#%^hole to president in one hand, after being @#%^hole the whole night. Then kept presidency for the last two hands, before we ran out of beer :-P I was like, "You guys are out of beer, I'm leaving ;-)"
Friday night was a great time too. My friend Anthony, who has a few years on me, was born 3/24, as opposed to the date of gods, 3/23. So close, Anthony... better luck next time. He had an e-vite going... meet down town, get wasted, watch NCAA basketball... lots of girls! I've not been known to pass up such invites... err, e-vites, rather. Good times had by all. It was a bit crowded until the Villanova / Boston College game ended in 'Nova's favor. In overtime. One of the bathrooms flooded, I asked the bouncer if we were gonna drown. Good times.
And the award goes to:
For most times kissed: Friday night... don't ask
For best/most vibe put out: Friday night. I just stood at the corner of the bar and put out the vibe (ala Jim Carrey in Dumb and Dumber), which was the reason for the first award :)
For most trashed I've ever been without actually blacking out and/or passing out: Definitely St. Patty's Day
For quietest night that was still a f@#%@#ing blast: My birthday at Mara and Billy's
For the best dance performance: St. Patty's Day, by a long shot. I don't remember much and there was Irish music there. I do remember one time this girl came up to me and told me to calm down!
For most embarassing moment: I'm never embarassed :) I'm sure I do things that would embarass my friends, though. They'll have to weigh in :-P
For best time: I don't know, different factors weigh in differently. I had different types of the best time each of the three nights. It ROCKED :-D
Lesson learned: Drinking should be done in moderation if you only want to get moderately hammered. |
|
|
|
|
|
|
|
|
Today I turn the ripe old age of three cubed.
Brief history of life since college:
Worked, partied, unemployed for a few months there, worked more, partied, made some trips to places like Cleveland and Delaware and Rochester, worked, had a few girlfriends in there, did some side work, wrote some software, learned some things, lived in a few places, worked at a few places, met a lot of people, made a few friends, then BAM I'm three cubed.
Although, I can only hope the rest of my life goes that slow. I know one day I'll wake up and be four cubed! So, today I ask, "Will you still need me, will you still feed me, when I'm four cubed?" That's how John and Paul really wanted the lyrics to go.
This part of the year is always the worst, health-wise. Last week, St. Patrick's Day, then six days later, my birthday. I'll be in downtown Philly this Friday... 19th & Chestnut. Supposedly they're going to have $3 SoCo & Lime. Should be rediculous, but it will definitely make me feel like death for the rest of the weekend. It took me until Monday to recover from St. Patty's Day, I'm sure this will be three cubed times worse. |
|
|
|
|
|
|
|
|
Ahh, March Madness. I entered a tournament over at the local sports radio station (perhaps you've heard of it)... 1700+ people. It's round two. I'm in 16th place. Really it's like I'm in 4th, because of the grouping. (Drexel Hill Voodoo REPRESENT!!)
The rules are as follows: 1st round, 4 points each game. 2nd round, 2 points each. I think the rest are 2 except for the final game. That sucks too because that one team (The Minutemen) went 16/16! They'd be up there but, instead they're tied with me. First place gets $3000.
This bracket started Thursday at noon, you had to have your picks in by then or you weren't playing. I signed up for the site at 11:53 PM that day, then noticed a clock ticking down. It had 3 minutes left. It was the time you had to have half of your first round picks in! I panicked. But I got them in and went 25/32 in the first round. Fun stuff. |
|
|
|
|
|
|
|
|
Ahh, St. Patrick's Day. On a Friday. When does that ever happen?!?
I was going to bring in my flask filled with Irish Whiskey and go to town during work, but decided against it because I'd be going to the bathroom all day :-P Honestly, I don't have a flask or Irish Whiskey, so I fibbed. But you know what I mean.
We're having an Irish dress contest in work. I wore blue jeans and a blue shirt. I was going to get a green jeff cap and an orange beard (my beard grows in orange for some reason anyway...), but I ran out of time. It won't be the first time I don't win something :)
During St. Patty's Day, I'm always reminded of the time that I had the chance to spend a month in Ireland. For work no less. I ended up not going because they wanted to bring back the other guy who was already there. Scott, a good friend of mine... the bastard. So I didn't go.
I'm bringing my camera tonight. I want the world to see what the Irish beer garden is. Holy crap I can't wait! Plus, listening to Blackthorn is always the best. It's music that you can't help but just go crazy to. I remember the first time I saw them. I was like "Ummm... yeah." But the NEXT time... hoo boy. I've seen them a ton of times; twice sober. The one time they played at a big park near us, and the other time at the high school. I don't recommend seeing them sober.
Happy St. Patrick's Day! Go Flyers!! This is gonna rock. |
|
|
|
|
|
|
|
|
I disabled the polls for now since apparently a computer program has been voting. And I've been getting random comments that are obviously attempts at spam, which might also be done with a computer program. Or it could be someone I know trying to fool me into thinking a computer program is doing it. If that's the case.. STOP!!
Not to mention spam mail. They found me. I had jumped ship on hotmail because I was getting loads of spam. Last night, I empty my gmail spam folder and go to bed. Around eight hours later, I check gmail... 31 new spam messages, all with the raunchiest, most disgusting titles. I'm going to put in a request to gmail to have an option to hide the fact that I have new spam mail. I don't need to know it's there.
Report to Gmail
I get tons of spam now for some reason. However, I can't avoid knowing about it. You know the old saying, Out of sight, out of mind. Gmail currently displays the amount of unread spam messages as bold text, along with the word "Spam". Is there a way I can not let Gmail let me know that I have Spam? An option to automatically mark it as "Read" or possibly not even have a spam folder, and just delete it, letting spammers know that their efforts are futile when sending to a Gmail account.
Thank you. I appreciate the excellent spam filter immensely. I would just rather not have to delete them every day and sometimes not even read the titles of these spam messages.
Another spam story! This one was by me. I was writing this program in work that would send an email from command line because apparently Microsoft doesn't have one built into their SMTP server... you have to have Exchange Server installed. But, it was to go along with "Performance Monitor" (perfmon.exe), as an action to take as part of an alert. Well, I tried to get it to work, and it just wasn't working. (My program was working, but it wasn't getting called by the performance monitor action... and NOTHING works when it's not running :p). I had it set up to email me and my coworker who works out of North Carolina, checking a system performance metric every 20 seconds. But, the metric was like "When CPU usage is over 2 percent", which is like all the time. So basically, if it had worked, we'd be getting emails every 20 seconds. But it DIDN'T work! So, I went home, blah blah blah, came in this morning, opened email, and found 4000 new emails!! Apparently the server restarted last night and that was what it needed to work. We were cracking up about it! |
|
|
|
|
|
|
|
|
This year, Blackthorn will host the biggest St. Patrick's Day celebration in the tri-state area. Authentic Irish beer, food, and plenty music and craic. The Springfield Country Club will be magically transformed into a bustling street festival in Ireland. Stroll around with friends, visit different pubs, equipped with your favorite Irish beers, pub-style tables and seating, Irish beer garden, Irish food, and to make sure you don't miss a thing, we'll have it all broadcast on Phantavision.
DON'T MISS IT!
Easy to get to from anywhere! Only minutes from the Blue Route, I95, and Route 1 ! ! !
(I can't wait to find out what an "Irish beer garden" is... you know what I picture... something out of Willy Wonka)
Blackthorn is a local Irish band. You can read about them here. They used to have an Irish (from Ireland) lead singer but he quit. They're awesome though.
I recently chatted with Zatko about it... he didn't think I was Irish!
Mike: you're not irish
me: "Connell" isn't irish?
:-P
Mike: i thought it was dutch
me: I'm more German but I have an Irish name
me: It's like "O'Connell" without the "O"
Mike: i thought it was Von Connell
...
me: see, even people with the same name as me are obviously Irish
http://www.riverhounds.com/roster.php?player=15
Mike: ha
twins |
|
|
|
|
|
|
|
|
I go to install OpenOffice.org (Commonly just referred to as "OOo"), and the install package for Linux is in RPM format, which is a RedHat invention, basically an installation package (usually you're just compiling source :p). I type in "which rpm" to see if I have rpm to install this thing. It says "No rpm in $path". "F@#%@#$#. I can't install OOo 2.0?!?!"
Ahh, but then I type in "emerge rpm". Gentoo has a software management tool called "Portage", and how you use it is to simply type in "emerge" followed by the software that you want. F@#*^ing A!! It takes a little while, since it checks for the dependencies, downloads all the source code, compiles it, and then cleans it. But, I'm talking 10 minutes ago I started this thing, and it's almost done. There were 2 dependencies to install before RPM. Take that Windows!!
Other times I've needed stuff on other Linux distributions, I'd have to search the web... pfff. That's like 2005 technology.
After 12 minutes, I try again...
which rpm
/usr/bin/rpm
It's miraculous
Wow, on another topic... OOo 2.0 is pretty sweet. I was using 1.1 or something forever. It has definitely improved, interface-wise. And I saved my first "OpenDocument" file!! I just opened my "Attachments" document and saved that as an ".odt", or "OpenDocument Text". Free, awesome stuff kicks ass. |
|
|
|
|
|
|
|
|
First off, it's like a bazillion degrees out
Second, I want to take off for my birthday, but it's on a Thursday so I wanted to then take off Thursday AND Friday. Is this generally acceptable? I can see if I say I'm taking off for my birthday, the majority of thought might conclude that I'm taking off one day. But, if I just say that I'm taking off Thursday and Friday, without specifying that it's for my birthday, then it seems more justified.
We're at a slow time in work, hopefully the client signs off on the next stage so we can get to work and I don't get finished everything given to me for one week at 3:38 PM on that Monday. |
|
|
|
|
|
|
|
|
I'm extremely disappointed to inform everyone that stringed.org has been treated to a significant upgrade... a security system. Well, I simply use the same security system as I had for this site, made no modifications to the inner code (since it's perfect), and now I have a per item per operation security system in place for stringed.org.
That "per item per operation" bit might be confusing. Basically, say I want to allow someone to edit News but not be able to delete it. Or to have full permission for News, Photo Albums and Polls but not for Downloads. I can do all that and I didn't have to change the old security system that I built. Why? Well, I would start out by saying I've seen quite a few hand built security systems in my 4-5 years in the professional business of software development to know what works and what doesn't. Or to pick the pieces that work from other security systems that might not be that great overall. As Picasso says, "Good artists copy, Great artists steal."
So what else is new with it, you ask with desperate anxiety... Hmm. I have listeners in there for when objects are saved and deleted. This is more for editing the security system, since it's kept, for quick lookup, in the application map. If I don't reload the registry after making a change, that change never takes place, as far as the security system is concerned. Also, it will be an important piece behind "Attachments". Although, I might just write a new engine for that.
Also, since you're dying to know, there was a bug on the form when I had two dual-select lists. Fortunately, this bug never made it off of my computer, as my wicked javascripting skills extinguished it when I found it. I have two dual-select lists on a "SecurityGroup" object, since Groups have a list of Privileges and also a list of Users. I've said too much :p
I had debated trying to create a new security system. This would be so I wouldn't have to create a new menu system, as the menu system relies heavily on the current security system. So, since I didn't want to write a new menu system, and a new security system, I was forced to think brilliantly into the current solution that doesn't change anything and does not restrict anything either. The menu will work, the forms will work, and the rest of the site will work just as it's supposed to, as you can see by going to this page. You will see "You are unauthorized to see this page." or something.
One other helpful change is for the lists that list an object that might have the same name as another object in the list, but have a foreign key "parent" that will be different. On the old version of the site, if you go to add a library, it lists books with just their title. But, you can't tell who wrote those books without first going to the book list and seeing. Now, they are listed with their "parent", in a book's case, Author. So, my book shows up as "Jason Connell - Orientation of Objects". You can see this illustrated here, along with the two dual select lists on Group. Basically imagine the list being "view add delete edit view add delete edit view add delete edit". That's why I added that :) But also, you can see it in my User list... A User for stringed.org has a foreign key to Author, making Author it's "parent", so now, the User will display "Author Name - Username".
It's pretty sweet. I am trying to think of other stuff that I did for it. I didn't have that much time this weekend with my neice Megan's Christening, hanging out with Kira, Caden, Ethan and Danny, and my brothers, watching lots of college basketball, etc. This week should be a big time of productivity, since I can finally start on Attachments!! They'll be neat. |
|
|
|
|
|
|
|
|
| You Passed 8th Grade Science | Congratulations, you got 8/8 correct! |
* Pats self on back *
Of course, this comes as no surprise to me. I just saw this thing here and had to see how much I totally ROCK at science. Not joking though, I subscribe to "Scientific American", and I regularly watch The Discovery Channel and the Learning Channel. Another reason for the complete devastation I razed on the 8th grade Science Quiz is that Math and Science were my favorite topics in school. NO WAY am I not ACING 8th grade science.
Oh, and possibly one more reason. My degree is in Science. I am a "scientist"... a "computer scientist", officially.
I never do those things, but I had to do this one... too much dedication to Science to ignore it. Like, if a show is on about Einstein, you bet your ass I'm watching it :) |
|
|
|
|
|
|
|
|
My site's been on and off very randomly. Today I went to add this awesome, funny, crazy news post, and my site was down, and now I forget what I was gonna say... but, I go to the website of my host, Nexpoint, and go to log an error, and I get this message.
And I'm like "Dang"... I tried to write down what I was going to write about, but all I could muster up was the following
So, as you can see, I'm distracted easily and apparently had nothing funny to add to the internet... nothing worth remembering for 9 minutes, anyway. |
|
|
|
|
|
|
|
|
We have this cafe downstairs at work. It's not affiliated with our office in any way, other than the fact that we're by far it's biggest customer, considering this company rents 2 floors out of the three in the building. The guy who owns the cafe is overweight and lazy, a destined-for-failure combination. He's alright though when he's not pissing me off, and when he's there helping his helper. They always have way too many people coming to order for the number of people they employ. Two people to serve 10 is not enough, especially when one is a lazy bastard. I have a few peeves about this guy...
Today, I go down to order, really early before anyone else gets down there, but I was too late... there were already 3 people in line... this normally equates to at least a 10 minute wait. And these people are getting wraps and other cold things... hardly does anyone get anything hot, they know better. Unless it's a hot special, which is already made. The kicker about today was there was only the dude's helper working! I knew I was in store for a wait. It took me 20 minutes to get my food. One person cannot do it, so where was the other guy?
I really don't know. But when it's him and his helper, it really doesn't make a difference. The dude will take your order while he's making someone else's sandwich. A few minutes later, when he's ready to make yours, he'll completely forget what you ordered and ask you again. Then he starts making it, then asks the next person what they want. The worst part about it is, he'll get your sandwich all packaged and ready to go and give it to you at the cash register. You get your money out, ready to pay and get the f#@%@# out of there, and he'll go take the next person's order (again, since he forgot) and start making it.
If it's just you, it's fine, but even if it's just you and people come in after he starts making your order, you can expect a delay. I'm betting another helper would work wonders... one to work the cash register.
Yes, of course, I still go there because it's a short walk away, I'm not gonna go out and spend $10 for lunch when I can go down the stairs and spend $6 for lunch... oh, and they have some kickass rye bread :) |
|
|
|
|
|
|
|
|
I took out the "Book" form for now, otherwise it would be a gigantic cluster@#%@@#, and I limit the file size to 1000 bytes (less than 1KB). Other pictures here and here.
And with that, stringed.org's underlying software is ready for some major overhauls!! There's this whole huge thing I want to do to it yet. |
|
|
|
|
|
|
|
|
I also got some movies, namely "Walk the Line". Who knows... deep inside I might be a Johnny Cash fan and not even know it!
And who the F@#%@# voted on my poll? There's 25 votes but only 7 or so people, two of which selected every option before submitting... |
|
|
|
|
|
|
|
|
Check out stringed.org NOW!! Updates include:
Customizeable actions - specify what a user can do with an object (add, edit, delete, view). You can see this in the book list, it shows a "view" link. If I don't specify "edit" for an object, the whole site has been updated to account for this, so you won't be able to trick the site into being able to edit something that isn't editable (or edible :-p )... or deleteable for that matter.
Lists are perfect - As well as the below mentioned "many to many problem" (which you can see at work on the "Library" form), all lists that are sequenceable can be sorted (See Chapters on a book and Books in a library). You can add a list to an object that hasn't been saved yet. (This was more of an "uncomfortable with the greatness of 'dumb'" situation, as I just had a line of code that said "if the object hasn't yet been stored into the database, don't process lists". You would have seen those repercussions yesterday if you logged on, but not anymore). Obviously, also, the subforms work perfectly.
Bitmasked int field - This can be seen at work on the "Library" form also. Right now it takes parameters for the values, but I will write plugins for it that it gets it from the database and shows them as checkboxes like they are now. There's also a corresponding output component for bitmasked integers.
Still a lot to do... I have to have it so you can specify something's a file field, and make a cool control for that, and there's probably other types of fields that I haven't accounted for yet.
Also, I registered the domain name that Salzburg will be found at later, but I can't tell you it. Secrets rock even more than progress. |
|
|
|
|
|
|
|
|
Some things you are so used to thinking about one way, that to think about it another way IS considered to be "thinking outside the box". Even if you were thinking about it wrongly before, and now are thinking about it correctly.
This happened to me sorta. It was more of a case of not making the obvious conclusion about something. All the facts were presented, sugar coated, with arrows pointing to a conclusion, but I only came to it through trial and error last night.
Databases are merely containers for data, and we have to use the tools that they provide (foreign keys, primary keys, indexes, unique constraints, SQL statements, etc) to really find out the meaning of the universe. Well, I didn't get to that point yet, but it was something close. The dreaded "many to many relationship" problem. I'll explain.
The simplest way to put it is that a many to many relationship is when one single object (we'll call it Object A) has many of some other object (Object B), but one of Object B can "be in" many of Object A. The best real world example I can give, using my "Library" model on stringed.org, is Book (Object A) and Word (Object B). A book will have many words in it, and a single word can "be in" many books (and in the case of Words, it can be in a book many times).
The simplest way to portray this in a database is having a Book table and a Word table, and then you have a "link" table (probably called BookWord) that has foreign keys to both a Book and a Word.
The way "dumb" was originally created, I had no functionality to handle "many to many" relationships. I had thrown in some XML to be able to handle it in the future, but never did anything with it. (Originally, I'd get lists of the "link table" object, with the references loaded, and then populate the list that was part of "Object A" with the list populated full of "Object B" objects, all manually, everytime I needed it. My News object has many categories, and a category has many News, so I'd get a list of the link table "NewsCategoryNews", and then grab the "Category" part of that object, and my News object actually had a list of "NewsCategoryNews" objects, instead of simply a list of "Categories", which it should).
Then last night, as I was creating a control and adding functionality to potentially handle "many to many" relationships, it dawned on me. With previously created tools in "dumb" (namely a MappedListProperty which says a certain object has a list of objects, as an Author can have many books [a one to many relationship unless you include functionality to have many authors write a book, which the model doesn't include]), the conclusion was obvious. A book has a list of Words!! I know, it doesn't seem brilliant, but now it all works. See, even if they are many to many, a book still just has a list of words, and a word has a list of books that it is in. All I had to do was simply add functionality to handle this, which basically meant to add some attributes to a MappedListProperty XML node, and override some functionality used when saving and loading a ListProperty. It was easy.
Now, a News object can have a list of "Categories", instead of a list of "NewsCategoryNews" (the link object). "NewsCategoryNews", the table and the object, still have to exist, however, because "dumb" still uses it to populate the "Categories" list for a News object.
I don't have that latest uploaded yet, but I will tonight. It works beautifully. Right now I have the model set as "Books can have many Genres" (a genre is like "Suspense", "Horror", etc), and "A Genre can have many books". All I do is specify, in books, and actually in the "Genres" list property, is that a book can have many Genres, but also a Genre can "be in" many books. I specify the "link table" to use for the many to many relationship, and it's smooth sailing after that.
So to review: Many to many relationships cannot be handled with just 2 tables. You need 3. The two tables to be linked, and the link table. So to represent it in software, you just need to specify that there's a link table, and handle it accordingly. Side effect: Never write unnecessary code again :) |
|
|
|
|
|
|
|
| December 2008 |
|---|
| Sun | Mon | Tues | Wed | Thu | Fri | Sat | | | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 8 | 9 | 10 | 11 | 12 | 13 | | 14 | 15 | 16 | 17 | 18 | 19 | 20 | | 21 | 22 | 23 | 24 | 25 | 26 | 27 | | 28 | 29 | 30 | 31 | | | |
| November 2008 |
|---|
| Sun | Mon | Tues | Wed | Thu | Fri | Sat | | | | | | | | 1 | | 2 | 3 | 4 | 5 | 6 | 7 | 8 | | 9 | 10 | 11 | 12 | 13 | 14 | 15 | | 16 | 17 | 18 | 19 | 20 | 21 | 22 | | 23 | 24 | 25 | 26 | 27 | 28 | 29 | | 30 | | | | | | |
 |