Tuesday Apr 08, 2008

Solaris, my evil girlfriend

Ever have girlfriend you can't live with, yet can't stay away from? Mine is trying to run Solaris on an obsolete Dell 1100 laptop, a topic on which I have blogged more times than I like to think about. 

I went to visit her again recently, after resolutely staying away for several months. Staying away was easy for a while, because I had a voluptuous new girlfriend, Mac OS X aka The Leopard Girl. She had been keeping me very happy for months, but one day last week I felt a need to take a walk on the wild side, and, feeling guilty yet excited, went back to Mistress Solaris.

Back in the day when our relationship was still working, we had been happily cohabiting on Build 57. We had even taken our relationship to the next level by downloading and installing applications from Blastwave. We had a few laughs, but then I wanted more....

A few weeks ago, I downloaded Solaris Express 1/08. The Leopard Girl, my enabler, made it all too easy to download and burn a DVD. I should have seen the warning signs of a sick menage a trois developing. 

Solaris Express (Build 79b) installed easily, up to a point. I thought there might be a chance to revive our relationship. Then, with a pouty grin, she refused to start the X-server, sticking me with just a command line. I checked her xerrors file, and she claimed she was missing a config file. A likely story. 

Last week, against my better judgement, and again enabled by The Leopard Girl, I downloaded and burned OpenSolaris Build 85.  Then our relationship really fell apart. The install hung after only a few minutes with "Extracting windowing system. Please wait...." And I waited... and waited....

Sigh. Now, like a fool, I'm sitting by the phone, I mean the computer, waiting for Build 86 to come out. I can't stay away. 

Wednesday Jan 09, 2008

White box hackers and Solaris Express Developer Edition

Especially here in Southern California, white box hacking is a way of life. With resellers on every corner hawking semi-underground components out of Asia, gamers building water-cooled monsters, and newegg.com right here in the OC, it's a definite scene. My buddy Tony Vigna, uberconsultant and freelance CIO, is a white box guy from way back, although his interests run more toward developing enterprise Open Source configurations that he can recommend to his commerical clients. Lately, I've been singing the praises of Solaris, and he perhaps unwisely has actually been listening to me. Unfortunately, he's encountered a lot of frustration for his pains.

First he tried Solaris Express Developer Edition on one of his white box configurations with a four year old video card. Didn't work. He was willing to let that go. Undeterred, he built up the following white box configuration of the following very mainstream, modern components:

Video  ATI Technologies  R430 [Radeon X800 XL] (PCIe)

Firewire  Texas Instruments  TSB43AB22/A IEEE-1394a-2000 Controller

USB  nVidia Corporation  MCP55  USB Controller

USB   nVidia Corporation  MCP55  USB Controller

Storage   nVidia Corporation  MCP55  IDE

Multimedia   nVidia Corporation  MCP55   High Definition Audio

Network   nVidia Corporation  MCP55  Ethernet

Storage    nVidia Corporation  MCP55 SATA Controller

With this configuration, SXDE 9/07 would not install, even though every device listed above was verified as being supported by the Solaris Device Detection Tool. The install bombed in the middle when it switched over to X11-based graphics, so the problem is probably with the video card, even though it is listed in the Solaris Hardware Compatibility List.

Nice guy that he is, Tony then downloaded  the Build 78 bits and tried again. Here's an excerpt from an email he sent me around 2 AM:

 "Found another problem with the SATA attached DVD ROM drives -- couldn’t find installation files.  He had to hook up an old Plextor USB DVD Drive to advance the installation.  Still DOA with the x800 though.  I might go out and get an NVIDIA 7300GT.  A crap card, but apparently it should work pretty easily.

"One thing the Open Solaris Community should do is publish a handful of reference configurations supporting the white-box hacker at different performance levels.

"A white-box Virtual Server, Database Server, Developer Workstation, CAD/CAM Workstation, etc."

Sounds like a great idea to me. If we're after developer mind share, we need to remember that developers don't just hack software. They hack hardware, too. A guy like Tony is in the position of being able to recommend hundreds of thousands of dollars in hardware, software and services to his  clients. Something to think about.

Tuesday Dec 04, 2007

Rage, rage against the dying of the bandwidth

