thelowercasew.com
24Jan/120

Vote for top virtualization blogs–keep it lowercase!

It’s that time of year again – Eric Siebert has kicked off voting for his annual list of the top virtualization blogs.  I’m amazed that this year there are over 180 blogs in the list and more from people who didn’t get their blog submitted in time.  It shows how much virtualization continues to grow and how great our VMware community is.

Last year I let the voting pass without saying a word since the The Lowercase w was new and I didn’t feel like the content was worthy of promoting just yet.  Though I still don’t feel like I belong even in the top 5, I figured I’d highlight some of my more popular posts over the last year to see if I can earn a few votes.

New SQL 2012 Licensing and its Impact On Virtualization

Fix Partition Alignment with VMware Converter 5.0 (Beta)

vSphere and Exchange admins can live in harmony – Microsoft finally supports HA and vMotion

Clearing up confusion regarding HA/vMotion support for Exchange 2010

Reclaiming disk space with Storage vMotion and Thin Provisioning

And remember to keep the voting fair and honest.  Heck, I didn’t even vote for myself as #1!  You can vote for your favorite blogs by going here:

http://vote.vsphere-land.com/

If any of my posts have helped with your VMware environment or you found them useful, consider voting for The Lowercase w.  Heck, if you just want to vote for someone who won’t stand idly by while the very company we support is humiliated time and time again by folks who can’t be bothered to spell the company name correctly then The Lowercase w will gladly take your vote!

Thanks to all the readers of TLw!

Tagged as: No Comments
28Dec/114

VCP 5 Exam–A few thoughts

I took and passed the VMware Certified Professional (VCP) 5 exam last week and wanted to share a few thoughts.  There are already many posts that cover the VCP 5 exam and what are good study resources, so I will try to just add a little value around how I felt this test compared to previous versions.

For me the “hardest” VCP exam I’ve taken was the VCP2 (VCP-101) back in 2005.  That exam was based on ESX 2.1 and VirtualCenter 1.0 at the time, and I was definitely nervous to it.  I had been using ESX on and off since early 2002 or so, but made the mistake of waiting 3 or 4 months after taking the required course and taking the exam.  By far I studied the most for that exam than any other VCP exam I’ve taken since, and was very happy with my score.

The VCP2 exam naturally focused on higher level concepts since virtualization was so new to most people.  I remember needing to memorize the definitions of “Encapsulation” and “Isolation” as they related to virtualization.  This trend continued with the VCP3 and to some extent the VCP4, as new features were introduced with each version so the test had questions relating to understanding what things like vMotion and HA were, along with a lot of configuration minimum and maximum questions.

Here is where I felt the VCP5 did a really good job of separating itself from the previous exams.  Instead of memorizing definitions or configuration minimums and maximums, it tested your knowledge of how these features actually work.  Understanding what vSphere HA is and what it does is important, but understanding how HA actually works in specific scenarios is more important.  The same is true for DRS, networking, etc.

So for those that are studying for the exam, if you don’t have any real hands on experience with the product you may find the exam more difficult.  I’d recommend getting a lab setup and playing with the features.  If you’ve used ESX/ESXi for years or at least have been using vSphere for the last couple of years you stand a better shot of passing just based on your experience.  You should still study the new features of vSphere 5 and any changes to the way things work, but having hands on experience is key to passing.

For what it’s worth – I was more apprehensive about this exam than any since the VCP2, probably mostly related to how many new features were added to vSphere in this vSphere 5.  So if you’re worried or intimidated by this exam, don’t worry.  You’re in good company.

I won’t try to provide a list of resources I used to study since others have done that already.  By far the best I have found is by my former EMC Consulting colleague Gregg Robertson.  Check out his list of VCP5 resources.

I left the exam somewhat unhappy with my score (thought I should have done better) but overall pleased with the experience.  Best of luck to everyone trying to get exam completed before the end of February!

19Dec/110

SQL 2012 per-core licensing clarification

Last month I posted about the licensing changes to SQL 2012 and how it may impact those looking to virtualize SQL.  One of the most confusing parts of the new licensing was the limit of 20 cores in a system when using the per-core licensing of SQL 2012 Enterprise Edition.  It made no sense to introduce such a low limit when modern processors with 10 or more processor cores are becoming more and more common.

