Wednesday, January 23, 2013

OS X vs. Windows

In 2011, I wrote about my initial impressions of a Macbook Air that I had purchased.  At that time, I only wanted the sleek hardware for a new Windows laptop, and I never considered running OS X.  After all, I am a Dynamics GP consultant, a Dynamics GP developer, and my entire world, and that of my clients, is based on Windows applications.

Well, after getting the Macbook Air, I've been coveting the Mac Mini.  I have had relatively bulky mid-tower style PCs as my desktop workstation for almost 20 years, so the incredibly small form factor of the Mac Mini was very appealing.

Over the last year, I've also wondered what it would be like to try and use OS X.  Since I now do all of my development on virtual servers, I no longer install SQL Server, Dynamics GP, or my development tools on my workstation--I do all of my GP related work using Remote Desktop.  MS Office, Firefox, and Remote Desktop probably represent 95% of my work on my desktop computer.  And with multi-platform and "cloud" apps like SugarSync, Carbonite, RoboForm, GoToMeeting, SnagIt, Skype, Evernote, and Spotify, I figured that nearly all of my applications would be available on OS X, just like many of them are available on iPhone and Android phones.

With the release of the updated 2012 Mac Mini, which FINALLY included USB 3 ports, I went ahead and ordered a Mini.  The USB 3 ports were critical for me, since I planned on having an external drive for storing many gigabytes of photos and videos, as well as for full system backups.

I had several days of dizzying disorientation and frustration at first, but after a few thousand Google searches to learn how to use OS X, I eventually became moderately proficient.  After about 2 weeks of part time use, I was able to do almost everything I needed to on OS X with relatively few compromises, and could still interface with the Windows-centric world of Microsoft Dynamics GP consulting and software development.

I'm now fairly comfortable with OS X, and confident that if I had to use Macs exclusively, I could certainly do so.  However, after a few weeks of using OS X, I have decided that for me and my particular work, Windows is significantly more efficient for me to use on a day to day basis.

First, some of the things I appreciated:

1. OS X on Apple hardware can be shockingly fast.   When booting up and resuming from sleep, OS X left my Windows PC in the dust.  And responsiveness and application performance were excellent.  Obviously Apple has a massive advantage here, since it designs the hardware and the OS and doesn't have to deal with the Tower of Babel of hardware that Windows and PCs face.  But the end result is significant.

2. The Time Machine backup utility is like magic.  If you have ever tried to manage Windows system backups, you probably know that most Windows backup software simply sucks.  You may find a backup solution that works, but it isn't pretty, and you often don't really know whether a restore will work when you need it, since it's such a hassle to test system restores.  Time Machine, by contrast, has one primary option:  On or Off.  You choose a destination disk, then click the On switch, and it just does its magic.

3. The application architecture is beautifully simple (or at least it appears to be beautifully simple).  Need to install that utility?  Just drag it to the Application folder.  Some applications used an installer, but the application install and uninstall process was incredibly elegant compared to the hornet nest of Windows MSI installs, DLL files, registry entries, byzantine Windows and application directories, and crazy disk consumption. 

4. Spotlight rocks.  Years ago there was a wave of desktop search tools for Windows.  Some worked okay, some were horrible.  I purchased X1 Desktop Search for Windows, which is very powerful and met my needs.  But it was an add on and has its quirks.  Well, Spotlight appears to be a near perfect desktop search tool.  It's extremely fast, very accurate, and eliminates many tedious tasks that are typically performed in Windows, such as navigating around in Windows Explorer. 

5. Boot Camp and Windows VM software make running Windows on a Mac a breeze.  Boot Camp makes it shockingly easy to install Windows directly on the Mac.  Just tell it how much space you want for your Windows partition, then click a few times, and presto, the machine restarts and begins the Windows installation process from a USB drive.  And although I haven't tried it, it seems that Parallels for Mac, which lets you run a Windows virtual machine within OS X, works very well also.



While I appreciated those aspects of OS X, there were a few key things didn't work well for me in OS X.