It's been a bad week. The Check Engine light went on in my car. I'm scheduled for painful dentistry tomorrow. But the capper was when my Windows laptop contracted a virus. This set off a cascading chain of events that had me tearing my hair out. 

The virus cropped up on Friday. Symantec could see it, but not erase it. A full scan of the machine tied it up for a whole day, but accomplished nothing. And I had things that needed to get done at work. What to do?

Luckily (I thought), I had just acquired a Sun Ray for home use. Excellent! I could use that for my Sun tasks. Hah!

I pay a fortune each month for cable Internet service, and lately it's gone to hell. Every time some kid up the block decides to download the latest X-rated epic, there's no bandwidth left for me. The 1.5 megabits per second I'm supposed to get drop to near zero. I've lived with this for a while, but the Sun Ray was the straw that broke this camel's back. A PC can tolerate intervals of low bandwidth, because it can process data on its own, and wait to transmit it across the wire. Being dependent on a server for processing, when a Sun Ray is faced with low bandwidth it just freezes. Shutting it off and trying to log in again makes it worse, because you have to wait for the cursor to start blinking again to type the next character. Works for your login ID, but not for your password, because you can't tell how many characters went through. I know this, because I tried it several hundred times before the psychotic break that left me in a dissociative state.

Fortunately, the cable company has 24/7 customer service, so there was someone there to take my screamed order to send someone to rip out the cable modem. I had to wait until Monday morning to get hold of AT&T to sign up for DSL. I'm going to pay $10 a month less for four times the nominal bandwidth. Why didn't I do this years ago? My new DSL modem arrived by UPS in one day, and the technician was in my backyard today checking the signal strength. So long, monopolistic cable company! Ain't capitalism grand?

Things are looking up on other fronts, too. I took my laptop over to the Monrovia office, along with a dozen bagels from Panera Bread as a bribe, and my buddies in the MIS department put me at the head of the queue. At last report, the virus had been cleaned out, though there was still a problem with erratic browser behavior. Sun Ray was still deadlined for most of today, but I hauled out my experimental Solaris laptop, booted Thunderbird, and found that the combination of Solaris and T-bird was very comfortable with low bandwidth. Sun has been benefiting from my services all day.

I'm resigned to my dental work in the morning, BW has been helpful in restoring my shattered equilibrium, and the DSL is supposed to be operational tomorrow. Now all I need to do is get the Check Engine light looked at.


 

Sunday Aug 19, 2007

Deconstructing Solaris

Solaris is an unending source of amusement for me, possibly because I am rather easily amused. First I backed off from using the Java Desktop System in favor of the simpler FVWM window manager. Then tonight I thought, hmmm, why not try running with no window manager at all?

I'm actually kind of surprised that it worked. I logged into a Solaris failsafe session, which gave me a command line in a terminal emulator, but no desktop. Then, from the command line I just typed "Firefox", and here I am, typing in my blog. I can't move the browser window around, and there are no buttons to resize it or  minimize it. I can't even get back to the command line without closing Firefox. Now I see why people invented window managers.

But I can still write my blog quite nicely in a browser window that fills most of the screen. Sort of a minimalist, Zen-like Solaris experience.

This is way cool. I feel a bit like a medical student learning anatomy by dissecting a cadaver. I'm learning about Solaris by deconstructing it piece by piece.

Friday Aug 17, 2007

A little trick with FVWM

I was having a problem using the FVWM window manager that I had installed on OpenSolaris. Each time I opened a window from the command line, I had to open a new terminal window, because I was losing the shell prompt with each application I opened.  Thanks to Deborah and Eric Ray's Visual Quickstart Guide to UNIX, I've now figured out how to avoid this problem. For each new application you open from the command line, add an ampersand (&) after the name of the program, as in

bash 3.00$ firefox &

This runs the job in the background, at least as far as the command line is concerned, so it gives you another command prompt when the application opens. However, from the user's point of view, the "background" job can be interacted with in its own window like any application. I'm typing this blog entry in Firefox in its own window, and my command line is ready and waiting for any applications I care to request. I just have to remember to add the ampersand for each new one I open!

Saturday Aug 11, 2007

Weird and wonderful Solaris variety

