Wednesday, August 27, 2014

Backup Exec 2014 Review


I'm here to write a review about Backup Exec 2014. I haven't seen any "real" reviews by end users yet so here I am making one that will hopefully help some people decide if this is the product for them. I'm not going to do an extensive all-bases review, only what it's like to test this software in a real world scenario. Additionally this will sort-of act like a log of setting up Backup Exec 2014.


I'm an IT administrator at my office and I've been dealing with Backup Exec 2010 for several years now (and have hated most of it), but our current financial situation prevents us from making a full scale switch to other products. We're in the midst of  a staged transformation to another product, but we're still going to use Backup Exec. I've also used Backup Exec 12 (not 2012) for a bit but it's nearly the same as 2010, years ago.

So I decided, eh, in the transition, let's migrate to Backup Exec 2014. So I installed Backup Exec 2014 in a test VM and set up test machines.

Why on Earth would you think this is acceptable on a server Microsoft?

Here's my backup setup:
  • VM running Windows Server 2012 R2 with 8GB of memory in VirtualBox (on Windows 7)
  • 4 hardware machines (All Dell Optiplex 745)
    • Windows 7
    • Windows 8.1
    • Windows Server 2012 R2
    • Windows Server 2008 R2
  • NAS storage target
  • All systems are on the same LAN

Our environment is not virtualized (though I'm starting to see the benefits of it with this VM), so this would be a standard hardware-based place.



I skipped Backup Exec 2012 because it sounded like a train wreck and it was good idea not be part of it. This installation is not an upgrade to 2010 - for some places I know this will be a dealbreaker. This is a clean install with some testing machines. Make sure you test your backup product before you commit to it.

Setting up the backup server




The first thing I had to was setup Backup Exec 2014 on a VM. This took about 4-5 hours, between various factors of running a VM off an external hard disk (which made it abysmally slow), joining our domain, and configuring accounts. I made a few mistakes while setting up backup exec and it throw some wild exceptions, like OBJECT NOT FOUND[]. I was a little worried at first. Though once I configured the accounts properly Backup Exec ran pretty well.

At this stage I learned you don't run a VM over USB3, it'll be excruciatingly slow.

Setting up remote agents

Backup Exec team: Please make a way to NOT have to type this in every time.
On Backup Exec 2010 you have to push remote agents - which are small programs that run on client machines and facilitate data transfer to the media server. In 2010 they were a pain in the ass to send to end users, and they still are in 2014. A lot of things can go wrong, and on mine they did - I had turn off Windows firewall on the remote system to push it through. Strangely, on our 2010 installation I don't have to do this - perhaps I didn't fully configure them, so I won't mark it on that.


One thing I really wish they would implement is saving remote computer credentials when doing things with agent push. Our domain has a single backup service account every machine gets through a GPO - I doubt it is too much different at other places because it'd be a logistic pain in the arse to have multiple accounts unless they were on different domains, backup servers, etc.

I additionally noticed that agent updates appear that they will be significantly easier to perform in this version than 2010. In 2010, (as far as I knew), you had to essentially act like you were pushing a new agent to the server. Now you can just right click and click Update and it will update the agent.
Additionally, a lot of the tool tips have strange blank spots. It looks weird in the UI.

Automatic agent updates? Sounds great!

I wasn't able to test this (so far) because there haven't been any agent updates since I started using this product.

I did run into some issues pushing the agents to remote machines. Visual C++ Redistributable 2010 x64 would not install on my Windows 8.1 machine throwing error 1603 (I love this code). I couldn't figure it out. I manually moved the RAWSX64/VCDIST folder to the desktop and ran it through that - it was easier than 2010 but still annoying I had to do it to begin with. Since I use PDQ Inventory/Deploy, I might be able to build a package to automate it in a more reliable fashion. The entire app hung (though I'm used to Backup Exec doing network tasks on UI threads... come on Symantec!) and it eventually died.

