Archive for the ‘Programming’ Category
Wednesday, November 18th, 2009
As most of you have probably figured out by now, I recently left my job of nine years to work with a new company here in the DFW Area. A lot of people would have thought it strange to change jobs in the middle of a down economy, but not really, it was more like a transition from one established company to another established company.
As for the routine on-boarding with every company, this time it was totally different. There were no new people to get to know, I’ve known everyone I’m working with for quite some time. The entire team had everything ready for me the day I arrived; office, computers, phones, etc. They made it absolutely painless to hit the ground running.
And there is a lot to be said about going back to work in an office. We have what Scott Hansleman would call a “two pizza” development team. Its a small team, but just big enough to be really collaborative. I get to talk with other developers face to face making our collaboration much more effective since we can scribble something on a whiteboard or walk through some code or bounce ideas off of each other when we are looking for the best way to get something done. I’ve missed out on this for some time, trying to collaborate over a telephone and a desktop sharing session is good when you’re a virtual team, but is is no substitute for being there in person. And all of the developers at my new job are well worn; seasoned; developers with probably even more experience than me. We all come from different backgrounds making what we bring to the table even more beneficial to the rest of the group.
There is also a clear delineation between my work life and my personal life. Being able to leave work at work and enjoy time away from the office is really rejuvenating. Each morning I feel refreshed and excited to get back to the office. It was funny, on my first day I asked one of the guys what were our normal office hours and he chuckled and said “Nobody is here to look over your shoulder and make sure you punch a time clock. You can come and go as you please. Just remember to make your deadlines and be on time for meetings, other than that you’re on your own.” This free spirited way of treating people as adults is a big change of pace compared to the big corporate world of tracking your time and making sure you meet your billing quotas. I forgot how much that used to weigh on me.
This job is actually a new challenge for me, I have to learn the ins and outs of Objective-C, Cocoa and iPhone Development all in a very short time because we’ve promised to deliver an on-line ordering app for the iPhone by the end of the first quarter of 2010. But, heck, I love a challenge and I love learning something new!
Tags: Change Of Pace, Collaboration, Delineation, Desktop Sharing, Developers, Dfw Area, Down Economy, Entire Team, Lot, New Job, Nine Years, Office Computers, One Of The Guys, Personal Life, Pizza, Quite Some Time, Strange Jobs, Transition, Virtual Team, Whiteboard
Posted in Personal, Programming | 1 Comment »
Tuesday, March 31st, 2009
I’ve just finished a six-part video series titled; “Securing Your Apps and Web Services with the Microsoft Geneva Framework”. I’ve posted them on my new video blog at http://www.codingsmackdown.tv/. Check them out and leave me a comment.
Tags: Apps, Blog, Early Adopter, Geneva, Microsoft, Microsoft Geneva Framework, New Video, Programming, Security, Video Series, Videos
Posted in Early Adopter, Microsoft Geneva Framework, Programming, Security | 2 Comments »
Friday, March 13th, 2009
I was fortunate enough to be invited to speak at the DFW Connected System Users Group Meeting for the month of March. I agreed to provide the group with an overview of Microsoft’s Geneva Framework which allows you to secure your applications and web services using a claims-based model.
So, to provide the best presentation I could I spent some time going through the PDC 2008 Geneva presentations and compiled a slide deck that provides a good high-level guide to how you can secure your apps and services with Geneva.
I also decided that instead of just going over the samples provided with the Geneva CTP, I would build a sample of my own that showed a couple of things that aren’t quite apparent from the samples and documentation. It consisted of an Active Security Token Service, a Passive Security Token Service, an ASP.NET Web application that uses web based single sign-on to authenticate and authorize users, and a web service that uses identity delegation to authenticate and authorize users.
I felt the presentation went pretty well and from the feedback I received from the group, I think they liked it quite a bit as well.
I want to thank those that attended for the great questions and participation and I hope I get a chance to present again in the future. As promised, below is my slide deck and source code. Please contact me if you have any questions, I’d be happy to help you out.
Securing Your Applications Slide Deck
Sample Source Code
Tags: Active Security, Apps, Claims-Based Security, Delegation, DFWCSUG, Geneva, Level Guide, Microsoft, Microsoft Geneva Framework, Microsoft Security, Month Of March, Participation, Pdc, Presentations, Programming, Security, Security Programming, Security Service, Source Code, System Users, Technorati, Users Group, Web Application, Web Based, Web Service
Posted in Microsoft Geneva Framework, Programming, Security | 1 Comment »
Wednesday, December 17th, 2008
I’ve only found one Twitter client that works properly from behind an Internet proxy. What is it with Devs today? Do they not know that there is a large population out on the Internet that would love to use their programs at work? And that most corporations do not allow direct access to the Internet?
So that every .NET Dev out there will know how to incorporate Internet proxy authentication into their code, I thought I would post the following simple steps:
1. Add 4 settings to your App.Config file:
UseProxy – Boolean, turns on and off the proxy code
ProxyUri – String, the URL to the proxy server formatted as http://proxyserver:port
ProxyUsername – String, the User Name to use to authenticate with the proxy server
ProxyPassword – String, the Password to use to authenticate with the proxy server
2. Add the following code to your Get or Post code to create a WebProxy and add it to the WebClient:
if (Properties.Settings.Default.UseProxy)
{
WebProxy proxy = new WebProxy(Properties.Settings.Default.ProxyUri);
proxy.Credentials = new NetworkCredential(Properties.Settings.Default.ProxyUsername,
Properties.Settings.Default.ProxyPassword);
client.Proxy = proxy;
}
That’s all there is to it! Not hard, pretty simple really, if you think about it. So with four application settings and no more than 7 lines of code, your too can incorporate Internet proxy authentication into your web-based Windows Form or WPF application.
Tags: Application Settings, Boolean, Client Proxy, Corporations, Credentials, Devs, Direct Access, Firewalls, Internet Love, Internet Proxy, Population, Programming System, Proxy Authentication, Proxy Code, Proxy Firewall, Proxy Server, Proxy Web, Simple Steps, twitter, Webclient, Webproxy
Posted in Programming | No Comments »
Tuesday, November 4th, 2008
I am proud to present the first episode of Industry Vertical the twice monthly net cast about industrializing software development with Software Factories, Guidance Automation and Domain Specific Languages at http://tinyurl.com/aamnov. This episode starts out with the basics of Software Factories and trys to answer the question “What is a Software Factory”.
Tags: Automation, Development Software, Guidance, Software Development, Software Factories, Software Factory, Specific Languages, Trys
Posted in DSLs, Programming, Software Factories | No Comments »
Saturday, October 11th, 2008
I’ve decided to try my hand at webcasting. I’m in the stages of preparing a webcast series around using software factories, guidance automation and domain-specific languages called Industry Vertical. I’m planning on taking it slow starting out by providing some introductory material around what software factories are, their benefits and their life-cycle. Then I’ll take everyone step by step building out a software factory from the ground up. I’m hoping this will help everyone out there get started in industrializing software development.
So far, I’ve spent the last month getting my scripts together, creating graphics, setting up a new web site, purchasing audio equipment and I just found a great deal on a Sony HVR-A1 High Definition Camcorder, so once it arrives I’ll be ready to get down to business and start recording the first episode.
Hopefully, my busy work schedule will stay out of the way long enough to keep releases to a regular interval, but we’ll just have to wait and see what happens.
Tags: A1, Automation, Building Software, Creating Graphics, Guidance, High Definition, Interval, Introductory Material, Life Cycle, Scripts, Software Development, Software Factories, Software Factory, Sony, Sony Hvr, Specific Languages, Technorati Tags, Using Software, Webcast Series, Webcasting
Posted in DSLs, Programming, Software Factories, Webcast | 1 Comment »
Monday, August 18th, 2008
So, I want to follow Twitter at work on my desktop, however there is a proxy between me and the Twitter servers and all of the Twitter clients I find blow chunks when I try to connect. Am I one of the few users in the world behind a proxy? This can’t be! I know there have to be a lot of people in the same situation.
Its not only Twitter clients that I run into that do not support proxies, I’m finding it to be the norm not the exception. We’re not talking about anything big, all a developer needs to do is provide the option and provide the proxy credentials prior to making the call.
Tags: Blow Chunks, Credentials, Norm, Proxies, Proxy Support, Servers, twitter
Posted in Programming, Technology | No Comments »
Friday, July 4th, 2008
Sometimes when defining a property for a domain model element you may need to use a complex type that has more than one property or can’t easily be displayed using a single text field or drop down in the property editor. A good example might be a class that holds a list of strings for a GUI interface or a Rich Text editor for a custom text field required by your framework.
To resolve this you can create a custom editor and hook it into your domain model that will provide a proper user interface to specify information for your property.
There are three steps you need to take in order to wire your domain property to display a custom editor:
1. Create a class derived from System.Drawing.Design.UITypeEditor that will launch the custom dialog box as below:
1:
2: using System;
3: using System.Collections.Generic;
4: using System.Text;
5:
6: // Need to add a reference to System.Drawing DLL.
7: using System.Drawing.Design;
8: using System.Security.Permissions;
9: using Microsoft.VisualStudio.Modeling;
10: using Microsoft.VisualStudio.Modeling.Design;
11:
12: namespace XXX.UIProcessDesigner.UIEditors
13: {
14:
15: // FxCop rule: must have same security demands as parent class
16: [PermissionSet(SecurityAction.LinkDemand, Name = "FullTrust"),
17: PermissionSet(SecurityAction.InheritanceDemand, Name = "FullTrust")]
18: public class FormPromptUITypeEditor : System.Drawing.Design.UITypeEditor
19: {
20:
21: /// <summary>
22: /// Overridden to specify that our editor is a modal form
23: /// </summary>
24: /// <param name="context"></param>
25: /// <returns></returns>
26: public override UITypeEditorEditStyle GetEditStyle(System.ComponentModel.ITypeDescriptorContext context)
27: {
28: return UITypeEditorEditStyle.Modal;
29: }
30:
31:
32: /// <summary>
33: /// Called by VS whenever the user clicks on the ellipsis in the
34: /// properties window for a property to which this editor is linked.
35: /// </summary>
36: /// <param name="context"></param>
37: /// <param name="provider"></param>
38: /// <param name="value"></param>
39: /// <returns></returns>
40: public override object EditValue(
41: System.ComponentModel.ITypeDescriptorContext context,
42: IServiceProvider provider,
43: object value)
44: {
45:
46: // Get a reference to the underlying property element
47: ElementPropertyDescriptor descriptor = context.PropertyDescriptor as ElementPropertyDescriptor;
48: ModelElement underlyingModelElent = descriptor.ModelElement;
49:
50: // context.Instance also returns a model element, but this will either
51: // be the shape representing the underlying element (if you selected
52: // the element via the design surface), or the underlying element
53: // itself (if you selected the element via the model explorer)
54: ModelElement element = context.Instance as ModelElement;
55:
56: FormPromptUITypeEditorForm theForm = new FormPromptUITypeEditorForm();
57:
58: theForm.Value = (string)value;
59:
60: if (theForm.ShowDialog() == System.Windows.Forms.DialogResult.OK)
61: {
62: value = theForm.Value;
63: }
64:
65: return value;
66: }
67:
68: }
69:
70: }
71:
72:
2. Create a Windows Form dialog that will be displayed when the editor is invoked, such as the one below:

