Monday Nov 11, 2013

Java Developer Days India Trip Report

You are probably aware of Oracle's decision to discontinue the relatively resource intensive regional JavaOnes in favor of more Java Developer Days, virtual events and deeper involvement with independent conferences. In comparison to the regional JavaOnes, Java Developer Days are smaller, shorter (typically one full day), more focused (mostly Oracle speakers/topics) and more local (targeting cities). For those who have been around the Java ecosystem for a few years, they are basically the current incarnation of the highly popular and developer centric Sun Tech Days. October 21st through October 25th I spoke at Java Developer Days India. This was basically three separate but identical events in the cities of Pune (October 21st), Chennai (October 24th) and Bangalore (October 25th). For those with some familiarity with India, other than Hyderabad these cities are India's IT powerhouses.

The events were basically focused on Java EE. I delivered five of the sessions (yes, you read that right), while my friend NetBeans Group Product Manager Ashwin Rao delivered three talks. Jagadish Ramu from the GlassFish team India helped me out in Bangalore by delivering two sessions. It was also a pleasure to introduce my co-contributor to the Cargo Tracker Java EE Blue Prints project Vijay Nair at Bangalore during the opening talk. I thought it was a great dynamic between Ashwin and I flipping between talking about the new features and demoing live code in NetBeans. The following were my sessions (source PDF and abstracts posted as usual on my SlideShare account):

The event went well and was packed in all three cities. The Q&A was great and Indian developers were particularly generous with kind words :-). It seemed the event and our presence was appreciated in the truest sense which I must say is a rarity. The events were exhausting but very rewarding at the same time.

As hectic as the three city trip was I tried to see at least some of the major sights (mostly at night) since this was my very first time to India. I think the slideshow below is a good representation of the riddle wrapped up in an enigma that is India (and the rest of the Indian sub-continent for that matter):

Ironically enough what struck me the most during this trip is the woman pictured below - Shushma. My chauffeur, tour guide and friend for a day, she fluidly navigated the madness that is Mumbai traffic with skills that would make Evel Knievel blush while simultaneously pointing out sights and prompting me to take pictures (Mumbai was my stopover and gateway to/from India). In some ways she is probably the most potent symbol of the new India. I also had occasion to take a pretty cool local bus ride from Chennai to Bangalore instead of yet another boring flight.

All in all I really enjoyed the trip to India and hope to return again soon. Jai Hind :-)!

Wednesday Oct 02, 2013

JavaOne 2013 Trip Report

JavaOne 2013 San Francisco was held September 22-26. I am proud to say this is my seventh JavaOne as an attendee, my fifth one as a speaker, my second one as an Oracle employee and my first one as a member of the content committee. This was a particularly important year from a Java EE standpoint with the release of EE 7 and GlassFish 4 - the content reflected this fact.

I'll admit JavaOne has a special place in my heart - I still remember how awe inspiring my first JavaOne was. It seemed almost surreal, as if the air itself was electrifying. For almost a full week, I felt proud and humbled to be part of an incredible global phenomenon taking place under the roof of Moscone Center in beautiful San Francisco. It made me want to be a more significant part of the Java community. While JavaOne 2013 can certainly be considered a success by most measures, I think most folks would say the atmosphere for JavaOne 2013 unfortunately would not resemble the description of my first JavaOne. Whatever the underlying factors, that's a real shame since there can be little question that JavaOne remains the most important Java conference in the world. Having taken part in organizing a few other fairly large conferences and attending/speaking at numerous others, the content was definitely of outstanding quality even as compared with many other conferences of similar magnitude. It's clear the best and the brightest in the Java ecosystem still see participating in JavaOne as a badge of honor and a privilege. Perhaps a wise retrospective to be had is that we at Oracle need to do more to keep the conference a uniquely valuable experience and try to reach out to a newer generation of developers that would continue to find JavaOne inspiring. On the other hand, hopefully it's just that I'm a bit more jaded and less naive than I once used to be :-).