Better than just hanging forever I guess.
I'm still not impressed with what a pain agents are but they're significantly easier to deal with than in 2010. I would prefer the agents check in with the server, find out what the highest level they can use is, and automatically update to them via the internet rather than through the network (with an ability to disable this).

Backing up

Probably the second most important part of this review talks about actual backup. This isn't much of a product if it can't do that. Coming from 2010 I hated setting up backup jobs, having to configure everything manually for a full, and then doing it again for an incremental - I was very surprised (and excited! sort of) to see Backup Exec have a nice wizard to create backup jobs, where it creates both for you and picks what it thinks is a good time. I didn't have enough jobs to figure out if it tries to do schedule management, but if it does (e.g. it doesn't schedule 20 jobs on the same night) that would be a HUGE timesaver for people coming from 2010. After adding my four backup jobs, it didn't seem to - though I guess having 4 jobs (2 concurrently) at the same time would mean the next 2 fire off as soon as the others are done.


HALLELUJAH!


The actual backup process is fairly smooth. The job activity window hasn't changed too much since 2010, but thank god they changed from actual bytes to bytes in GB. I would always have to count the number of digits to figure out how big 452013456756 bytes is. The job log hasn't changed much besides in color, which is a bit of a shame. It's sometimes a pain to drill into it to find errors.

Left: 2014 Job Activity Window | Right: 2010 Job Activity Window



One weird quirk I have found that still lives in Backup Exec is that the verify stage does not have a percentage indicator - now, I don't exactly know how it verifies (target vs recorded backup? target vs source?), but you would think since it's verifying items, it would know the size of the source it's verifying against, which would provide an ETA/percentage.



My first full backup (of the backup server) took about an hour for about 20GB. Not bad considering our bandwidth to the NAS target (this seems to max our our 1Gbps lines). There was no error! That's a good sign. Well, in terms of Backup Exec anyways.

Once a machine has backed up it indicates it has backed up in a nice little 7 day calendar that's a nice little addition. It makes it easier to see if a job is failing hard.

The next day I returned to my VM I found the backup of the backup server that night had failed. I believe it had to do with using the System Logon Account (which is set to the default credentials for backups) which in my domain does not have Logon as a service/batch job right.

One thing of note is that creating a backup job with multiple servers is possible again. I heard there was a lot of outrage at 2012 because of this and I didn't see any way to do this in 2014 - though I *heard* it was partially back. I poked around a bit and found out how to do it - it's not as intuitive as I'd like but its there.

First you select Backup to *your target* from the Backup and Restore tab. On the left, click Edit.

From there you will see a window with selections. At the bottom press the + button to add another server.


After that you can select a new server.

The window with the + button will allow you to create a selection like Backup Exec 2010 after you add the second server.

Restoring a computer/server