I’ve spoken to some folks who have stated that their Microsoft reps have clarified that the 20 core limit only applies to those upgrading to SQL 2012 Enterprise from SQL 2008 Enterprise when using Server+CAL licensing.  The licensing datasheet that was released in November had language that made it seem like that applied to everyone.

Luckily the folks I spoke to were correct – in December, Microsoft released an updated copy of the licensing datasheet that includes language that is much more clear and definitive.  It is now clear that the 20 core limit only applies to licenses that have been upgraded with Software Assurance that use the Server+CAL licensing model.

For reference, here is the somewhat confusing language from the November licensing datasheet (emphasis is Microsoft’s):

Both newly purchased server licenses for SQL Server EE 2012 or EE server licenses with SA upgraded to SQL Server EE 2012 will be limited to server deployments with 20 cores or less.

Here is what the December edition of the licensing datasheet says (emphasis is Microsoft’s):

Legacy SQL Server 2012 Enterprise Edition Server deployments licensed in the server + CAL model will be subject to a 20 core per server license maximum. This core maximum applies both to new server licenses and to prior version server licenses upgraded to 2012 with SA.

To me that is much more clear and definitive on what the 20 core limit applies to.  I’m happy to see this doesn’t apply to all licenses..

17Nov/115

New SQL 2012 Licensing and Its Impact On Virtualization

Last week Microsoft released their updated licensing scheme for SQL Server 2012, which is due to be released next year.  Though there are a number of changes to the product and to how it is licensed, in my mind the biggest change is that Microsoft has moved to a per core licensing model for SQL.  The Server + CAL model still exists as well but for this post I’ll focus on the per core licensing and changes that affect those that want to virtualize SQL Server 2012.

You can read more about the new licensing for SQL 2012 by going to SQL 2012 Licensing Overview page.  Here are some of the highlights:

  • The Datacenter Edition from SQL 2008 R2, which was previously licensed per socket/CPU, has been discontinued.
  • The top tier license is now Enterprise Edition (EE), which is licensed per core.  It requires a minimum of 4 core licenses per processor.  If all cores in a host are licensed, you retain the unlimited virtualization rights previously available in SQL 2008 R2 Datacenter Edition.
  • The cost per core of SQL 2012 Enterprise will be $6,874/core not including Software Assurance (SA).
  • Software Assurance is required in order to use license mobility (i.e. vMotion/Live Migration) more than once every 90 days.
  • Instead of licensing an entire server, you can also license the virtual cores of individual SQL virtual machines.
  • Core licenses are sold in 2 core packs.
  • There is a limitation of 20 cores per server maximum for EE. (Note: this has been clarified - see below)
  • If you are current on SA and have SQL 2008 R2 Enterprise you will receive a minimum of four SQL 2012 EE core licenses per CPU or the actual number of cores in use.
  • If you are current on SA and have SQL 2008 R2 Datacenter you will receive a minimum of eight SQL 2012 EE core licenses per CPU or the actual number of cores in use.

Per Core Licensing

It really shouldn’t come as a surprise to anyone that Microsoft is moving from a per socket/processor model to a per-core model for licensing SQL Server.  After all, processors are shipping with more and more cores per CPU and are capable of higher consolidation ratios.  Combine that with the fact that the majority of SQL Server workloads are actually very light use (based on VMware Capacity Planner data) and you can see that Microsoft couldn’t continue with per socket licensing.

The only potential issue I see is the minimum of 4 cores licenses per processor.  If organizations are still using older hardware that only has 2 cores/processor then they are paying for cores they don’t have.  I would suspect that in 2012 this isn’t likely to affect a large number of organizations.

Cost

The actual cost for EE is roughly the same as if you licensed 2 sockets of SQL 2008 R2 Enterprise Edition as long as it had 4 cores per CPU.  The cost goes up as soon as you start using 6 core processors and above.  The prevalence of 4 core processors means this likely won’t change much for many organizations.

Compared to SQL 2008 R2 Datacenter, however, there is a large cost difference.  Datacenter costs $54,990 per processor or over $100,000 to license a 2 CPU system.  You can now essentially get the benefits of Datacenter Edition (unlimited virtualization rights, etc.) for half the cost you would pay in SQL 2008 R2.

Even with this new licensing model there are still huge cost savings to be had by licensing all cores of a server and virtualizing your SQL 2012 workloads.  It’s hard to argue with unlimited virtualization rights especially for those lightly loaded SQL workloads.