At any rate, JavaOne 2013 was definitely both hectic and rewarding personally. Besides booth duty at the GlassFish 4/Java EE 7 kiosk, I had one user group event, a couple of BOFs and a technical session. The conference really started for me on Saturday evening with making sure the GlassFish 4/Java EE 7 kiosk is up and running. I am proud to say Cargo Tracker was demoed at the booth along with the Java EE 7 Hands-on-Lab. Part of the Java EE Blue Prints project, Cargo Tracker is a sub-project I initiated that is aimed at demonstrating architectural best practices such as Domain-Driven Design (DDD) using Java EE 7. It's essentially the well known Java DDD sample application originally written in Spring, Hibernate and Jetty modernized, expanded and ported over to Java EE 7/GlassFish 4. If you weren't aware of the project, it is somewhat deliberate. We are still working out some details before we do our first alpha release and reach out to the community. Consider this a sneak peek :-). You are of course welcome to contribute to the open source project any time.

It was my pleasure and privilege to lead the GlassFish Community Event on Sunday. It's long been a rallying point for the GlassFish and Java EE communities at JavaOne and a great way to kick off the conference. Despite the early morning timing and somewhat unfortunate but unavoidable conflict with the NetBeans Sunday User Group event, the two hour session was fairly well attended as usual. John did an excellent job presenting the road map as usual (slide deck embedded below), the GlassFish/Oracle executive panel was very good and we had four great Java EE/GlassFish stories this year. The entire session was video recorded and all the slide decks are posted on SlideShare. We still need to figure out how we can best get all the great content to the broader community, but I hope we can publish most of it on the GlassFish.org page for the event. The stories will be posted on the usual blog that hosts all Java EE/GlassFish stories.

The now iconic GlassFish party was held at the Thirsty Bear in the evening. The party was a full house with a ton of pictures that we will publish soon as well.

On Monday and Tuesday afternoon, I had booth duty. The booth traffic was decent and there were a number of pretty good conversations. On Monday afternoon I had my first BOF titled "What’s New with Bean Validation and Expression Language in Java EE 7". I generally enjoy BOFs as they give me an opportunity to talk about a given topic at a slightly deeper level in a slightly less impersonal setting. The goal was to have a fairly informal/open-ended discussion around the changes in Bean Validation 1.1 as well as EL 3 and the impact of these changes in terms of the Java EE 7 platform as well as the broader ecosystem. Somewhat to my surprise, the BOF was packed and I got excellent feedback afterwards. I decided to break up the BOF deck into two separate lightning talk oriented decks (posted below). As always, I've posted the source PPT so you are welcome to use the material yourself as you see fit.

On Tuesday evening I led the GlassFish BOF. Tuesday late evening is always a tough time slot since many of the parties are scheduled at the time. Nonetheless, we had pretty good attendance and some excellent conversations. We covered Java EE 7, the features in GlassFish 4 beyond Java EE, the GlassFish/Java EE ecosystem, the GlassFish.org face lift, project Avatar and the road ahead. The slide deck is posted below.

On Thursday mid-day I had my technical session titled "Android and iOS Development with Java EE 7". I co-presented the talk with Ryan Cuprak and Bala Muthuvarathan. Ryan is the leader of the Connecticut JUG, a close friend and my co-author on the upcoming second edition of EJB 3 in Action (covering EJB 3.1, CDI 1.1, JPA 2.1, etc). Bala is a friend and former colleague from CapTech Consulting. They are both incredibly capable people that it is an honor to work with. The goal of the talk was to demonstrate how Java EE 7 can be used as an effective back-end for native mobile development with Android and iOS. The server-side consists of a chat WebSocket API and a to do list REST API implemented using the Java API for WebSocket, JSON-P, JAX-RS 2, CDI, Bean Validation, EJB 3 and JPA. While I focused on the server-side code, Ryan wrote the iOS portion while Bala wrote the Android portion. The demo code is available on GitHub and the slide deck is posted below. The idea is to give you the seed code you need to get started with Java EE 7 based mobile development. The plan is for me, Ryan and Bala to co-author an article series on the material very soon.

The talk went extremely well and was a full house. A couple of folks went so far as to tell us that it was "one of the best talks of the conference" and "the only talk worth attending all week". As an offshoot to the talk, I entered a couple of feature requests against Tyrus and Jersey. Feel free to vote on the issues and contribute to the project on GitHub. Also, do drop me a note if you need help getting things up and running.