One thing I noticed in the home tab of 2014 (and I think it's in 2012 as well) was SDR, Simplified Data Recovery. I hadn't seen it in Backup Exec 2010 so I googled it and it seems to be a different way of restoring your data - rather than install your OS again and then have the agent us Shadow Copy to restore the system, you boot to a Windows PE image Symantec has made and it downloads your backup while the system runs in RAM, so in theory it's much faster (in terms of Recovery Point Objective)
Simplified...?
I've had this idea for ages, and always hated how complicated the restore for a fully downed system in 2010 was, it seemed like a huge waste to install the OS, then restore the same OS, so this seems like a good addition. I've seen other vendors have this feature, so even though it's late to the game, it's better than nothing.

After my Server 2012 R2 backup completed, I noticed an alert, and I clicked on it.
Well it's the thought that counts I guess.


That's pretty disappointing. After doing some research it is due to them using WinPE 4 which does not support 8.1/2012 R2. WinPE 5 does support 8.1/2012 R2, but does not support vista or Server 2008. It would have been nice to be able to do both disks and manually choose. It's not a perfect solution but it's far better than not having it for the new (and much better versions) of these OS.

But does it work?

It sounds like it can talk the talk. Let's see if it works.

Before I did anything I created an SDR disk with only my Windows 7 machine drivers. It was painless and easy, though it should say it will take a while because DISM tools (Windows Imaging tools) are really resource heavy and take a long time to work (it appeared to have stalled, but it was installing... something).

Please work. Please.

While I burned this to a disk I booted up a Ubuntu disc and poked around the Windows 7 filesystem.


Wheeeeee!


I eventually read a guide on how to speed up my computer, and deleted system32 (and a lot of other stuff). It was pretty fast actually! It gave me an error right away.


Do your thing!

The SDR appears to be based on Windows 8's PE (preinstall, the "live cd" minimal version of windows you use to install windows), though it has Windows 7's "hourglass" animation (spinner) and title bars but Windows 8's progress bars. Weird.

After I accepted the license agreement it started networking. It took like 5 minutes to load, and then I get a basic recovery screen with some basic tools like mapping network drives, ping, powershell... etc.

I clicked recovery and connected to a backup exec server - note the credentials you use are the service account, not the system logon account (it wasn't specified anywhere).

Now excuse my terrible picture-of-a-computer screen (an internet sin!) images but I wasn't running this in a VM so I don't have quality screenshots of the process. Real world testing problems I guess.

I had a hiccup - it froze trying to load the disk geometry (partition layout) part of the wizard and I had to restart. Bummer.

When I clicked next, the window froze and I was unable to continue.
 I tried it again (took another 10 minutes to boot) and it worked like a charm. It could be related to me having multiple windows open (command prompt, ping), though it really should freeze to begin with.


RPO in action.
All in all recovering this machine was fairly easy - far less work than a manual restore where you install the OS to recover the OS and it seems much more streamlined (I've had recoveries go very wrong and pretty much be worse off than not working).

One thing I did notice that irritates me is that the string (the lines of text) are poorly checked - some strings don't have a period at the end when they clearly should. If you are building a professional product it seriously matters - if you are charging me thousands of dollars you seriously need to make it professional. Additionally I noticed it gives you a link to go to if you need help - not much use when there isn't a web browser included in SDR (firefox would fit nicely if you stripped out the branding, hint hint)

So it worked. With a few bumps in the road. But it worked which was the point.

Convert Physical to Virtual

This feature was in Backup Exec 2012. We aren't VM users here (we seem to be behind the times according to others) so I thought this was interesting. After my Windows 8.1 machine backed up, I ran 'Convert to Virtual'. It gave me defaults it seemed so I pressed OK to see if the next screen would ask what I would turn it into.
It added a 'Disconnect' button a few times and removed it under the dialog.
I saw the above screen for about 10 minutes. It appeared to be doing something, it was chugging pretty hard. It eventually failed saying I never specified what I wanted - which is weird. Why have defaults if you don't set them up? Why not make the next screen the page where you setup the conversion... and why did it take 10 minutes to tell me it was not setup properly?

Anyways, I eventually edited it to choose Hyper-V which I was going to install on my Server 2012 R2 testing machine. After a while tracking down the vmguests.iso (which is in the system32 of the Hyper-V host), I finally started the conversion.
I dropped it from 2 CPUs to 1 CPU and cut the ram to 2GB from 6GB so it wouldn't kill the server. It seemed to make fairly fast progress, about 1.2GB/min (which is about right for our network). While it was restoring I checked into our target host's Hyper-V Manager to see if it was seeing anything.

Wow! It seems to be working.
It finished a few minutes later and I started it up in Hyper-V. To my surprise it seemed to boot well (though slowly on this old hardware).
I can't stand the dumbed down strings in Windows 8.

It seems to run through OOBE again to get drivers installed properly, which is proper procedure to migrate to dissimilar hardware (a VM).

It works!

Well, I know this isn't a comprehensive test, and I'm not migrating big servers, but I'm pretty damn impressed with how easy this was to migrate without having to do a ton of work. One thing I did notice is that it did not have a network adapter configured by default - I'm going to go out on a whim and say this is likely to prevent network issues, so you don't accidentally boot up a second DHCP server or something. It was fairly trivial to go into Hyper-V and turn one on. I poked around a bit and found it worked just like when it was physical.


I am impressed.

Conclusions

So far I have been using Backup Exec 2014 and have liked it. I won't go out of my way to say I love it and say HERE USE THIS! without research on your own, but I feel it's a good upgrade to 2010. The interface takes some getting used to but they seem to have organized it fairly logically and I didn't have too much of an issue learning what is where. I have to say it is somewhat of an improvement over 2010 in terms of UI design, but some of the progress indicators feel out of place, especially the indeterminate black spinner.

There are still definitely some issues though. In some areas I think the UI tries to be too playful and flashy and it looks a bit goofy. 

The main interface


Pros
  • Physical to VM transfer was incredibly painless
  • Backup Scheduling wizard makes new jobs a snap (compared to 2010)
  • SDR takes a lot of work out of the old style of backup exec restoration
  • UI speeds up tasks that were somewhat aggravating in 2010 (Making Full + Incremental jobs, Updating agents, settings)

Cons
  • Agent push still fails far too often (seems to be due to Visual C++ versions)
  • Still hangs in some spots (far less than 2010)
  • No SDR option using WinPE 5 - so no Windows 8.1/2012 R2

On a scale of 1 to 10 I'd give it a 7.5. 
It does a lot of things right (compared to previous versions) but there are still things I don't like about it but they're slowly disappearing. But don't take my word for it - try it yourself.

As we deploy Backup Exec 2014 in the coming months I will update this review.

Sunday, May 25, 2014

Android Studio vs Eclipse

In the last 6 months I have used Eclipse heavily to develop an Android app that made use of a RESTful API. After I finished that project, I started on my own personal project, using Android Studio (0.5.8 Canary). I've had about a week on Android Studio and have some thoughts on what each is like, if you're looking into picking one IDE and going with it for a project.

Eclipse

Eclipse is a full featured IDE that supports a lot of languages and forms the basis of many different IDEs. I've used Eclipse extensively through academic and non-academic times, and any programmer is bound to use it at some point, from Java to NIOS II.

As such, Eclipse is very heavy on memory usage (500MB for 1 open java file).  With Android ADT, it works fairly well with Android, compiling fast and providing nice features such as mouseover tooltips and quick fixes that Android Studio does not really have.

I've additionally used Eclipse on both my Macbook Air (10.9) as well as Windows 7 (and some Windows 8.1) and it seems fairly stable. Over the course of about 6 months it crashed maybe twice, which is fairly good for an IDE of it's size.

There are some drawbacks I have for Eclipse that I've noticed over the several years I've done Android Development.


  1. While developing with Eclipse is possible, it still feels like a plugin rather than an IDE for the job. It's easy to lose track of windows and items compared to Android Studio.
  2. As stated above, it uses much more memory than Android Studio.
  3. The XML editor has a strange bug on both Windows and Mac, where as you highlight things, text appears as if you were scrolled to a differnet position. Changing the cursor position does this as well and I cannot figure out why it does this, but it's seemingly random. It essentially forces you to restart the IDE as editing is impossible without breaking everything.
  4. The manifest editor, while handy, is way too big for even a 1080p monitor and is clunky.
  5. The XML editors cannot be copy pasted into - if you do, it will insert your text at the top of the XML document instead, which is confusing, as if you do not notice it, R will no longer compile, and you can spend hours trying to figure out what's wrong.
  6. Projects with multiple libraries in Eclipse sucks. My last project had about 5 or 6 libraries from source, and combined with Git for collaboration on the project, it was a nightmare and we constantly had to fix everyones setup. I've noticed on Android Studio it does it much better.
  7. Git support in Eclipse sucks. Period. Android Studio does it well, except on my mac is hangs on every single push and loses my commit as well.



Android Studio

Android Studio is a newcomer to the Android IDE scene, coming out in May 2013 at Google I/O. At the time of writing it is in a "preview state", not reaching beta. It is based on IntelliJ IDEA, which powers other IDE's like Pycharm.

In my experience using Android Studio, there are some great features as well as some serious drawbacks. The biggest strength I've found so far for Android Studio is the Gradle Build System, which is like a scripting language for building an application. As a small time developer I found it pretty overwhelming to use, so if you switch from Eclipse, be ready to sit down and learn how it works for a few hours.

Once you learn how Gradle works though, there are some nice things, such as using 2 lines in the build script to download and compile a library into your project via Maven. Eclipse was able to do this but it was very clunky didn't work well. It also lets you script how things are built, like using some resources for generating one APK and others for another. I haven't used these feautres as I don't have advanced apps like that, but it would be interesting to see them in use.

It also has better autocompletion than Eclipse most times, giving suggestions that make coding easier for the most part.

However, there are some serious drawbacks I hope are addressed.

  1. It uses Java 6 on Mac OS X, which is unacceptable in this day and age. Java 6 support ended a while ago, and I don't think installing a security risk on my machine is acceptable.
  2. Since I don't use Java 6 on my mac, I forced it to use Java 7 by editing the info.plist file in the app package. It breaks the update system which is annoying. The biggest issue is that it can use JDK 7 on Windows, but not on a Mac.
  3. On Mac OS X, it is absolutely unstable. I understand it's a preview and there are bound to be bugs, but I used the Windows version for several hours and had 0 issues. On my Mac? It's a freeze every 10 minutes. Change run configurations? Hang. Refactor? Hang. Git push? Hang, every single time. It wastes a ton of time. I'm seriously considering running Android Studio on my Windows 8.1 VM so it stops crashing, but I don't know if it'll run well with 3GB of RAM.
  4. "Quick Actions" are very annoying compared to Eclipse:
    1. In Eclipse, if something has a "quick fix", you mouse over the underlined item, and after a few milliseconds, several options appear, and you can click on one of them.
    2. In Android Studio, you put the cursor over an underlined item and then press Alt + Enter. This is good for keyboardists, but half of the time it doesn't open the menu and instead puts a line break, putting in more errors. I think it is due to a long delay of detecting where the cursor currently is, and it breaks the feature a lot.
  5. A final issue I have is that compiling projects with Gradle takes substantially longer than Eclipse - it takes about 20 seconds for a project of the same size compared to about 7 in Eclipse. This is significant as I test changes all the time, and that 13 seconds adds up to minutes if I test changes 50 times in a day.
  6. Android Studio has no GUI for XML files (except layouts) like the manifest. While the Eclipse one was clunky, it was nice because I didn't have to go to Stack Overflow every single time I needed to add a permission or change something in the manifest.

Verdict

Eh... I'd probably go with Android Studio. The gradle support is really nice, and developers are putting their libraries into Maven which makes it really nice to use libraries now. The crashing issues are really crippling, and hopefully will be fixed soon. I'm finally learning some of the keyboard shortcuts (though I don't like refactor). Eclipse feels clunky and can't be as focused on Android as it needs to be.

That said, Eclipes is still a fine IDE, and is wonderful for doing Java with.


Saturday, January 11, 2014

Learning Python

So I've started to learn Python. It's an interesting language. Everything is very simple, sometimes too simple... I'm trying out some Tkinter GUI work, and it's a great framework. Puts swings layout managers to shame (so far). I've made a project called EarthPorn-Downloader, which downloads images from the EarthPorn subreddit, which has lots of great backgrounds with good photography of Earth. It's a work in progress. I'll be updating it over time, hoping to make a wallpaper downloader app that is cross-platform.

I also have just published my secret project, Mass Effect 3 Coalesced Mod Manager, which is hosted here and all development was documented here. I had to do it in secret because I didn't want to get banned for making modding tools in Mass Effect 3.

Saturday, January 26, 2013

Android 4.0.x reboots when getting Wifi Direct invitation

I have been building an android app that uses Wifi Direct.  I have noticed a lot that when my ICS device receives an invitation from another device to connect, it just reboots. It gives me this stack trace:


01-26 14:37:12.520: E/AndroidRuntime(481): *** FATAL EXCEPTION IN SYSTEM PROCESS: WifiP2pService
01-26 14:37:12.520: E/AndroidRuntime(481): java.lang.NullPointerException
01-26 14:37:12.520: E/AndroidRuntime(481): at android.net.wifi.p2p.WifiP2pService$P2pStateMachine.notifyP2pInvitationReceived(WifiP2pService.java:2331)
01-26 14:37:12.520: E/AndroidRuntime(481): at android.net.wifi.p2p.WifiP2pService$P2pStateMachine.access$8000(WifiP2pService.java:444)
01-26 14:37:12.520: E/AndroidRuntime(481): at android.net.wifi.p2p.WifiP2pService$P2pStateMachine$InactiveState.processMessage(WifiP2pService.java:1368)
01-26 14:37:12.520: E/AndroidRuntime(481): at com.android.internal.util.StateMachine$SmHandler.processMsg(StateMachine.java:881)
01-26 14:37:12.520: E/AndroidRuntime(481): at com.android.internal.util.StateMachine$SmHandler.handleMessage(StateMachine.java:741)
01-26 14:37:12.520: E/AndroidRuntime(481): at android.os.Handler.dispatchMessage(Handler.java:99)
01-26 14:37:12.520: E/AndroidRuntime(481): at android.os.Looper.loop(Looper.java:137)
01-26 14:37:12.520: E/AndroidRuntime(481): at android.os.HandlerThread.run(HandlerThread.java:60)

I looked at the source code and it seems to be referencing a group object that is possibly null. There are no workarounds for this but I have found that if you are forming a group you should try to have the ICS device initiate the connection or it may possibly reboot. This I believe was fixed in Jellybean but I am not sure - Jellybean (4.1/4.2) seems to have their own issues, but less-so. They don't reboot the device that often. Too bad the connect() method is a real hit and a miss...

Tuesday, January 15, 2013

New App coming soon

I know I haven't posted in a while, but I am working on a new app.  I've been doing other work that I can't publish on my blog unfortunately. Hopefully by the end of the month my new app will be ready. It will have a free and pro version priced at $0.99 or $1.49.

Saturday, December 8, 2012

Ingress APKs




This page hosts links to the APK files for installing the game Ingress on Android devices. Use this page if you need to download Ingress but are unable to do so on your device. Ingress is free. If you have access to the Google Play store, you should download it from there instead (and get updates):
https://play.google.com/store/apps/details?id=com.nianticproject.ingress

When new versions are published I will update this post.

Version 1.20.0 1/30/2012: http://www.mediafire.com/?9uwf1jr15f12g61 Note: This one might not work. IT uploaded strangely fast.
Changelog:

* Bug fixes.
* Rendering improvements.
* User setting to enable/disable email notifications.
**** New Permissions: PREVENT PHONE/TABLET FROM SLEEPING, Toggle SYNC


Version 1.18.1 1/18/2013: http://www.mediafire.com/?wb9neg1jbroempn
Changelog:
* Many bug fixes.
* Improved XMP explosion animation.
* Improved memory usage.
* Various UI enhancements.
* Faster app resume on all Adreno GPU based devices.
* Improved performance.
Known issues:
* Portal shields are nearly invisible in the map view.

Version 1.12.5 12/22/2012: http://www.mediafire.com/?i0wzgsbsrfo19j1
Changelog:
* Many bug fixes.
* Inventory size is now capped.
* UI fixes.
* Performance improvements.

Version 1.08.1 12/5/2012: http://www.mediafire.com/?t3prt2es0dccusc
Changlog:
 * Bug fixes