There may be situations where Server + CAL licensing actually makes more sense.  If you’re worried about the higher per core costs that may be something to consider.  Server + CAL licensing requires a lot more administrative overhead and is usually only beneficial for situations where there are a small amount of users/devices that are easily accounted for.

Licensing per VM

Instead of licensing all of the cores in a server, you can instead simply license the cores you use in your SQL virtual machines.  Sounds easy, right?  Unfortunately you are still required to license four cores per VM.  Since the majority of SQL workloads are underutilized and can likely get by with 1-2 vCPUs, you’re essentially paying for core licenses you won’t use.  I can’t imagine many organizations will go down this road unless they have a small number of larger SQL servers.

20 Core Limitation

I have to admit I’m scratching my head a bit on this one.  Knowing that 10 and 12 core processors are available today and 16 core processors are on the horizon, why put a limit at just 20 cores per server?  What happens if you already own 12 core processors, or you have a 4 socket system that exceeds 20 cores in total?  The only thing the SQL 2012 Licensing Guide says is to “contact your Microsoft representative for help transitioning to the new licensing model.”  It’s not uncommon for organizations to scale up and have ESX/ESXi hosts with greater than 20 cores (even easier today with 8 and 10 core processors), so I would hope there is a reasonable solution here.

Update 12/19/2011: On December 1st, Microsoft released an updated copy of their licensing datasheet for SQL 2012.  In this updated version, they clarify the language around the 20 core limit and make it clear that it only applies to SQL 2012 EE licenses that were upgraded from SQL 2008 licenses in the Server + CAL model.  For EE licenses that are purchased new, or that were upgraded from SQL 2008 that used the per CPU licensing model, you are not limited to just 20 cores.

Software Assurance

If you already have SA on your SQL 2008 R2 licenses, you’re probably in better shape than you think.  Note the italics above regarding “actual number of cores in use.”  If you use per processor licensing in SQL now and your processors have more than 4/8 cores, work with Microsoft to get core licenses for what you’re actually using rather than simply accepting the default trade-in value.  Those that bought into higher core CPUs should not be penalized by upgrading to SQL 2012, with the exception of the 20 core/server maximum.

Software Assurance also gives you the right to full virtual machine mobility.  In other words, the rights to use vMotion/DRS in vSphere to move your SQL workloads more than once per 90 days.  You still need the appropriate Windows license to allow that mobility, but again this is another reason why Software Assurance is becoming mandatory.

Final Thoughts

Anyone still reading?  I realize this is a large post so I’ll keep my final thoughts brief.  In short, I think that the move to per-core based licensing was an inevitable change that I would expect to see other vendors take up as well.  The bright side is that the cost to have unlimited virtualization rights for SQL has essentially been cut in half depending on whether or not you already owned the SQL 2008 Datacenter license.  I just hope the 20 core limit per server is somehow addressed quickly or doesn’t require an overly complicated/expensive workaround.

Anything that promotes the virtualization of mission critical applications like SQL is good in my book.  I look forward to talking to customers about this change and helping them move towards virtualizing their SQL deployments.

25Oct/110

Microsoft responds to VMware performance benchmark report

VMware recently commissioned a study comparing performance between vSphere 5 and Hyper-V 2.0 SP1.  The study involves virtual machines running a database simulation workload with 24 VMs (without memory overcommit) and 30 VMs (with memory overcommit).  The results show that VMware vSphere outperforms Hyper-V in each scenario.

The original performance report can be found here (opens a PDF): http://www.principledtechnologies.com/clients/reports/VMware/vsphere5density0811.pdf

Microsoft posted a response to the report, but strangely they did not post it on a TechNet blog or other Microsoft branded site.  Instead they uploaded it to Papershare, an online collaboration website for sharing technical papers.  (Side note: Papershare is awesome and I highly recommend you sign up).  All due respect to Papershare but I think it is obvious that they would get more readers had they simply posted the results on their blog.  Maybe they did but I can’t find it.

Here is Microsoft’s response, called VMware vSphere 5.0 Performance Benchmark Reality (Papershare login required): http://www.papershare.com/app/paper.aspx?id=1253&o=6

I wanted to share some thoughts on Microsoft’s findings and where I agree/disagree.  Though I admit this is a VMware focused blog I am by no means a Microsoft basher or someone who simply says “Hyper-V sucks.”  I think that Hyper-V has come a long way and there are definitely use cases for it.

