CodelinesCodelinesReports and articles on computer programming and software development practices. Articles
WCF Services - Security From An ABC Approach
2008-11-26 08:26:00 Making web services easily accessible is usually a primary concern when deploying web services but it is important to keep in mind how the service will be used and by whom or what. Hardening deployed web services and providing appropriate level security for the application thereof is a large topic unto itself. However, in this ... More About: Security , Services
Hosting Options For Windows Communication Foundation (WCF) Services
2008-10-01 14:25:00 WCF Services can be hosted in a number of ways depending on the need and required usage of the service. Leveraging a Re-Useable WCF Service Using Visual Studio 2008 you can quickly and easily build flexible WCF services that are hosting environment neutral. That is, build the web service as a library which can be re-used in ... More About: Windows , Hosting , Communication , Foundation
Information Dissemination With Windows Communication Foundation (WCF)
2008-10-01 13:55:00 Web services are an integral part of information dissemination amongst heterogenous information sources. Micosoft’s Windows Communication Foundation (WCF) services provide a quick and easy foundation from which to create rich web services. In this post I’m going to look at the main components of the App.config file and the web service contract and implementation. WCF Endpoints The ... More About: Information
Database And In-Memory Paging With ADO.NET And LINQ
2008-09-03 17:19:00 When performing queries over large datasets there is often the need to page the data, such that it can be displayed in smaller amounts, aka pages, incrementally. When thinking about database paging two immediate distinctions can be made; in-memory paging and database paging. Depending on the size and usage of the data, each has its advantages ... More About: Memory , Database
Benefits of The ADO .Net Managed Provider Factory Model
2008-09-03 16:46:00 The .NET managed provider factory model makes it easy to switch between database providers without having to change or re-compile any code. How does it achieve this vendor independent behaviour? Through a software pattern or model known as the database provider model. Database Providers Typically, when writing applications that make use of ADO.NET you make use of ... More About: Factory , Model
Game Development with Game Institute
2007-11-27 14:15:00 I have always been fairly skeptical of online courses but am considering trying one of the modules at Game Institute Specifically, the directx game engine development series. Whilst I have always been a strong self learner I like working through structured content. It’s true, you could buy yourself some good directx books and teach yourself games programming, but courses such as those offered by Game Institute offer much more than just books. You can read about it further on their site but a brief listing of features would include live classrooms for help/discussion, forums, workbooks, textbooks, tutorials/code and presentation material; of which the 3D Engine Development series comes with about 20 hours of recorded presentations. It is a much more involved undertaking than working through a bunch of tutorials from a book or from the internet. Also weaved into the course is usage of the GILES level editing system which looks interesting. So this is something I am considering u...
Creating good software impressions
2007-06-22 11:17:00 When you use a piece of software for the first time you form an impression of it and your use with it. Either consciously or sub-consciously, your brain marks this experience with a marker, for later recall and recognition. I call this marker, software’s first impression. After having created a software first impression, any future reference or experience with this software is likely to be triggered and impacted by this first impression. This would seem to suggest, that creating a good first impression is important to the overall success of any piece of software. After all, if it’s not well received it is likely not well used. Now this impression is usually formed from one or more of the following factors (definitely not a conclusive list): How fast the software is How responsive the software is How well the software does its job How angry the software makes you How happy the software makes you Why first impressions matter So what use is it, knowing that a piec... More About: Software , Creating , Good , Impressions
Decoupling Operations from the Data it Operates On…
2007-06-09 15:37:00 Firstly you might ask why you would want to do this, and it is a valid question. After all, in the OO paradigm we usually bind data and its operations together. Thus creating fully functional objects. It is often good that an object knows what it can do with its own data and how it can do it. But there are times when you can’t always foresee all the operations that will be performed on an objects data. Extending an object’s functions Continually adding new functionality to an object can have several side effects: it can make the class become much bigger and harder to read and it can pollute the class with things it possible doesn’t need to know about or be aware of. Before long, you end up with a big messy object that encapsulates more than it should. Context I’m in the middle of building a software metric tool with my research supervisor and my first order of business was to refactor the existing software into something more manageable. We have this saying t... More About: Data
Should Computer Science Graduates Graduate?
2007-02-28 14:20:00 Why does your degree certificate say the same thing mine does when you can’t program and I can? I was reading an article recently on codinghorror titled, Why Can’t Programmers..Program? and it got me thinking. You see I often wondered about these people at university and what would happen to them after they graduated. You know who they are. The people that failed or repeated multiple and in some cases, countless subjects over the course of their degree. What’s more, some even failed the same subject multiple times. As if once wasn’t enough! Not all programmers created equal Yet they still continue on to get that piece of paper at the end that dictates they are a competent programmer and are worthy of the Computer Science Degree they received it for. When it all comes down to it, on paper at least, they look and appear as ‘qualified’ as their real graduates. Now you obviously know these ones. They are the ones that probably didn’t fail a sing... More About: Graduate , Computer science , Graduates
5 Surefire Ways to Create Workplace Culture
2007-02-22 12:33:00 Workplace culture is an important part of any business or organization that affects everything that goes on from the little guy all the way up to the top. In a previous article - What is Workplace Cult ure and What Does it Mean? I explored the “what” surrounding workplace culture. Here, I present five approaches at “how” to create workplace culture. 1) Provide Flexible working hours Flexible working hours is something everybody can enjoy and is surely something everybody needs from time to time. Sometimes, things just come up that require our immediate attention and there is nothing worse than having to put it on the backburner whilst you wait to free up time. Why? Sometimes this time just never becomes available (because you always revert to the backburner) or you just never get around to doing whatever it was that needed doing. Sometimes it is just too late. Having a small amount of time to attend these sorts of things and move on is not only beneficial to the individual, b... More About: Workplace , Work , Fire
5 Surefire Ways to Create Workplace Culture
2007-02-22 12:33:00 Workplace culture is an important part of any business or organization that affects everything that goes on from the little guy all the way up to the top. In a previous article - What is Workplace Culture and What Does it Mean? I explored the “what†surrounding workplace culture. Here, I present five approaches at “how†to create workplace culture. 1) Provide Flexible working hours Flexible working hours is something everybody can enjoy and is surely something everybody needs from time to time. Sometimes, things just come up that require our immediate attention and there is nothing worse than having to put it on the backburner whilst you wait to free up time. Why? Sometimes this time just never becomes available (because you always revert to the backburner) or you just never get around to doing whatever it was that needed doing. Sometimes it is just too late. Having a small amount of time to attend these sorts of things and move on is not only beneficial to t... More About: Workplace , Surefire , Create
5 Compelling Reasons Why Code Size Matters
2007-02-15 14:44:00 The size of your software solutions matters. As a developer, you should always be conscious of the effects that size and complexity have on development and what it translates into. In past articles I have looked at the early warning signs of design pattern abuse, how to better choose design patterns that fit and ways to improve your software design by keeping it simple. In this article I explore why you should consciously think about what you code and provide solid benefits for why you should produce smaller code. 1) Smaller software is easier to maintain Smaller programs are easier to maintain over longer periods of time. Why? They are often easier to understand and quicker for new developers to pick up and understand (there’s less to comprehend). Coding Horror has a nice metaphor for this; TL; DR (Too Long; Didn’t Read) syndrome (This is especially true when it comes to reading and comprehension). The larger and more complex anything is the quicker your brain swit... More About: Comp , Code , Matter , Reason , Matt
Leveraging the Power of Software Process Models - A Mechanism for Improveme
2007-02-12 13:26:00 What is a process model? Software process models are essentially synonymous with that of a traditional process model; defining a series of events or outcomes as a set process. The process, really defines the steps and the model pieces these steps or processes together, usually brining some global benefit to the process as a whole. Generally speaking process modeling is either descriptive; describes what actually happens during a process, prescriptive; defines processes and how they should/could or might otherwise be performed, or explanatory; provides explanations about the rationale of processes and attempts to establish links between processes and the requirements that they are to fulfill. The benefit of a process model The secret to improving anything is to understand what it is you are trying to improve. Sounds simple but how often do you try and improve something without really knowing what it does. Similar to the notion that you can’t really kn... More About: Power , Models , War , Ware
5 Types of Programmers - Which Type Are You?
2007-02-06 12:10:00 There are many different types of programmers that perform sofware development. Or is it computer programming? Or is it coding? These are all labels or boxes we use to classify people and their skillsets. Much like we distinguish between testers, coders, managers, architects, designers, CLO etc only these are much more obvious. So what exactly makes a coder a coder or a programmer a programmer? We may losely use them interchangably to mean the same thing but from an outside perspective I like to think of them as badges or stipes. Something you earn with time, patience, wisdom and experience. Some people just have certain qualities about them that make them good, bad, better or worse than the next person. In order to simply determine what these might be, I propose five boxes or labels. 1. The tool user The tool user is the least experienced of them all. He has enough knowledge to poke around tools like Visual Studio 2005 and whack together a GUI simply by dragging and dropping w... More About: Prog , Type , Program , Programmer , Gramme
What is Workplace Culture and What Does it Mean?
2007-02-04 13:38:00 Workplace culture is something that effects all work places and all types of employees, even programmers! A good workplace culture can cause a business and its employees to thrive or it can cause it to tank with its employees fighting against the establishment. Understanding what workplace culture is an important part of either providing a successful one, or co-existing within one. What is workplace culture? In my mind, workplace culture is the habitat that a company and or business creates with and for its employees. With; because the type of people in the workplace affects the type of culture established and for; because it is the individuals and employees that co-exist within this habitat that are the ones that experience it. Have you ever had a feeling or emotional response when walking into a business or company or formulated impressions based on initial observations? Chances are you have experienced a small glimpse of workplace culture in action; That’s the type of envir... More About: Culture , Workplace , Cult , Work
4 Immediate Benefits Logging Brings to Your Software Development
2007-01-27 05:12:00 Logging messages in your software is a great source of debugging information both before and after product release. Unlike conventional stack traces which create a lot of mess, creating log files keeps your applications output tidy whilst keeping all the important information about how the software is running. This can significantly aid in debugging at any stage of development and its impact on the user is minimal if non-existent. The reasons you should consider implementing a logging strategy are four fold: 1. Logging increases debugging efficiency Programmers debug software using various methods or approaches; printing out code statements to verify correct behavior, unit testing for correct behavior and the use of a software debugger; found in nearly all Interactive Development Environments (IDE) today. The latter is possibly the least efficient means of debugging so it is used as a last resort due to the timely nature required to step through code line by line, identifying where ... More About: Software , Media , Software Development , Men
An Approach to Effectively Applying Software Design Patterns
2007-01-26 17:24:00 You’ve thought long and hard about whether your design really needed that design pattern you chose and you then proceeded to think increasingly harder about the validity of the pattern you chose given the context you’re applying it in. Now it has come time for the final question. How do I effectively apply this design pattern? I say effectively because even a well chosen pattern can be poorly implemented. Question the design pattern’s reason for inclusion This is just a quick check to indeed make sure you have chosen the pattern wisely and are sure it is going to fit into your design nicely. The worst thing you can do is force a pattern into your design when it has no reason being there. Source some information on the pattern if you are not particularly well versed in the particular pattern you have chosen. Get an idea of its intentions and its consequences and try and picture the types of problems it might be well suited to. Is your problem in the list? If so, read on. Otherw... More About: Software , Design , War , Ware , Desi
How to Choose a Design Pattern That Fits
2007-01-24 10:40:00 As a pre-cursor to design patterns in the previous article in this series I looked at common signs to over engineering your design by forcing a design pattern that doesn’t fit. One important point I made was not starting with a design pattern and opting to refactor to one when you know it’s necessary. Not over complicating your design with the noise of trying to fit a pattern into it before you know your design really requires one. If you have taken this approach it is at this point that your design has had some time to incubate on its own; stand, or crumble under its own supports. In the case of crumbling supports you have identified a hole in your design. So what do you do with any hole? Search for the right size shape to plug it! Here’s how. Describe the hole your design pattern will fill What type of hole is it that sits in your design? Since you are looking for a design pattern to fill the hole describe the problem as it relates to the three types of design patterns; crea... More About: Design , How To , Hat , Desi , Pattern
How to Design Software That Supports Extension
2007-01-22 20:59:00 One of the toughest problems when designing and developing software is that of future proofing it. You can almost never accurately predict the shelf life of software. Some software continues to get used years after its developers thought it would and some unfortunately gathers dust much earlier. The largest cost in a software products life cycle is nearly almost always software maintenance. Making changes once the software is already out the door and in the hands of its users is much harder. So, it stands to reason that getting critical design decisions and choices right early will save you time and money in the long run. What happens if you missed one critical feature in the system but implementing it after the product has shipped would require a major architectural change? Whilst there are plenty of practices you can put in place to reduce this happening you can never be 100% sure how your product will be received by its users unless you have conducted a very exhaustive review of... More About: Software , Design , How To , Port , War
Give Me 3 Minutes and I’ll Make You a Better Software Designer
2007-01-22 11:30:00 When designing software there are always things you need to remember; things that impact the developers and things that impact the user and their end user experience. In my mind, these are flexibility, reliability and predictability. Desi gn for flexibility Flexibility isn’t something that automatically comes built into any design. It’s something that has to be carefully crafted and planned for. How is this done? Look at parts of your application that are likely to need extending in the future and take note of how behavior around these parts varies. When you know the areas of your system that need to be extra flexible you can look at the possible use of patterns, interfaces and/or higher level abstractions to achieve this. Create areas where you can hook or plug-in extra features where needed. Consider paramatizing calls to areas that might need to be configured in different ways in the future. Design for reliability Reliability plays an important part of the end user’s experie... More About: Software , War , Ware |



