Month ago I started to work in Splunk. I joined small team in Seattle, which is working on Developer Frameworks for Splunk. If you've never seen Splunk before I highly recommend you to do this right now. Just try to install it Splunk, download one of the most powerful applications: Splunk App for Microsoft Windows or Splunk App for Unix and Linux and just take a look what Splunk can do for you. Installation process is very simple, bu if you need Manual go here Installation Manual. If you are Minecraft fun (I don't understand this game, and don't understand why people say that this is a game) check Minecraft application for Splunk.
I highly suggest you to try all these, I promise that you will like it. I know that you will like it, because I was so impressed by this product first time I've seen it, and today I'm impressed more, because last month I spent on learning a lot of things around Splunk and I learned how to build applications for Splunk. It is so easy, check my blog post on Splunk Blogs My experience of building Splunk application. And let me know what you think.
I have been using Nexus 5 for about a week, I think that this is enough to make some conclusions and share my experience with you. At first I just want to say that this device is awesome for my needs. As I said I have it for a week and I'm glad that I bought it. This is not my first Nexus device, but my first Nexus phone. Before I had Nexus 7 2012 and Nexus 7 2013 models before. Before Nexus 5 I used Nokia Lumia 920 with Windows Phone 8 as my primary phone, so you will find some notes about some features which I compare to Lumia phone.
This one of the most important things people want to know about this device. At least a lot of them speak or ask about this. This device has 2300 mAh battery. Lumia 920 has 2000mAh, so for me this is already improvement in numbers.
Before I will give you raw numbers for how long I can use this phone, let me first tell you how I use it. On Nexus 5 I sync two emails: gmail and exchange, also I sync Twitter, HipChat, Facebook, I have Flickr upload turned always on (with help of Flickr Uploader), Google Now also is always on.
My daily usage is simple: ~1 hour of heavy usage at morning (Feedly, Chrome, Facebook and Twitter, of course with pictures, sometimes with videos) and at the same time I stream songs from Google Music, after this I have 75-80% battery. In working hours sometimes I check emails, can read some mentions in twitter. By the end of working day I have around 55-65%. On way home I use phone for about one hour, at this time mostly for songs streaming and reading something from Pocket. At home I have 40-50%. I used only cellular data,very rarely Wi-Fi. In screenshot on right you will find that Wi-Fi takes 12% of battery, but this is because Nexus continue to use it for geo-location even if your Wi-Fi is turned off. I will try to turn this feature off for next couple of days and see how this can affect battery life.
Sometimes it can be better, sometimes worse. For example right after I bought this phone in first two days I touched my phone so often, so in first day at 1pm phone was almost dead. Yesterday I made couple Skype calls at morning and at the end at home phone had 30% battery.
Couple things I tweaked: turned off "Ok, Google" feature, because I've read somewhere that it can use battery a lot, and second thing: I always Sing Off from Skype, I feel that it also uses battery a lot and I don't like to see all messages from Skype on all devices I have when I chat on desktop version.
So overall experience is good. I like the fact that I can use phone for whole day without recharging. And if I have unexpected battery drain I always can find which application causes this. One of the examples I told you about where I found Wi-Fi in battery usage, when Wi-Fi was turned off. Another example, one day I found that Inrix started to drain battery even after I killed it, only soft reboot helped me. Unexpected battery drain was a huge pain for me when I used Nokia Lumia 920. I just knew that after using some of the GPS apps it is good to reboot my phone to make sure that I will not find phone dead after an hour or two (after latest GDR3 I did not see this issue much, so maybe it is gone, but I'm not sure).
This is the list of apps I use pretty often and some notes about them:
- Default Emails and Calendars clients. I think that Windows Phone actually has the best default applications for Emails and Calendars when you use Exchange. Nexus has nice app for Gmail.
- Chrome. Synchronization with desktop is awesome, no limits on tabs is huge plus and it just has a lot of features. Internet Explorer is more like empty WebView control in comparing to Chrome.
- Feedly. Right now I glad that Google Reader is dead. Feedly is awesome service. On Windows Phone I used NextGen Reader, it is awesome client as well, but still not so good as official Feedly client on Android. I can say now that I prefer to check rss on my phone. Don't use laptop for this anymore.
- Twitter. On Android/iOS it is always on one step ahead.
- Flickr Uploader. This is unofficial app for Flickr, which allows you to instantly upload your photos on Flickr. Windows Phone also has good one Flickr Central, but I hate that Windows Phone requires Wi-Fi access for uploads, especially when I have unlimited cellular data. And official Flickr client on Android is way better than on Windows Phone.
- Facebook. The same as Android. But having good Facebook messenger on Android is a plus.
- Fidelity. Did not see yet a lot of differences in features which I use, but Android version definitely has more features.
- Dropbox. Windows Phone does not have it. If you don't have DropBox account yet, please use my referral link to get additional 0.5Gb.
- Pocket. Windows Phone does not have it. Did not see any good alternatives or unofficial clients. I love Pocket. Nice service.
- Evernote. Android version is much reacher. I should say that
- Skype. Android version has more features (for example Video Messages), but Skype on Android is annoying because of the logo in notification area if you signed in, and it seems to me that it uses a lot of power when you signed in, even in in background mode. Experience on Windows Phone with Skype was a little better for me.
- Google Voice (use it for free text). Windows Phone has one nice unofficial application GoVoice, but like all unofficial application it is not so good. Also it always shows me "Failed to connect to Google Voice" and at the same time it can receive and send text, weird.
- Mint. Awesome service in USA. Windows Phone does not have application.
- KeePassDroid. Powerful, but ugly, Windows Phone also has some ugly version of KeePass app.
- Google Music. Windows Phone has couple of unofficial applications, but they don't have all features you can get from Google Music on Android. And I know how hard is to support unofficial API (if you don't know I wrote Google Music application for Windows 8 - gMusicW).
- OneBusAway. I like Windows Phone version better. But both are ok.
- Maps. Google Maps are good. But I really like Nokia Here+, especially for offline navigation. However I had bad experience on Jamaica, when I found out only on island that Here+ does not provide navigation service for Jamaica on Nokia Lumia 920. Phone did not tell me when I downloaded maps and the strange thing that Here+ on Nokia Lumia 800 worked fine (my wife had this phone).
- Silent Time. Simple and awesome.
- Android ecosystem is huge, iOS is little bit better, but still it much bigger than Windows Phone.
One more thing worse to mention. Frequency of application updates on Android and Windows Phone, the difference is huge. On first day of using Nexus 5 I found that official Flickr application did not work, on next day I got an update with fix.
Android vs Windows Phone
I like Windows Phone start screen with tiles. I hate Android start screen, but I like Android shell for their features, like details about battery usage and data usage. I feel that Android connects to Wi-Fi much faster.
On Windows Phone I did not use at all Bing services for reading News or finding concerts around (app which you can find by sliding from Search screen). On Nexus I'm trying to understand what I can get from Google Now. From one side it can surprise me (in good way) by showing flight information or reminds me that I should start going to some meeting because traffic is not so good. From other side it does not show me information about how long I need to wait a bus every time I check it. So after I found that I get this information only in 50% of times - I just started to use OneBusAway again.
I feel that Nexus 5 has better response than Nokia Lumia 920 and all applications can be opened much faster, but we are talking about Nokia Lumia 920, which is one year old phone.
Camera is ok. You can take a look on couple examples I made on my Flickr set:
One thing which I found is that camera sometimes does not set location for photos (looks like it does not set when it still searching for exact location), never had this with Lumia. Some of these photos I made in HDR+ mode (you can find out by clicking on View Exif info for each photo).
And I don't feel that camera on Nokia is better. For me they are the same. Soon I will have small trip to sunny place, where I will probably make a lot of pictures with both phones, so there will be a lot to compare.
Nexus is a great phone. Screen is huge, but does not feel that way, it is also very bright. At the same it does not feel like heavy phone (especially in comparing to Nokia Lumia 920).
Very nice phone for web browsing, reading. And as a phone is good too. So I like this phone for features for which I bought it. And I will definitely keep Nokia Lumia 920 around, because of Here+ maps and Camera.
P.S. Just want to mention that I'm a geek. Changing phones once in a year for me is a requirement. I bought this phone not because Windows Phone does not give me everything I want, it is because I had Nokia Lumia 920 for a year. Contracts on AT&T are two years, so I just wanted to get something new and cheap. At the same time I'm not going to buy any new Windows Phone device in near feature, because of one reason: you can sell one year old iPhone 5 for $400, but one year old Nokia Lumia 920 costs $200.
If you are looking for an article with detailed comparison of these three operating systems you are in wrong place. I don't have that. I just want to share with you some experience I had with all three of them. This will be a list of things which I like and don’t like about them. Please feel free to add yours or let me know if I’m wrong somewhere and don’t know how to fix some things.
I was a Windows guy for a long time and I used Microsoft technologies everywhere, mostly because I liked it and it was very easy to learn how to use them. I had a MVP award for two years before my work at Microsoft (you cannot have both, so after I joined Microsoft I lost my MVP award). And yeah I had a blue badge week ago (this is how people name full-time Microsoft employees in Seattle area). But I left Microsoft (short answer I just wanted to find something new, long answer probably will be in one of the next posts). With this I want to say that I had a chance to learn a lot about Microsoft / Windows ecosystem.
Things I like about Windows are…
- Best environment for regular users: Games, Software, easy to install and setup.
- Very good default set of shortcut keys. It was always very easy and intuitive for me to learn them.
- Hardware variety is huge. You can buy cheap or expensive home or business PC, you can buy so many different laptops. And all of these work out-of-box.
- I said it already, but just want to make my point: easy to install and setup operating system and any application on top of it. Highly recommended OS for my mom.
- It is very easy to uninstall software.
- Visual Studio + ReSharper. What? I worked on Visual Studio.
Things I don’t like about Windows are…
- Windows ecosystem requires to have a lot of free space on system drive. Windows itself takes around 40Gb after installation on AMD64 architecture. In time of SSD drives this is definitely not good. Space on SSD drives are expensive. It is hard to have Windows as a host OS and also have couple of other Virtual Machines with Windows on them when you have 256GB SSD drive.
- Windows Update (WU) is not an apt-get (Advanced Packaging Tool) Package Management. WU requires a lot of reboots. You can update only Microsoft software with WU. You need to be aware about all sources where you download your software to know when and how you need to update it. Chocolatey is good apt-get replacement, but only when somebody updates packages you use. I remember that for a long time it was hard to install latest MongoDB 2.4 from chocolatey. Last time package mongodb was updated more than year ago, but looks like somebody made package db.mongodb to fix this problem.
- No bash. Ok, I know that they are some Windows ports of bash (win-bash), but I don’t believe they so good as a default bash environment on Mac OS X or Ubuntu, let me know if I’m wrong. Yes I know about PowerShell. I use it too. It is good, but this is not a bash. Powershell is too heavy, default operators are not very intuitive, you cannot resize PowerShell window, no tabs in default window (I use Console2).
- No workspaces (native support). I really like workspaces in Ubuntu and MacOS. With workspaces you don’t need to buy more than one monitor. Probably this is why I never liked to work on Windows laptops.
First time I met Linux at University. One of my friends showed it to me, I thought it was very cool. I had no idea what to should I do in Linux environment, so once I day I just booted into Linux to learn how hard to do some things which very easy to do with Windows. So most of the time I used Windows, because it was easy, because of the games, and because of all applications I needed for work and study.
After I joined Microsoft I started to use command line on regular basis. I found that for some operations it was much easier to use command line instead of graphic interface. Also I started to write batch scripts to automate some tasks. After this I found that batch scripting is very limited, so I decided to start using PowerShell, which works very well. But at the same time I remembered about bash and Linux, how easy and intuitive it was to work on Linux in bash. So I decided to install it at home on Virtual Machine and start to learn more about Linux again…
Things I like about Ubuntu are…
- In my case it was very easy to install. Today I upgraded 13.04 to 13.10 and lost all of my installed applications, it was sad, but it was very easy to restore all I need with apt-get.
- How *nix systems store settings. Very easy to share settings between PCs and migrate them from one installation to another.
- Debian Package Management (apt-get). It is very easy to be up to date with all software you have installed on your machine.
- You can live in bash. It has more than 24 years of history. By default you have bash, python, ruby for scripting.
- Workspaces. So easy to switch between tasks.
- It is very easy to start use Ubuntu after Windows. The same keyboard layout.
- Ubuntu takes not a lot of space on your drive. This gives you a lot of flexibility to install / maintain virtual machines.
Things I don’t like about Ubuntu are…
- Problems with VMWare, VirtualBox, Remmina Remote Desktop Client in full screen mode on multiple monitors with Unity / Gnome. Some of them were fixed 741869, 734908, and some of them still exist.
- Not all applications I need available on Ubuntu, like Evernote.
- You can meet problems with drivers and hardware.
- Not a lot of Ubuntu laptops / netbooks available on market.
Mac OS X
I’m not really a Mac user. I had only one week experience with it. So no prehistory.
Things I like about Mac OS X are…
- Best hardware. Right now I use pretty old 15” MacBook Pro (without retina display and it is very heavy), and this is still one of the best laptop I ever used. Keyboard, Touchpad, Screen. In Windows world I like Dell XPS and Asus Zenbook, but they still not good as MacBook Pro.
- *nix-like environment. Easy to install software. Easy to share settings. Bash. Mac OS X uses not a lot of disk space.
- More applications than on Ubuntu. Hey, you can play Blizzard games on Mac OS X.
- Virtualization software works very well on Mac OS X. Did not see any issues, so easy to switch between guest machine and Mac OS X.
- Full screen mode for any desktop application. I have no idea why Microsoft did not do the same for Windows 8. This could be a huge win for new Windows 8 ecosystem.
Things I don’t like about Mac OS X are…
- Shortcut keys. It looks like Apple has some list of not-used shortcut keys and every time they need new one they randomly choose one of them. I can admit that maybe it is also hard to use all them after Windows and Linux worlds. Also conflicts in default shortcut combinations driving me nuts, like Command+Spacebar is default combination for Spotlight search and also this is default combination for switching keyboard inputs (languages).
- You cannot install Mac OS X as a guest OS on Windows or Ubuntu. And you need to have Apple hardware.
- No apt-get Package Management by default. Homebrew and MacPorts are good, better than Chocolatey, but not so good as apt-get.
- Windows and Ubuntu much more friendly for keyboard-only users.
At the end
I’m right now in transition state. I’m choosing my next environment for development. I know that I still need and want to develop software for Windows. I know that I really like bash. I know that I really like to use multiple workspaces. I know that I want to have good hardware. So, Apple hardware with Mac OS X on it and keep Windows in virtual environment.
Two weeks ago I participated in Seattle GDG Dev Fest 2013, where I started to work on Bookmarks extension for Chrome Browser. I had a very simple idea to build extension, which allows users to do search on saved bookmarks and navigate to selected bookmark easier than default Chrome Bookmarks Manager (chrome://bookmarks).
Main themes of this hackaton were building Chrome and AngularJS apps. I've never used them, and I decided to build something using both of these technologies. Idea about simple bookmarks management was in my mind for a long time, but every time when I tried to start it I always ended with "It requires a lot of time to finish it, will try later". And so at this hackathon I decided to just try to start. As I told you already I never tried to build any Chrome Apps in my life and this is my first AngularJS project. I mean I've read a lot about AngularJS before and I had some basic knowledge about how it works, but just never really used it.
For this application I used Twitter Bootstrap, because I already knew not from one hackathon that nice interface is important to make first impression. This was my first time of using Bootstrap as well, but because Bootstrap has very good documentation and a lot of examples (and also because my application was pretty simple) it was not hard to figure out how I can apply it.
So, what I learned building this application?
- Don't try to use Bootstrap components in the way they not supposed to work. I was trying to do some crazy things with NavBar to make sure that all elements always will be on the same line. And I ended using default layout from example.
- Font-Awesome is saying that they are compatible with Bootstrap, but they place by default font files in "font" folder, and Bootstrap keeps them in "fonts" folder. It is just annoying.
Almost year ago we published IntelliCommand extension on Visual Studio Gallery. This extension helps you to learn shortcut keys in Visual Studio (check screenshots on Gallery site). IntelliCommand was a result of Visual Studio hackathon event, which I built with my coworkers (btw, we took first place).
For last year IntelliCommand has been downloaded more than 12 000 times. I think that this is good number for so small extension.
Today we decided to publish source code of this extension on CodePlex. Feel free to take a look on it, fix any bugs you've seen or add any features you always wanted.
If you want to build this solution you need to have Visual Studio 2010 with Service Pack 1 and Visual Studio 2010 SDK SP1. We used Visual Studio 2010 on purpose, because we know that there are a lot of people who still use Visual Studio 2010 as main IDE, and also we know that Visual Studio has very good back compatibility model. We built this extension only for Visual Studio 2010, specified that it can be used in Visual Studio 2012 and 2013 and at the end it works on all three versions of Visual Studio. Pretty cool, right?
If you will decide to look deeper in source code, there are some help for you:
- CommandScopeService.cs - this class helps us to find out current scope in Visual Studio. We need it, because different scopes have different set of shortcut keys. For example WinForms designer has completely different set of shortcut keys than Editor.
- KeyboardListenerService.cs - global keyboard listener, which also can filter keyboard events per current process.
- CommandInfosLoader.cs - loads all command bindings available in Visual Studio instance and store all them in CommandsContainer.
- CommandsPresenter.cs - main class which stitch everything together.
- CommandsPanel.cs - special WPF panel, which can calculate size of the panel based on the list of shortcut keys available.
Code is not perfect, because this project always was just a prototype. But I hope that it will give you some knowledge about how to build Visual Studio extensions, and maybe will give you some ideas about some new cool extensions for Visual Studio.