One of the issues that Microsoft has with the memory overcommit test is that a 60 minute idle period was introduced before any testing was run.  That is, the hypervisors were booted up and all virtual machines were started and then 60 minutes passed before any benchmark was run.  Microsoft states that this gives VMware's Transparent Page Sharing feature a chance to scan for and de-duplicate memory pages in RAM and so it wasn’t a fair or realistic test.  They also state that the test is unrealistic because it is 30 identical workloads (ideal for memory sharing) and that most organizations do not run memory overcommit in production.

Finally, Microsoft states that VMware's EULA “restricts” Microsoft from running similar performance benchmarks to validate these results.  Microsoft raises a few other points that I won’t address here so I’d recommend reading the paper.

I actually agree with Microsoft I don’t often see memory overcommit in production.  I most often see it in VDI environments where VM density is more important than the performance gain from using large memory pages.

That said, I disagree with Microsoft’s assertion that the 60 minute idle period gave the vSphere VMs an unfair advantage and time to share memory. First off, does Microsoft believe that organizations only run their production workloads in 59 minute increments?  Even if they disagree with the 60 minute idle period they have to understand that in a production situation these VMs would be running 24/7 so a 60 minute head start really doesn’t give vSphere any advantage.

Second, if the VMs are sitting idle and the application isn’t running then the application’s memory pages are not in physical RAM so there is nothing to share.  Only after the performance test was started and the application loaded memory pages into RAM did page sharing really have a chance to kick in and start sharing application specific memory pages.  At that point the 60 minute idle period essentially made very little difference.

In my experience I don’t often see organizations overcommit memory with business critical/tier 1 applications, though there are certainly use cases.  If the workloads are identical and VM density is important then it actually does make sense.

With respect to the EULA rule regarding performance benchmarks (that has been in place since at least ESX 2.x), my advice to Microsoft is this: Don’t hide behind the EULA - run the test and submit the results to VMware for approval.  I have actually done this in the past and was pleasantly surprised at how easy the process was.  If your testing methodology is fair then I believe VMware will allow publication even if it doesn’t show vSphere coming out ahead.

The results show that in this particular workload without memory overcommit that Hyper-V isn’t too far behind vSphere 5.  Congrats to Microsoft for improving Hyper-V and bringing it to a much higher level. Of course straight performance is only one aspect of the differences between vSphere and Hyper-V and this article doesn’t touch on the many feature differences.

I’m all for fair benchmarking to compare products and reasonable rebuttals if necessary.  However, the fact that Microsoft didn’t publish this rebuttal on their blog is strange, and I don’t completely agree with the logic they used to counter the results.  I strongly believe that if Microsoft disagrees with the results then they should run their own benchmark and submit it to VMware for approval to publish.

19Sep/110

Storage DRS of Exchange 2010 Workloads

On September 15th, VMware released a new whitepaper entitled “Microsoft Exchange Server 2010 Performance on vSphere 5.”  If you are interested in virtualizing Exchange 2010 (or really any mission critical application) I’d recommend giving it a read.

One of the interesting things they’ve done in this test aside from scale up/scale out testing is to formally test vMotion and Storage vMotion during LoadGen.  LoadGen, if you are unfamiliar, is a Microsoft tool used to simulate user activity in an Exchange environment and measure user response time.

I won’t spoil the ending of the report, but as expected the vMotion and Storage vMotion operations did not cause exceptions that would cause the LoadGen test to fail.  In fact, the Storage vMotion had almost no impact whatsoever.

This brings up an interesting point – since VMware was able to prove that Storage vMotion caused no impact even during an Exchange performance test, it may be a good candidate for Storage DRS in vSphere 5.  Microsoft has improved the I/O consumption of Exchange 2010 so much that it actually consumes very little I/O at all (relatively speaking compared to previous versions).  Still, Exchange is a mission critical application and heavily utilized Exchange environments could benefit from Storage DRS migrating particular mailbox database VMDKs to less utilized storage to optimize the user experience.  And as this whitepaper shows there is very little impact during the migration.

There may be reasons why organizations would chose to exclude their Exchange VMs from automatic Storage vMotion with Storage DRS.  Some of those reasons could be around compliance, acceptance of this new vSphere 5 feature, concerns about performance, and possibly the impact on backup/DR strategies.  Assuming those could be mitigated, I believe this testing shows that Exchange VMs actually make good candidates for Storage DRS.