3. Set the Custom Attributes for the Domain Property to reference the UITypeEditor class you have created.
The text is as follows: [System.ComponentModel.Editor(typeof(XXX.UIProcessDesigner.UIEditors.FormActionTypeUITypeEditor),typeof(System.Drawing.Design.UITypeEditor))]
The bold faced text is the full namespace of your class that derives from UITypeEditor.

I normally store all code that I add to a DSL Designer in various folders such as; CustomCode, UIEditors, Validators, etc. That way it is easy to find when I am trying to reference it.
Also, you can debug the UITypeEditor and Dialog by setting breakpoints in the code before you start debugging.
Tags: Collections, Custom Dialog Box, Domain Model, Domain Property, Element, Ellipsis, Gui Interface, Lt, Modal Form, Modeling Design, Override, Param Name, Rich Text Editor, Security Demands, Security Permissions, System 3, System Security, Three Steps, User Interface, Visualstudio
Posted in DSLs, Programming, Software Factories | No Comments »
Tuesday, June 3rd, 2008
I just got back from attending my first Dallas VSTS User Group Meeting. Vince Blasberg gave a presentation titled “Reporting in Visual Studio Team System.” He gave a great deep dive into the database architecture around TFS, the Data Warehouse and the OLAP Services. Vince also had some great tips on how custom work item field attributes can affect reporting as well as learning resources around building TFS Reports.
I’m hoping we do a deep dive around mining the Data Warehouse for dashboard data reporting. It was great first experience with the group.
Turns out that Vince and I worked together at CLR/FAST-TAX back in the mid 90s. We spent some time after the meeting chatting about old friends and the old days of working 18 hours days getting ready for tax season.
You can learn more about the Dallas VSTS User Group at http://www.dallasvsts.com
Tags: Blasberg, Chatting, Dashboard, Data Warehouse, Database Architecture, Deep Dive, Field Attributes, First Experience, Learning Resources, Mid 90s, Olap Services, Old Friends, Presentation, User Group, Visual Studio Team System, Vsts
Posted in Programming, Technology | No Comments »
Monday, November 19th, 2007
Here’s a handy tip when you are trying to learn how the components of the Service Factory works. I’ve found it very useful over the last couple of weeks.
Since the Service Factory now gets registered under the Visual Studio Experimental Hive you can configure the solution so you can debug it. If you are familiar with debugging DSLs, this should be nothing new. Just follow the steps below:
- 1. Set the Service Factory Guidance Package as the Start-Up Project by right-clicking on the project and selecting “Set as Start-Up Project”.
- 2. Change the Service Factory Guidance Package Project’s debug settings to launch Visual Studio under the Experimental Hive:
-
- a. Right click on the Service Factory Guidance Package Project and select “Properties”.
- b. Select the Debug Tab
- c. Configure the Start Action to Start External Program and C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\devenv.exe or where ever you have installed Visual Studio for the program.
- d. Set the Start Options, Command Line Arguments to /rootsuffix Exp
Now you can set breakpoints in the Service Factory code and press F5 to walk through the code in the debugger.
Tags: Automation, C Program, Command Line Arguments, DSLs, F5, Guidance Package, Handy Tip, Hive, Ide, Launch, Microsoft, Microsoft Visual Studio, Select Properties, Service Factory, Software Factories, Studio 8, Tab C, Technorati Tags
Posted in Programming, Software Factories | No Comments »