One of the weirdest and coolest things about Solaris, at least to me, is that there are so many different ways to interact with it. Instead of presenting a single face to the world, like Windows or Mac OS, Solaris is a hydra with a hundred heads, and you can talk to any one of them -- or even create a new one. Case in point -- as I write this post I'm using Roller, but I didn't open the Java Desktop System to do it. I'm writing the post in a window that I opened in FVWM, one of the dozens of alternate window managers that UNIX and Linux have spawned. I downloaded FVWM from Blastwave.org yesterday, and followed instructions I found on a blog by Sun's own Brendan Gregg to get it running. Thanks, Brendan!

Why would I want to do this? I guess it's the same reason that sometimes I like to look at my email using Pine, and sometimes I like to speak Spanish. The freedom to choose one's mode of communication is something very basic. They can build the best monolithic desktop system on the planet, like the one I was fooling around with down at the Apple store today, but there are still going to be a lot of shadetree mechanics like me that are going to want to roll our own, and you'll find us down at the corner of Solaris Avenue and Linux Street, here in UNIX Town.

Monday Aug 06, 2007

An opening for Solaris?

There is a sea change under way in desktop computing that could be an opportunity for Solaris. Eric S. Raymond (esr) and Rob Landley wrote a very perceptive essay last year that argued that every time desktop computers have increased the number of bits used to store memory addresses, the dominant platform dies and a new one takes its place. They argue that BASIC was the lingua franca of 8-bit computing (regardless of OS), that the advent of 16-bit machines brought in MS-DOS dominance, and that 32-bit machines brought in Windows.

Now, with 64-bit desktops just coming in, Rob and esr speculate that whatever OS best handles 64 bits, and that has a big enough community writing device drivers, will come to dominance. They also argue, based on history, that this platform will continue to dominate until the next big paradigm shift occurs, which they think won't happen until at least 2050.

I happened to read their essay a few days ago, and thought it interesting, but highly speculative. Then I happened to read this article on CNET that seems to back up their conclusions! Naturally, esr and Rob are hoping that Linux becomes the new dominant paradigm, but why couldn't it be Solaris? Nobody knows more about 64-bit computing than Sun, and we now have a very active driver-writing community. Why not Solaris?

Saturday Aug 04, 2007

Another terrific UNIX bookl

My quest to find the perfect UNIX book is approaching an obsession. I'm only half way through Understanding UNIX, A Conceptual Guide and already I've gone and bought another. This one is Visual Quickstart Guide UNIX, Third Edition, by Deborah S. Ray and Eric J. Ray. Eric is a noted Sun engineer, so I knew the book would be good, but it turns out that Deborah and Eric have written more than a dozen books on software, and their expertise shows throughout. 

I wonder if there is something about male/female teams that produces great software books? Kathy Sierra and Bert Bates wrote the breakthrough Head First Java, and the brother-sister team of John R. Levine and Margaret Levine Young wrote my well-thumbed and beloved UNIX for Dummies.

The Rays' book takes more of a cookbook approach than I have liked in the past, but now that I have gotten past the initial learning stage with other books that explain everything in detail, I think this information-packed handbook is exactly what I need to have at hand when I actually sit down at the computer. Excellent!

I should note that the book focuses exclusively on the command line -- true classical UNIX. This is what interests me now, but as I move into learning about X and window managers, I think I will need yet another book. Or two. Or five. Obsession is a terrible thing.

Saturday Jul 28, 2007

Blastwave.org is my new best friend -- Or Persistence Pays with Pine

My latest quixotic quest, to get the Pine email program working on my experimental Solaris laptop, has had its intended effect, which was to force me to learn unexpected lessons about the Solaris environment and whatever else happened to pop up in the path to enlightenment. I find that solving each new challenge leads me down new and interesting paths. None of this would be possible without Internet research: maybe I should say that Google is my new best friend, now and forever.

As I wrote on July 7 (egad, have I been fooling around with this for 3 weeks?), I was having a mysterious problem connecting Pine to the North American Sun email server. From the the message, "Server disables LOGIN, no recognized SASL authenticator," it was evidently a security problem, but what? I started checking out obscure mailing lists, and asking around, to no avail. Finally, finally, I realized that more than one mailing list entry I'd already read held the answer -- I just hadn't believed it: the Pine binary that I was using had not been compiled to use the SSL and TLS security protocols, and the Sun email server required them. Sure enough, when I read through the Pine Help facility on my installation, there was actually a nifty little page that told me whether that particulary binary had been compiled to make use of the security protocols, and it had not been. Aha! Clearly, this is one of the pitfalls of not compiling your own binaries, but I'm not at that level of enlightenment yet. I had gotten the Pine 4.64 binary from the wonderful sunfreeware.com, the number one site for free software packages for Solaris, and my guess is that they compiled it without security because the majority of downloaders probably don't have to access an encrypted server like Sun's.

