Wednesday, October 30, 2013

Dynamics AX community

I recently got a chance to speak to some of the Microsoft team members at AXUG Summit 2013 and got an opportunity to see some of the upcoming changes around the Dynamics AX community.  One of the major changes I have seen is in the upgrading of the Websites associated with AX (community, customer and partner source, and the documentation pages). One of the key aspects of this change is in the ability to search for things. As anyone in the community knows, the search feature for all the AX related sites was broken at best. After having some of the pages demo'ed to me, I was actually able to find what I was looking for using the search mechanism on the site without spending 4 hours tearing my hair out.

Customer source got a new look and feel that makes it seem much more like Windows 8 and brings it in line with many of the other Microsoft Web pages that have recently been modified (sorry about the picture quality .

The community team has been working hard to revamp the community site and give it a more modern Visual Studio 2013 look and feel as well as adding some gamification in the way of badges and experts.

I also had a chance to speak with several members of the technical documentation team and had some long honest discussions about the state of AX technical documentation. What I found was that all the members of the Microsoft team seemed very responsive and genuine in their desire to make things better. It really feels like Microsoft is making an honest effort to reach out to a long neglected community and attempt to bring them together. They have also created a Microsoft Dynamics AX council in hopes of reaching out to the community and using members of the community to provide feedback on upcoming products as well as access to beta previews of software as well.

When you add these changes to things like the Microsoft Garage (BTW, Mouse Without Borders is amazing), and the Microsoft RDP client for Android, you start to see something of a shift in the mentality of Microsoft. They seem more fun lately, like they are trying to change their image (without trying too hard). I really like what they are doing and I hope that this trend continues because I know that there is much work to be done in order to try and push developers into this platform (there is a real shortage of good X++ developers).

Friday, October 18, 2013

GNotiPy Part II

Before I pick up where I left off last time, I wanted to make note of the screen capture software that I have been using for these posts. I have been using this free and open source screen capture software called Greenshot. It is terrific and I wanted to take the time to give them some credit.

If you haven't seen part one of this series, please read this first.In this post I will discuss how to set up Git and Github in Eclipse so that you can use it for your code. I will also go over setting up a repository in Github . Finally we will go over impoprting your repo into Eclipse and performing your first commit from Eclipse.
In the 3rd part I will go over the actual code and how to use the Google Calander API.

Setting up GIT and GitHub in Eclipse:
You will need to install EGit in Eclipse in the same way that you installed PyDev in the previous post. This time you will use the below address for the update:
You should see something similar to this:
After following these installation instructions, you should have Egit installed and be ready to go with Git. There are plenty of other options that you can set up and I suggest you go here for a great tutorial for setting up the other Git options in Eclipse.

Creating a Repository in GitHub:
I am not going to go into too much detail here. If you are using windows (as I am currently for work purposes), you can download GitHub for Winows and check out the FAQ. If you choose not to go this route, then you should follow these instructions for installing GIT on your machine. After signing up for an account (if you don't already have one) at GitHub, you can click on the Create New Repository button on the home page:
To get a copy of the repository on your local machine in order to work with it in Eclipse, follow these instructions.

Import Repository into Eclipse:
In Eclipse, click on File -> Import, then in the pop-up box choose Git -> projects from Git and click Next:
Then select Local and Hit Next:

In the next window select Add and then browse to the directory where you cloned your repository and you should see something similar to the screenshot below (note that I did not have the forethought to take a screen shot when I first imported the project so you see I made a copy and called it _bad):

Click Finish and then finish again and you will be brought to the new project wizard:

I created a PyDev Google App Engine Project because this is going to run in AppEngine (which is nice because it sets up a whole bunch of stuff for you making it easier to create AppEngine applications). Click on Next and then give your project a name:

Click on Next again. You must now select your AppEngine directory (usually C:\Program Files\Google\google_appengine). You will be asked which libraries to include (for now just include all and hit next). Then you will need to add your app id (you should already have one registered if you do not go read the tutorial here) and template (choose Empty Project):
Click on Finish and your project should be created:

Your 1st Commit: 
Now in your SRC folder within the project in Eclipse you are going to create an App.yaml file for the configuration of your App Engine project (you will of course need to change your application name to match):

After you have saved the file, right click the project and click on team -> Commit:

Add a commit message and select commit and push:
Go to GitHub and look at your Repo and see if your change is there:

Congratulations...You have just made your first commit to Github from Eclipse. Stay tuned for the final installment where we discuss the code to make it all happen and push it to AppEngine to deploy it.

Wednesday, October 2, 2013

Programming is NOT Terrible

I was reading Hacker News the other day when I came across this. The author is clearly unhappy with his/her profession, but that is not to say that all developers are unhappy or that it should be taken so far as to tell others not to become professional programmers. The author states
"In the end, it's just a job. You figure out what's needed, write it, test it, fix bugs, get input from customer. Rinse, repeat. In the end, you get praised or maybe even receive a bonus. Or something happens (like the boss suddenly deciding the company needs to go in the a new direction) and a few months' worth of work goes to waste. "
This is what the real world is like in every profession not just software engineering! For some of us, the 9-5 is all there is and it is fine. For some of us we work all day and then continue to code for fun after hours. For me personally, I can't imagine not writing code. The puzzle of figuring out actual requirements, designing a solution, and actually making it work as expected is amazing and awesome.

The author also speaks about software engineering today vs in the 70's:
"Sometimes I also think if it would be different if I was born several decades earlier. Back then, software engineering  was in its infancy. It didn't penetrate so much into the daily life yet, most of the stuff was happening in research labs and military. There were a lot of really hard problems that programmers had to solve that didn't exactly involve javascript hacks to make internet explorer users happy. If I was born then, would I be one of those who moved the progress forward, or would I just step back because it's too hard for me?"
This would make one think that in the 70's all software engineering was awesome and exciting and everything that was done was cutting edge. The truth is that at this time it was the same as it is today. They were writing machine code (because they had to) and drivers for everything. They used punch cards and time sharing machines. They didn't have GitHub or the Internet so code sharing was not really possible outside your immediate social circle. I think that there were some people then (just as there are today) who worked on exciting stuff, but the majority were just doing a job.

The last little piece of this post that I found infuriating was the passage below:
"It is now time to conclude this long-winded rant. I would like to end with a piece of advice for those who are thinking of becoming a software engineer. My advice would be - do not become a "software engineer". I know there is a lot of demand right now, but 1) the demand won't last forever; 2) most of the "software engineer" jobs are boring as shit."
Saying this is like saying "Don't become an archaeologist because it isn't all Indiana Jones and Jurassic Park all the time, most of the time it is research, looking at dusty bones, and other boring stuff ". What you are really saying is that you are bored with software development, not that software development is boring. There is a big difference. This is merely someone complaining that they don't like their job and that they are bored.

I have a piece of advice for anyone thinking about writing software for a living that I don't think that they teach in schools. If you like writing software, if you look forward to getting your next assignment, then you should probably go ahead and pursue it as a career.  If you trudge through it and show some aptitude for it, but you don't enjoy it, please choose another career. Software Engineering is not for everyone.While there are plenty of jobs available and there is room for people like the author of this post, I can tell you that most of the great teams and projects will not have room for people without true passion for the craft!

Wednesday, May 22, 2013

Presenting GNotiPy Part One all have a language that we choose to use whenever it is that we have a choice. Recently, my go to language has become python. Usually the things that I do with it are small and unimportant scripts to parse logs or iterate a list of data (I mean...list I right). I have never tried to use it for anything other than that until my wife had asked if I could help her with something. It turns out that she is on the board for a small non-profit organization. One of the tasks that she has to do is to manage the calendar (which to their credit is a Google Calendar). Her duties require her to send out weekly e-mail notifications to people who have signed up to volunteer for events that week. These notifications are just friendly reminders that these people have signed up reminding them of the date and time. My wife, knowing that I enjoy doing stuff like this, asked me if I could automate the E-mail process for her. I said yes and immediately thought Python would be the way to go for this.

For this purpose I also decided to give Eclipse a try once again because I planned on pushing this to GitHub and using Google App Engine to run it as well and I wanted an easy interface for the whole process (I love Emacs, but AppEngine + GitHub + Windows != Easy with Emacs, feel free to correct me in the comments). 

Requirements needed to start:
Getting Set up:
First I need to get Python installed. After downloading Python, you run the installer. It is pretty straight forward for Window (you know the drill hit "next" a few times). Now that Python is installed, I do something that everyone should do after installing Python in a windows environment. Create a new environment variable (if it doesn't already exist) called PATH (right-click my computer -> advanced -> environment variables) and set the value to the location of your Python installation (in my case C:\Python27):
If you want to be able to use Python and it's tools from anywherre in the command prompt, I suggest that your PATH variable have the following values:

That should now complete the base Python install.But I am not yet done with Python. I will (at a later time) need to install many other Python packages and libraries (especially as I get into this project and others). So, I start by installing Distribute and PIP (choose either x86 or x64 and version for python2.7). These will allow me to install almost any other library there is. Then I installed the Google API client library as a test by going to the command prompt and typing:
pip install --upgrade google-api-python-client

That should install the google api package and prove that Python and PIP are working.

Next I installed Eclipse and PyDev. After downloading Eclipse, I began the install process for PyDev by clicking on Help -> Install New Software:
Then I entered the address (link above) for the PyDev software and selected it. Then clicked on Next.
Then I did the same process for AppEngine (link above). and now Eclipse should be set-up and ready to go!

In my next post I will go over getting GitHub set up with Eclipse and creating and updating the repo.