I’m curious of what others think, so feel free to leave a comment.

8Sep/111

Isolated clusters for mission critical applications?

I’ve seen a theme at several customers who are virtualizing mission critical applications on vSphere: The isolated vSphere cluster used just for that application.  I’ve seen organizations do this many times when virtualizing Exchange 2010, often dedicating two or three vSphere hosts just for Exchange and related components (domain controller, virtual load balancer, etc).

There are several (understandable) reasons why organizations choose to go down this road.  The most common I’ve heard are:

1) “I don’t want my Exchange/SQL/SharePoint guys messing with the rest of the VMs on my production cluster(s).”

2) “I don’t want any other workload taking resources away from my Exchange/SQL/SharePoint VMs.”

I can see why folks make both of these arguments and can understand their logic.  Many vSphere admins live in the Hosts and Clusters view where they see all virtual machines rather than those organized into folders (where granular permissions can be set more easily).  And some are concerned that setting reservations on virtual machines to guarantee access to resources will have a negative impact on available slots in a cluster.

I don’t believe that either of these arguments are enough to require a dedicated vSphere cluster.  A few thoughts are below, starting with addressing the two most common reasons I listed above.

1) VMs can be grouped into application specific folders, and granular permissions can be set to only grant access to those folders or VMs.

2) Reservations aren’t a bad thing or something to be scared of, they just need to be factored into any design.  And using the “Percentage of Cluster Resources'” policy gets around worrying about individual slot sizes (though total resource assignments still need to be considered and calculated).

3) Fewer hosts in a cluster gives VMware features like DRS or HA fewer options when trying to initiate a failover or migrate virtual machines based on resource consumption.  If an application is truly mission critical, I’d rather have more options to optimize availability and performance rather than fewer.

4) Let’s be honest – vSphere isn’t free or cheap, so dedicating hosts to a specific application is likely to result in heavily underutilized hosts and higher costs.  Aren’t underutilized servers and cost reduction some of the reasons why we got into this virtualization business in the first place?  If you made dedicated clusters for all of your mission critical applications you would end up with application silos that greatly reduce the efficiency of virtualization.

At the end of the day a design decision like this should always come down to the requirements.  There may be very valid requirements, like compliance, security, or extremely large applications that make an isolated vSphere cluster a necessity.  Assuming those requirements are not necessary in your environment I would strongly consider whether there is really a reason to use a dedicated cluster for your mission critical applications.

If you agree/disagree/think I’m crazy -  feel free to let me know in the comments..

25Jul/110

Playing with VMware Zimbra for Android

I’m not much of an app user to be honest, and I’m definitely not an app reviewer.  I use an HTC Evo (which runs Android) and don’t have that many applications installed.  By far the most important application my phone is the email client connecting to my corporate Exchange server.

When I saw that VMware had released a Fling called VMware Zimbra for Android I was eager to try it out.  The email client that comes by default on the Evo is ok but has a number of drawbacks so I was eager to see what the Zimbra app could do.  I thought I’d share some thoughts on this app in case anyone else was interested in trying it out.

Before I start – I know you can install custom ROMs on the Evo which lets you use stock Android without the HTC applications. And I’m sure that the email clients available in the Android market offer features above the stock HTC email client but they aren’t free.

First off, I thought I’d list some of the things that annoy me about the HTC email client that is included with the Evo.

1) You can’t multi-select messages to perform bulk actions, such as delete or mark as read.

2) When someone sends you a calendar appointment you can’t actually see what time the appointment is for.  You can only accept/decline it.  How this made it out of any QA/QC check I will never understand.  Here’s what it looks like:

CAP201107121032

3) Tasks configured in Outlook/Exchange do not show up.

There are others annoyances but those are the big ones that I don’t like.  I have been using the Zimbra client for the last few weeks and while it isn’t perfect it definitely has some nice benefits.

For starters, you can easily select multiple messages and perform actions on them (mark as read, delete, file into folder).  Not only that, but you can also select which folders to sync on a regular basis.  In the HTC app you need to go into the folder and then select Sync for new messages to come in (other than in the Inbox).  And when typing a recipient in the To: field it will automatically search the Exchange GAL as you type.  The HTC app can search the GAL too but it requires many more taps and is not automatic.