Where to get another binary that had been compiled for SSL and TLS? Fortunately, a kind commenter pointed me to blastwave.org, another treasure trove of Solaris binaries. It's a community-driven site, with hundreds of contributors, and it's filled with helpful articles. And yep, it has a Pine binary, maintained by none other than Sun's own Eric Boutilier.  I thought I was home free.

However, any time you're dealing with software, it ain't over until it's over. Lurking ahead of me was a landmine of diabolical subtlety.

Blastwave.org is more complex to use than sunfreeware.com. You have to download a program called pkg-get in order to download any of the hundreds of Solaris binaries they offer. And pkg-get is about the only program you download from Blastwave itself: you get the rest from one of  40 or so mirrors that are in operation around the world. Ibiblio.org is the default mirror, but the Blastwave site warns you that it is slow, and urges you to instead use a mirror that is close to you, so I obediently checked the mirror list  for a server near me. The closest one was at the University of Southern California, just a few miles away. Excellent!

In order to tell pkg-get which mirror to use, you have to edit a little file called pkg-get.conf. My vi skills are still rudimentary, so I approached this task with some trepidation. Then I caught a break, or so I thought.  Examining the file, I saw that all the 50 or so lines were commented out with the # sign, except for one that said "url=http://www.ibiblio.org/pub/packages/solaris/csw/unstable".  This was preceded by a comment that said it was the default mirror. Then came a comment that said the secondary default site was none other than USC, followed by this line:

#url= http://mirrors.usc.edu/pub/blastwave/unstable

This was too easy! All I had to do was remove the # from the USC line, and add one to the front of the Ibiblio line. Even so, between vi's weird modes and my fat fingers, this took a while. But I got it done, saved the file, and told pkg-get to go get me a Pine binary!

Nothing happened. Oh, there was an error message: "URL http://mirrors.usc.edu/pub/blastwave/unstable not found." What the @#$%!? How could this be? I typed the URL into my browser and went directly to the USC mirror site with no problem. What could be wrong? I was stumped.

This condition persisted for a couple of days. I tried various remedies, none of which worked, and concocted wild theories, like maybe I was supposed to do something with the commented-out firewall lines in pkg-get.conf. I consulted various mailing lists. But mostly I just stared glumly at pkg-get.conf, hoping for inspiration.

Finally -- finally!--  I saw the problem. It's hard to see in the lines above, but it's there: an unwanted space after the = sign in the USC line. The Ibiblio line doesn't have a space. What's maddening about this is that the bad URL is actually repeated in the error message, but without the = sign you just don't see it. I wondered if I had inadvertently introduced the offending space myself, but I checked another copy of the original pkg-get.conf, and there it was.

I removed the space, and voila! Pine downloaded from the mirror site, along with all the packages it depends on, another cool feature of Blastwave. Eagerly, I fired it up and checked Help to see if this version had been compiled with SSL and TLS support. Hurray! It had been!

I entered the Sun server's address into the Pine configuration file, saved, restarted Pine, and there was my Sun mailbox! Hee-hee!

Actually, it took me two tries. The first time, Pine helpfully explained in great deal that, for my own good, it couldn't let me into the Sun server, because the Sun server has a self-signed security certitificate, which I couldn't match. This could expose me to a "man-in-the middle" attack, which I already knew from one of the interesting byways I had wandered down during the weeks I was trying to get Pine going. That's what I mean when I say I have been forcing myself to learn unexpected lessons. Pine advised me that I could get around this by using the novalidate-cert option, which I had also already read about, and thus knew was a legitimate option. Once I did that, my Inbox opened up. One of my next steps will be to actually retrieve and install the Sun security certificate, but for now I am content with my working Pine instance, and the lessons I have learned.



Sunday Jul 22, 2007

Enlightenment from a 24-year-old UNIX book