The Saturday after the conference my wife Nicole and I took my daughter Zehra to see the Kings Canyon and Sequoia National Parks. Home to giant sequoias like General Sherman, the parks offer some of the most spectacular landscapes that still represents the uniqueness, magnificence and great potential of this country. At 275 feet tall and approximately 2500 years old, General Sherman is the largest known living single stem tree on Earth. If the presence of the giant sequoias doesn't inspire you to try to live a meaningful life beyond yourself that makes a positive difference for as many people as you can in your fleeting and insignificant lifetime, nothing probably ever will...

All in all, this JavaOne trip was good overall and I hope to be a part of JavaOne again next year.

Friday Aug 23, 2013

JavaDay Taipei Trip Report

JavaDay Taipei 2013 was held at the Taipei International Convention Center on August 2nd. Organized by Oracle University, it is one of the largest Java developer events in Taiwan. This was another successful year for JavaDay Taipei with a fully sold out venue packed with youthful, energetic developers. In addition to Oracle speakers like me, Steve Chin and Naveen Asrani, the event also featured a bevy of local speakers including Taipei Java community leaders. Topics included Java SE, Java EE, JavaFX and mobile.

It was my pleasure and privilege to present one of the opening keynotes for the event. I presented my session on Java EE titled "JavaEE.Next(): Java EE 7, 8, and Beyond". The talk is primarily along the same lines as Arun Gupta's JavaOne 2012 technical keynote. I covered the changes in JMS 2, the Java API for WebSocket (JSR 356), the Java API for JSON Processing (JSON-P), JAX-RS 2, JPA 2.1, JTA 1.2, JSF 2.2, Java Batch, Bean Validation 1.1, Java EE Concurrency and the rest of the APIs in Java EE 7. I also briefly talked about some of the possibilities for Java EE 8. The talk was well received and it was a full house session which is always encouraging. The slides for the talk are here:

I also presented one of the closing sessions of the event with my WebSocket talk titled "Building Java HTML5/WebSocket Applications with JSR 356". This session was also a full house with decent Q & A afterwards. The talk introduces HTML 5 WebSocket, overviews JSR 356, tours the API and ends with a small WebSocket demo on GlassFish 4. The slide deck for the talk is posted below.

The demo code is posted on GitHub: https://github.com/m-reza-rahman/hello-websocket. Do give me a shout if you need help getting the demo up and running.

The Oracle University folks hosted a reception in the evening which was very well attended by organizers, speakers and local Java community leaders (some of whom joined me for a cool hike the next morning). The picture below shows me, Steve Chin, Naveen Asrani, key event organizer Serene Lee as well as local JUG leaders/speakers Ian, Koji and Gary at the restaurant.

Since this was my first time in Taipei, I took some time out to check out notable attractions like Taipei 101 (very close to the convention center), Long Shan Temple and the Shilin night market. I have to say Taipei is truly remarkable in that the Taiwanese people would strike anyone as both very hardworking, meticulous and innovative but at the same time incredibly friendly, open and honest. I think that explains why such a relatively small island is a household name worldwide.