1. SMB file sharing doesn't work.  I use such shares a lot to transfer files between my virtual servers and my workstation, so I setup file sharing on the Mini and it appeared to work great.  It only took a few clicks and I was able to access the Mac shares from my Windows machines.  Well, a few days later, I tried to actually use the Mac shares, and it didn't work. Windows said that my password wasn't correct, but it definitely was correct.  After a few hours of searching, I found that apparently SMB was broken in OS X 10.7.  It works when first setup, but then it simply stops working.  You have to turn off sharing, then turn it back on to restart the SMB service, and then it will work again for a while, but will eventually stop working again.  On the server version of OS X, this restart can be done via script, so server admins were scheduling a task to constantly restart the SMB service.  But on the desktop OS X, I was unable to find a way to automate this workaround.  There is a third party Windows networking product by Thursby Software called DAVE that looked very promising, but within 30 minutes of testing it, I ran into a glaring bug--you can see the Mac shares from a Windows machine, but you can't copy or paste any files on the Mac share.  Thursby let me know this is a bug they are working to fix, but the fact that neither Apple nor an add-on app can get Windows networking to work reliably was not a good sign.  (There are other workarounds like installing Samba, but there are drawbacks that I wasn't willing to deal with).

2. The keyboard is a second class citizen in OS X.  When I use Windows, I try and use the keyboard as much as possible, and the mouse as little as possible.  For instance, I can press ALT+E, S, V in Excel a whole lot faster than I can use a mouse to try and use the Paste Special command.  I am constantly using CTRL+C, X, V, Z, Y, A, S, F, among others.  I regularly use F2, F3, F4, F5 in typical Windows apps, and CTRL+Home, End, Up, Down, Left, Right, and Page Up, Page Down all get a workout on a daily basis.  Although there are some equivalents for these shortcuts in OS X, I found that the placement of the Command key makes it much more awkward to use for many of the shortcuts, and many of the shortcuts involved things like Shift+Command+(key), which felt like Keyboard Twister compared to Windows.  Over time, I saw that although there were many keyboard shortcuts, many seemed like afterthoughts.  Many were bizarre two-handed contortions that defeated the purpose of keyboard shortcut.  I also assessed that many things on the Mac were simply assumed to be tasks that would be performed by the mouse.  While the mouse worked fine, it was just much slower for many tasks.  OS X did have a great utility to add keyboard shortcuts and remap shortcuts, but that led to a lot of non-standard custom shortcuts that would then interfere with other shortcuts in some applications.

3.  The vaunted Mac does have bugs, quirks, and issues.  Before using the Mac Mini and OS X, I had the perception that Macs worked perfectly, or nearly so.  I now believe that Macs have just as many issues as Windows PCs, but just in different areas and perhaps in less critical areas.  The Apple forums are filled with all sorts of problems, so it didn't take me long to realize that my perception of Macs was not well grounded, and I ran into my own issues to prove the point.  In my case, there were a few such issues that prevented me from continuing to use OS X.  First, I learned that OS X doesn't seem to fully support Wake On LAN, at least not anymore.  A WOL packet does seem to partially wake a sleeping Mac Mini, but it does not wake it fully, or does not wake the video card or displays.  This means that if I enable sleep on the Mini, I can't send the WOL packet and connect remotely like I can with my Windows workstation.  There might be some other solution, but I gave up looking.  More critically, I found that when the Mini has been sleeping for a while, after it wakes, I am unable to login.  I either see a black screen or the screen saver, and pressing the keyboard or using the mouse does nothing.  I have to press the power button to try and get it to sleep and wake again (which occasionally works), or I have to hard reset the machine by holding the power button for several seconds.  I found an Apple forum post that indicated that others had this issue, but it isn't clear if it is due to HDMI connections, monitor input selection, some other hardware factor, or an OS X bug.  Regardless, with my monitors, I was having to hard reset the Mini every morning just to login, which is something I definitely don't have to do with my Windows 7 workstation.  I suspect that Macbooks and iMacs probably don't have this issue, so it may be unique to the Mac Mini.

4.  Font sizes are the deal killer.  Even if everything worked perfectly with OS X and the three issues I've listed above were fully resolved, the one thing that appears to be unresolvable is the difference in font sizes between Mac and Windows.  For technical reasons that are at the edge of my knowledge, a 14pt font on the Mac will look more like a 10pt font on Windows.  A 10pt font on Windows will look more like a 7pt font on the Mac.  Basically, all fonts end up being about 25-30% smaller on a Mac than they are on Windows.  This means that if a client sends me a Word document in 10pt Arial, it's virtually unreadable on the Mac.  I have to zoom to 130%-140% to make the document look like it does it Windows.  If I save that document and send it back to a client, it opens at 130% on Windows and looks comically massive, and they then have to zoom out to read the document normally.  This is a major problem for me, since it either constantly inconveniences me, or I end up inconveniencing my clients who all use Windows.  For this issue, I don't believe there is any workaround.  Due to the way fonts are rendered and sized in OS X and Windows, there is simply no way to make a Mac render fonts the same way that Windows does.  This was the LAST thing that I would have expected to cause me to give up OS X.  I thought it would be the user interface, or some critical app that wasn't available on OS X.  Nope, it turned out to be fonts.


There are plenty of other pros and cons, and there are dozens of other requirements and considerations that I didn't cover, but those were just some of the prominent items that come to mind.  For other roles, other purposes, other requirements, and other environments, OS X can probably be a great solution if you don't mind spending a lot more money on the hardware.

So, now that I've learned a little bit about OS X, I'm going to install a large SSD in the Mac Mini, install Windows 7, and get back to work.  With that, I'll have the hardware of the Mini, with the Windows OS that works best for me.

Steve Endow is a Dynamics GP Certified Trainer and Dynamics GP Certified IT Professional in Los Angeles.  He is also the owner of Precipio Services, which provides Dynamics GP integrations, customizations, and automation solutions.

http://www.precipioservices.com


Sunday, January 13, 2013

Payroll 401k Submission

Okay, we have been a little radio-silent over here at Dynamics GP Land.  Blame the holidays.  Blame the year end crush in our line of work.  Blame sick kids and sick spouses.  Know that we have thought of posting often, and just didn't quite make it :)   But here we are, back in the saddle.  And I have guilted Steve as well, so I am sure he will be coming along shortly with some mind-blowingly complicated and obscure technical problem. 

But for now, I will embrace the topic of the moment- Payroll.  January is always this way, right?  Just plain crazy with payroll year end and issues and payroll year end and issues.  So I thought I would share a few things I have developed over the years to help with payroll implementations in general.

Item number one is a common request, which is a file for 401k submission that can be sent to the 401k provider after each payroll.  Here is a view I have created that will summarize the payroll deduction, benefit (match), and catch-up contribution for each check date.  You can then use this as a basis for either a SQL Report or a SmartList Builder depending on what you already own or have in place.

The view is set up to allow for scenarios where you might have multiple deduction and/or benefit codes for each item (deduction, match, and catch-up).

CREATE VIEW [dbo].[CSVW_401K]


AS

With Benefit_CTE (AuditTrail, CheckNumber, CheckDate, EmployeeID, BenCode, BenAmount) as (Select B.AUCTRLCD AuditTrail,B.CHEKNMBR CheckNumber, B.CHEKDATE CheckDate,B.EMPLOYID EmployeeID, B.PAYROLCD BenCode, B.UPRTRXAM BenAmount from UPR30300 B where b.PAYROLCD in ('Insert401KMatchBenefit1', 'Insert401KMatchBenefit2') and B.pyrlrtyp=3),

Deduction_CTE (AuditTrail, CheckNumber, CheckDate, EmployeeID, DedCode, DedAmount) as (Select A.AUCTRLCD AuditTrail,A.CHEKNMBR CheckNumber, A.CHEKDATE CheckDate,A.EMPLOYID EmployeeID, A.PAYROLCD DedCode, A.UPRTRXAM DedAmount from UPR30300 A where A.PYRLRTYP=2 and A.PAYROLCD in ('Insert401KDeduction1','Insert401KDeduction2')),

Extra_CTE (AuditTrail, CheckNumber, CheckDate, EmployeeID, ExCode, ExAmount)as (Select c.AUCTRLCD AuditTrail,c.CHEKNMBR CheckNumber, c.CHEKDATE CheckDate,c.EMPLOYID EmployeeID, c.PAYROLCD ExCode, c.UPRTRXAM ExAmount from UPR30300 c where c.PYRLRTYP=2 and c.PAYROLCD in ('Insert401KCatchUpDed1','Insert401KCatchUpDed2'))

Select Deduction_CTE.EmployeeID, Deduction_CTE.CheckNumber, Deduction_CTE.CheckDate, Deduction_CTE.DedCode, Deduction_CTE.DedAmount, Benefit_CTE.BenCode, Benefit_CTE.BenAmount, Extra_CTE.ExCode, Extra_CTE.ExAmount from Deduction_CTE left outer join Benefit_CTE

On Deduction_CTE.AuditTrail=Benefit_CTE.AuditTrail and Deduction_CTE.CheckNumber=Benefit_CTE.CheckNumber and Deduction_CTE.CheckDate=Benefit_CTE.CheckDate and Deduction_CTE.EmployeeID=Benefit_CTE.EmployeeID left outer join Extra_CTE on Deduction_CTE.AuditTrail=Extra_CTE.AuditTrail and Deduction_CTE.CheckNumber=Extra_CTE.CheckNumber and Deduction_CTE.CheckDate=Extra_CTE.CheckDate and Deduction_CTE.EmployeeID=Extra_CTE.EmployeeID
GO  

Hope this helps those of you in need of 401k submission information :)

Christina Phillips is a Microsoft Certified Trainer and Dynamics GP Certified Professional. She is a supervising consultant with BKD Technologies, providing training, support, and project management services to new and existing Microsoft Dynamics customers. This blog represents her views only, not those of her employer.