BW and I were hanging out at Out of the Closet, a thrift store that raises funds for an AIDS assistance group here in LA. BW has an eagle eye for classic vintage clothes, and I like to peruse the used books. I came across a real gem: Understanding UNIX, A Conceptual Guide, by James R. Groff and and Paul N. Weinberg, published by Que in 1983. What a cool blast from the past! From page 1: "Exactly what is the UNIX system? Why do such intense interest and controversy surround it? How does UNIX relate to other microcomputer operating systems, such as CP/M and MS-DOS?" And from Page 2: "What are the relationships among the different versions of UNIX, such as System V, Berkely UNIX, XENIX, and PC/IX?"  No mention in the book of that little startup called Sun Microsystems, but it does say that "over a hundred different computer vendors offer UNIX or 'UNIX look-alike' products."

Oddly enough, I'm getting a lot out of reading the book, and not just quaint references to long-vanished UNIX variants. In 1983 the authors were writing about something that was exciting in its newness, and their enthusiasm makes the text come alive. I'm learning about the features that made UNIX important then, the ones we take for granted now because they've become part of every other operating system. And UNIX was simpler then, so I'm learning about what is most important in the system, without becoming bogged down in chapters about all the less-important stuff that's been added since.

The authors weren't kidding, either, when they called it  A Conceptual Guide. A lot of the UNIX books I've seen are too monkey-see-monkey-do for my taste, telling you what to do rather than why you do it. Understanding UNIX  is organized by concept, with chapters on the file system, the shell, file processing and so forth, with explanations of the underlying structure at every step. I like that. Maybe it stems from being over-educated, but I find that I have a much greater attention span when I understand the "why" of what I'm reading. For me, this is the best UNIX book I've come across. Sometimes older really is better.

Tuesday Jul 10, 2007

Unhelpful Sun help desk

Every once in a while I astonish myself with my own naivete. Last night I logged a Sun service desk ticket asking for help with my Pine configuration to access the Sun North American email server. Early this morning when I checked email (using Thunderbird), I was happy to see that there was a "Servicedesk request completed" message. Great! What fast service! Some helpful Sun support person, toiling through the night on the other side of the planet, had found a solution to my configuration issue!

Alas, it was not to be.  This was the message:
 

The following action has been taken on your ticket number [deleted]
Please read the comments and respond if necessary.
Action : Close
Taken By : [deleted]
Date/Time : Jul 10 2007 8:42AM

Service Providers' Comments :

Hi David,

Please be advised that this Product Pine is not supported via ServiceDesk, so
no further action can be taken by the Global Resolution Center.

This ServiceDesk ticket will therefore be closed.

Thanks

Oh, well. I know it's ridiculous to expect the Global Resolution Center to support every weird email client out there, even a legendary open source tool like Pine, but I couldn't resist razzing my Sun colleagues a bit. Heh-heh.
 

Sunday Jul 08, 2007

How to crash Nautilus in two easy steps

1. Search for a file using the Nautilus search facility.

2. When the results come up as file icons, click the drop down menu to switch to a list view.

Step back and watch the fireworks. Fun!

This occurs using OpenSolaris build 57. Your mileage may vary.

Saturday Jul 07, 2007

Problems with Pine email setup

I've been on vacation this week, just hanging around home with BW, and enjoying what LA has to offer. Tip for tourists: head for the Century City outdoor mall. They've completely refurbished it, and the food court is to die for. Each kiosk there would be a two-star restaurant anywhere else. The people-watching is great, too. 

The days off gave me time to fool around extensively with my Pine email installation on Solaris. No luck so far on connecting to mail-amer.sun.com, the Sun IMAP server. If I weren't so relaxed from vacationing, I'd be tearing out what's left of my hair. No matter what config changes I make, I still get this cryptic error message:  "Server disables LOGIN, no recognized SASL authenticator."

Oh, well. I've learned all kinds of interesting stuff by fooling around with Pine so far. This little challenge has taught me some things about security that I never would have thought of. However, my attention span is now beginning to gray out. If anyone has some advice on configuring Pine to talk to an IMAP server, please drop me a line.

Wednesday Jul 04, 2007

Sunfreeware.com is my new best friend