The Saturday morning after the conference, Ian, Koji, Gary and I decided to climb Seven Star (Qixing) Mountain. Seven Star Mountain is the highest peak in Yangmingshan National Park close to Taipei at 3,675 feet above sea level. It is also the highest dormant volcano in Taiwan. The hike is strenuous but offers spectacular views of the park, mountain range and Taipei, especially after you climb above the tree line. This was the first time in a long time that I explored a lush sub-tropical mountain terrain as opposed to the temperate terrain typical of most of North America and Europe. Just check out the pictures I took below (the opening picture is courtesy of Serene - it is a picture of the Seven Star Mountain chain from Oracle's high rise offices in Taipei).

I definitely enjoyed JavaDays Taipei and hope to be part of the event next year again!

Sunday Jul 28, 2013

OSCON Trip Report

OSCON 2013 was held from July 22 to July 26 in Portland, Oregon. I presented the Java EE 7 hands-on lab there as well as a session on WebSocket/JSR 356. This was my first time to the revered conference.

My impression of OSCON had always been that it is a conference for everything open source mostly sans Java and very much sans anything JCP. As a Java and standards/JCP guy, it's the reason I had always focused on more Java heavy events like JavaOne and TheServerSide Symposium in my former life as an independent. This seemed to be despite the fact that Java remains the most popular language certainly by jobs and most programming language indexes, Java is the most active open source platform in the world and O'Reilly itself tends to make the most money out of Java books.

I was really hoping to say I was wrong all these years, but with the greatest regret I have to say I'm still not sure I was (though I think things are looking up). By my count there were about a dozen Java related sessions among about 450+ (that's about 2-3%). I didn't count Andriod since it's still up in the air whether Andriod is Java or not. I didn't count other JVM languages since their obvious point is that they are not Java. Since open standards and open source should be philosophical brothers-in-arms, this can't be a good thing. Open source is a key component in the Java EE ecosystem today, Java EE APIs like CDI and Bean Validation are led by companies that base themselves entirely on open source and even "evil corporations" (well, at least in some people's minds) like Oracle have technologies like JSF/Mojorra, JPA/EclipseLink, JAX-RS/Jersey, WebSocket/Tyrus, not to mention GlassFish and NetBeans that are deeply rooted in both open standards as well as open source.

In all fairness, things are not that simple - OSCON/O'Reilly is not historically rooted in Java, there are plenty of Java conferences in comparison to the small handful of conferences devoted to open source, OSCON may have a chicken/egg problem as to attracting Java speakers/content/attendees and a lot of Java speakers (especially from Oracle) may be tied down with JavaOne Shanghai that happens to conflict OSCON this years and so on. In the end though I'm reminded of a parable from my own cultural heritage about the man who spit to the sky to curse the almighty for his misfortunes. All he really accomplished is a somewhat unpleasant experiment proving gravity still works :-). The moral of the story of course is that the almighty (if such a being indeed exists) only helps those who help themselves and we are all largely responsible for making the best of the disadvantages that come our way. As the ultimate sentinels of the Java ecosystem, it's up to folks like me at Oracle to make sure any fences that need to be mended at significant venues like OSCON are mended as much as possible.

At any rate, the Java EE 7 hands-on lab on the first day of the conference went relatively well considering it was a BYOL (Bring Your Own Laptop) effort. The openly available hands-on lab is actually a very good resource for getting your hands dirty with Java EE 7 (Arun put in the hard work to develop most of the material). The entire lab is neatly scripted into step-by-step instructions and seeded with some starter code as to be largely self-directed and self-paced. The idea is that anyone should be able to complete the lab by themselves or even lead the lab in their own organizations (a couple of folks at OSCON actually expressed interest in doing exactly this). I am considering running the lab at some friendly local JUGs as an extended meeting/workshop (perhaps calling it something like "Hands-on Java EE 7", "Down and Dirty with Java EE 7", "A Self-Guided Tour of Java EE 7", etc).