Tasks also show up and tasks with reminders will fire off a notification as well.  In addition, you can actually see the time in a calendar appointment you receive in email.  This screenshot is from the same appointment I sent myself in the above screenshot:

CAP201107121033

I really like this application a lot and have started using it more and more.  It has good responsiveness and great features as compared to the default HTC email app.  Unfortunately there are still some things that aren’t so great in this application, at least for me.

1) You can’t control how often it syncs, only how far back.  It only syncs new emails as items arrive and you have no option to change it.  Not the end of the world, but I like how HTC lets me set a sync schedule based on the time of day (great way to save battery).

2) The widgets that come with it are pretty basic, especially the calendar widget.  The HTC calendar widget has lots of different configurations, including a single item view and a full scrollable agenda view.  The Zimbra widget is a simple square that doesn’t fit as well on the screen as the HTC widget. Also, the Mail icon for the HTC mail client shows how many unread emails you have (similar to an iPhone).  The Zimbra client is static and does not show unread messages.  See the two screenshots below to see what I’m talking about (If you can look past my adorable son):

homescreen1homescreen2

3) Saving attachments from an email is a little annoying because it puts attachments into their own folder under /mnt/sdcard/vmwarezimbra/attachments/<randomnumber>.  In my case my wife sends me a picture of my son almost every day that I save to the phone and the HTC email client saves it into the default Downloads folder.  That makes it really easy to find all of the pictures.  Zimbra saves it into that random folder (in this case the folder 518) so the image gallery list gets cluttered quickly.

CAP201107251710

The only one that really impacts me is the image saving but I can probably work around it.  Now that I’ve been using the Zimbra client exclusively for a while I’ve come to like it a lot.  I’m going to continue to use it going forward and hope they can make some updates to get around the issue I’ve found.

Tagged as: , No Comments
19Jul/112

My Next Step….

Whenever any virtualization blogger makes a post with a title like this it’s usually obvious what the post is about.  So you can probably figure out where I’m going with this.

I’ve decided that it’s time to take on a new challenge in my career. To that end I’ve accepted an Advisory Consultant position with EMC and will be starting in early August. I’ll be able to work with the technology that I love with a focus on two key areas: Tier-1 application virtualization and VDI.  EMC is a great company with huge exposure to virtualization, and the fact that many people in the virtualization industry that I respect already work there made this an opportunity I couldn’t pass up.

For the past ten years I’ve worked at a consulting company in New York City called Kraft & Kennedy.  I was exposed to virtualization very early on (way back in 2001 with ESX 1.5) and was hooked ever since.  I was able to learn the technology and eventually focus my career in that direction.  They allowed me to attend VMworld, blog, tweet, and enabled me to become successful and for that I’ll always be grateful.  It’s a great company with lots of very smart people and I’ve enjoyed my career there.

I’m hoping that having a stronger focus on virtualization will allow me to blog more frequently so you should see more content here soon.  It helps that now I’ll only be writing for one blog - I was previously splitting my blogging duties between here and Kraft Kennedy’s Technology Blog.

I’m really excited about the move to EMC and am very much looking forward to getting started!

Tagged as: 2 Comments
1Jul/113

What being a vExpert means to me

VMware announced the list of VMware vExpert awards today and I was happy find out that I was among those who received the award.  This is the second year in a row for me which made it extra sweet.

The vExpert award is given to those who go above and beyond to promote VMware and virtualization in the community.  That includes the VMTN forums, blogging, tweeting, presenting and conferences, and many other things.  More info on the vExpert award here:  http://www.vmware.com/communities/vexpert/

To me the best part about winning this award is the honor in being included among a list of people in our industry that I truly respect.  We have one of the best communities in all of IT and to be named in a list with some of the top people in our industry is truly an honor.

Thanks to John Troyer and the team of people who put this award together this year. I know it is a lot of hard work but know that the award means a great deal to us and we really appreciate it.  In fact I still have the email from John from 6/4/2010 telling me I won the vExpert in 2010 sitting in my Inbox.  I couldn’t bring myself to delete it or folder it.  It was a reminder of the recognition and a motivator to keep working hard for next year.

If it’s true that you are judged by the company that you keep then I think I’ll be just fine…

Tagged as: 3 Comments
Go to top ↑