Pesky libraries. When I installed Pine off the Solaris 10 Companion DVD, Pine complained about a missing library when I tried to open it. Some Internet research revealed that the library, libssl.so.0.9.7, is one of the OpenSSL libraries, and it wasn't the only one missing. It turns out that OpenSolaris Build 57, the one I am using, contains a later version of OpenSSL, one that uses libssl.so.0.9.8. Other needed OpenSSL libraries had the same versioning problem. Rats! You'd think that Pine would pay a little more attention to forward compatibility, but the price is right (free), so I guess I can't complain too much.

Hmm. What to do? I tried a hack, renaming the library, which worked but also revealed that there was a whole series of other libraries that would have to be renamed as well, so I decided to do things the right way instead. More Internet research led me to Sunfreeware.com, a veritable Aladdin's cave of free and open source applications for Solaris, including a newer version of Pine. Awesome! The site is run by Steve Christensen, quantum physicist and national treasure. How fortunate Sun is that geniuses like Steve take an interest in Solaris.

The version of Pine on the Solaris Companion DVD is 4.61, but the version on Sunfreeware.com is 4.64. I decided to gamble that this version wouild be compatible with the version of OpenSSL on OpenSolaris Build 57. Given my horror at compiling applications from source, I was pleased to see that Sunfreeware.com provides easy-to-install binaries that use pkgadd for installation, and contains very simple instructions on how to do it. Downloading and installation were a snap. So far, so good.

Now, the acid test. Would Pine actually work? I added its directory to my PATH, typed in "pine," and hit return.

It worked! Hee-hee! I was in business.

Now, the next problem: how to configure Pine to talk to the Sun email system. So far, I am stymied. I know Pine is making contact with the Sun email server, but something in my Pine configuration is causing the login to be rejected. The Pine documentation is maddeningly vague, and Internet research turns up hundreds of instruction pages on how to install Pine at specific university systems from here to Hong Kong (really), but they are too specific for me.

This is all rather frustrating, but it is also a valuable lesson on why open source is a viable corporate strategy for software vendors. Pine is free for the asking, so would I pay for a Pine support contract that would allow me to call someone right now and ask how to set it up? You bet your ass I would.

 

Thursday Jun 28, 2007

Solaris Companion DVD is my new best friend

Deciding that knowing how to use traditional UNIX tools is what separates the men from the boys in the software world, I last night embarked on a program of self-education on my experimental Solaris system. You never know when you might be stuck in Bazookastan with only a command line between you and certain death, so I want to be prepared. Bitmapped tools are for wimps.

First step: install Pine for reading email. I still haven't figured out how to compile open source programs from source, so I needed a compiled binary. Fortunately, I had hung on to the Solaris Companion DVD from one of my earlier Solaris forays. I popped it into the Dell's disk drive, and presto -- a world of nifty FOSS applications was at my fingertips. There was a cool little wizard that divided the apps into useful categories like publishing, networking, utilities and so forth. There is no index, which I found disconcerting, but if you select a category to install, then go to the next screen, it will tell you what is about to be installed. You can then backtrack and deselect the stuff you don't want by using the Custom Install choice.  I wound up selecting only Pine and Mutt.

Luckily, the install wizard tells you what directory the apps are going into, which is /opt/sfw/bin. I was worried that I was getting source and would have to compile, but they actually are binary executables. Excellent!

Then I made a classic newbie error. I cd'd to the install directory, and attempted to run both Pine and Mutt by typing in their names. Nothing happened. I resorted to the Java Desktop System file browser and clicked on them. Nothing happened. Rats! Was I supposed to run another install program before they would run, a la Windows? I was stumped.

I finally realized that I was still thinking like a Windows person. Once you step through the looking glass into the UNIX world, things are just... different. Counterintuitively, the fact that you are in the directory where an executable resides doesn't mean that you can run it. To run something, its directory has to be in your PATH. One of my Sun buddies, Raymond Tam, had explained this to me some time ago, but I had forgotten. When I finally remembered, I got out Steve Moritsugu's excellent Practical UNIX, and followed his instructions for adding /opt/sfw/bin to my PATH.

It worked! Well, sort of. I was able to bring up mutt, but pine seemed to be missing a library. I'll check the Companion DVD to see if I can find it there tonight.

Update: Actually, there is a way to add the current directory to your PATH, but it seems a little risky to me, so I didn't take that option. Of course, you can also run any UNIX application by specifying its full PATH when you invoke it.

About

davidleetodd

Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
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
   
       
Today