The lab being run solo by me as a BYOL was invaluable in exposing some potential weak points in the lab, GlassFish 4 and NetBeans that otherwise perhaps would have remained latent. A number of folks ran into this apparent NetBeans bug that I filed. I am having trouble reproducing the bug myself, so if anyone has an idea on how to investigate it, please do help. I also uncovered this GlassFish admin console bug trying to help a couple of folks diligently working through the lab after the workshop time slot (which is perfectly normal - it's a pretty long lab). There were a few other bugs related to JMS resource creation and Derby/schema generation that I saw but can't recreate (on Mac and Linux it seems). Hopefully the folks running into them will file bugs as I requested they do. I also noticed a few relatively minor things on the lab that I'll work with Arun to iron out, especially for folks that are beginners or are trying to run the lab on their own. If you try out the lab yourself and run into any issues, please help us by reaching out to me or filing bugs (even if they are just suspected bugs :-)).

On Thursday after lunch I had the WebSocket/JSR 356 talk. It went well with a small room packed with about 40 people (this was the room that all the Java talks were held at and it was consistently packed). I had a few good conversations afterwards and a few requests for the slide deck (posted below).

The demo code is posted on GitHub: https://github.com/m-reza-rahman/hello-websocket. Do drop me a note if you need help with it.

Since this was my first time in Portland, I took some time to explore the city. With the proud slogan "keep Portland weird", the city does indeed have it's unique quirky charm between the ubiquitous food carts, parks, gardens, open markets, one-of-a-kind stores, coffee shops, live music and events. What might be truly unique to Portland though is it's remarkable proximity to pristine natural environments. To see why, one only has to take a short train ride to nearby Washington Park and Forest Park. Being careful to navigate away from the touristy crowds onto one of the well placed trail heads, you won't have to hike too far to see sights that make it easy to imagine how things might have looked like when the Lewis and Clark Expedition first set foot in this part of the world:

All in all, OSCON (and Portland) was a unique and valuable experience. I would definitely look forward to doing it again some time.

Tuesday Jun 25, 2013

WebSocket@QCon NY

QCon NY was held on June 10-14 at the New York Marriott/Brooklyn Bridge. Part of the QCon franchise, this is one of the most significant IT conferences in the greater NYC area. It was an honor to do a WebSocket (JSR 356) talk at the conference. Unfortunately, my schedule was such that I could only attend one day of the conference and did not really get a chance to attend many sessions or do much networking. I did get a chance to talk to fellow Oracle speakers Doug Clarke, Stephen Chin and Frederic Desbiens, which was great.

My session, titled Building Java HTML5/WebSocket Applications with JSR 356 was very well attended and I had some excellent Q & A. The talk introduces HTML 5 WebSocket, overviews JSR 356, tours the API and ends with a small WebSocket demo on GlassFish 4. The slide deck for the talk is posted below.

The demo code is posted on GitHub: https://github.com/m-reza-rahman/hello-websocket.

Oracle hosted a reception in the evening which was very well attended. Later in the evening the QCon organizers hosted a very nice speakers' dinner at a local boutique restaurant with excellent atmosphere and good food.

Wednesday Mar 20, 2013

33rd Degree 2013 Trip Report

33rd Degree 2013 was held in historic Warsaw, Poland on March 13-15. For those of you not familiar with it, dubbed "the Conference for Java Masters" this is the premier Java conference for Poland. It attempts to bring together elite speakers in the Java community across the globe. This was my first time at the conference and I most certainly thought the conference lived up to its promise. Just some notable speakers included Tim Berglund, Adam Bien, Ted Neward, Dan North, Simon Ritter, Venkat Subramaniam, Geertjan Wielenga and Kai Wahner.

I delivered three full-house talks, all on the second day of the conference. The first was my talk on Java EE 7 and 8 titled "JavaEE.Next(): Java EE 7, 8, and Beyond". The talk was primarily along the same lines as Arun Gupta's JavaOne 2012 technical keynote. I covered the changes in JMS 2, the Java API for WebSocket (JSR 356), the Java API for JSON Processing (JSON-P), JAX-RS 2, JPA 2.1, JTA 1.2, JSF 2.2, Java Batch, Bean Validation 1.1, Java EE Concurrency and the rest of the APIs in Java EE 7. I also briefly talked about the possible contents of Java EE 8. The talk had standing room only with 400+ attendees. The slides for the talk are here:

My second talk was on the Java API for WebSocket/JSR 356 titled "Building HTML5/WebSocket Applications with JSR 356 and GlassFish". The talk is based on Danny Coward's JavaOne 2012 talk. The talk covers the basic of WebSocket, the JSR 356 API and a simple demo using Tyrus/GlassFish. The talk went very well and there were some very good questions. This was a full session as well with 150+ attendees. The slides for the talk are here:

The code samples are available here: https://blogs.oracle.com/arungupta/resource/totd183-HelloWebSocket.zip. Give me a shout if you need help getting it up and running.

To my delight, the 33rd Degree folks were very interested in my domain-driven design/Java EE talk (titled "Applied Domain-Driven Design BluePrints for Java EE"). The talk has three parts -- a brief overview of DDD theory, mapping DDD to Java EE and actual running DDD code in Java EE/GlassFish. I converted the well-known DDD sample application (http://dddsample.sourceforge.net/) written mostly in Spring 2 and Hibernate 2 to Java EE 7. My eventual plan is to make the code available via a top level java.net project. Even despite the broad topic and time constraints, the talk went very well. The room was fully packed with 400+ people and I got excellent feedback on the talk later. The slides for the talk are here:

The code examples are available here: https://blogs.oracle.com/reza/resource/cargo-tracker.zip for now, as a simple zip file. Give me a shout if you would like to get it up and running.

Besides presenting my talks, I got to attend some great sessions on Java SE, JavaScript/HTML5, NoSQL and mobile. It was also good to catch up personally with Adam, Kai, Simon and Geertjan.

On a more personal note, I was very curious to explore the heavy metal scene in Poland because I know there have been many brilliant but seriously underrated Polish metal bands like Vader and Behemoth. Luckily for me, bitter cold Winter Friday nights are metal nights in Warsaw. I got to check out some of the city's best young metal bands at the storied Metal Cave.

I definitely enjoyed 33rd Degree 2013 and hope to be part of the conference again next year.

Tuesday Nov 06, 2012

Java2Days 2012 Trip Report

Java2Days 2012 was held in beautiful Sofia, Bulgaria on October 25-26. For those of you not familiar with it, this is the third installment of the premier Java conference for the Balkan region. It is an excellent effort by admirable husband and wife team Emo Abadjiev and Iva Abadjieva as well as the rest of the Java2Days team including Yoana Ivanova and Nadia Kostova. Thanks to their hard work, the conference continues to grow vigorously with almost a thousand enthusiastic, bright young people attending this year and no less than three tracks on Java, the Cloud and Mobile. The conference is a true gem in this region of the world and I am very proud to have been a part of it again, along with the other world class speakers the event rightfully attracts.

It was my honor to present the first talk of the conference. It was a full-house session on Java EE 7 and 8 titled "JavaEE.Next(): Java EE 7, 8, and Beyond". The talk was primarily along the same lines as Arun Gupta's JavaOne 2012 technical keynote. I covered the changes in JMS 2, the Java API for WebSocket (JSR 356), the Java API for JSON Processing (JSON-P), JAX-RS 2, JCache, JPA 2.1, JTA 1.2, JSF 2.2, Java Batch, Bean Validation 1.1 and the rest of the APIs in Java EE 7. I also briefly talked about the possible contents of Java EE 8. My stretch goal was to gather some feedback on some open issues in the Java EE EG (more on that soon) but I ran out of time in the short format forty-five minute session. The talk was received well and I had some pretty good discussions afterwards. The slides for the talk are here:

To my delight, the Java2Days folks were very interested in my domain-driven design/Java EE 6 talk (titled "Domain Driven Design with Java EE 6"). I've had this talk in my inventory for a long time now but it always gets overridden by less theoretical talks on APIs, tools, etc. The talk has three parts -- a brief overview of DDD theory, mapping DDD to Java EE and actual running DDD code in Java EE 6/GlassFish. For the demo, I converted the well-known DDD sample application (http://dddsample.sourceforge.net/) written mostly in Spring 2 and Hibernate 2 to Java EE 6. My eventual plan is to make the code available via a top level java.net project. Even despite the broad topic and time constraints, the talk went very well. It was a full house, the Q & A was excellent and one of the other speakers even told me they thought this was the best talk of the conference! The slides for the talk are here:

The code examples are available here: https://blogs.oracle.com/reza/resource/dddsample.zip for now, as a simple zip file. Give me a shout if you would like to get it up and running.

It was also a great honor to present the last session of the conference. It was a talk on the Java API for WebSocket/JSR 356 titled "Building HTML5/WebSocket Applications with JSR 356 and GlassFish". The talk is based on Danny Coward's JavaOne 2012 talk. The talk covers the basic of WebSocket, the JSR 356 API and a simple demo using Tyrus/GlassFish. The talk went very well and there were some very good questions afterwards. The slides for the talk are here:

The code samples are available here: https://blogs.oracle.com/arungupta/resource/totd183-HelloWebSocket.zip. You'll need the latest promoted GlassFish 4 build to run the code. Give me a shout if you need help.

Besides presenting my talks, I got to attend some great sessions on OSGi, HTML5, cloud, agile and Java 8. I got an invite to speak at the Macedonia JUG when possible. Victor Grazi of InfoQ wrote about my sessions and Java2Days here: http://www.infoq.com/news/2012/11/Java2DaysConference. Stoyan Rachev was very kind to blog about my sessions here: http://www.stoyanr.com/2012/11/java2days-2012-java-ee.html.

I definitely enjoyed Java2Days 2012 and hope to be part of the conference next year!

About



Reza Rahman is a former independent consultant, now Java EE/GlassFish evangelist.

He is the author of the popular book EJB 3 in Action. Reza is a frequent speaker at Java User Groups and conferences worldwide.

Reza has been a member of the Java EE, EJB and JMS expert groups. He implemented the EJB container for the Resin open source Java EE application server.

All views voiced are my own, not necessarily Oracle's.

Search

Categories
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