| M | T | W | T | F | S | S |
|---|---|---|---|---|---|---|
| « Aug | ||||||
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | |||||
27. August 2008 by Monkk.
Since I wanted to test Windows Live Writer and had mentioned deleting the temporary Internet files from the web browser I thought I’d create a little post and see how it all fairs. Enjoy
First start good old Internet explorer. Click on the Tools menu drop down (if you do not see a menu list with "Tools" on it as the image below shows, try pressing the ALT key. This tells windows to show you short-cut keys and enable hiding menus)
Click that "Internet Options" item at the bottom. This will bring up the Internet Options dialog which looks like this:
At this point, click the "Delete…" button. This will bring up the Delete Browsing History dialog box.
Click the "Delete files" button and you will be prompted to Ok the deletion of the files. Choose "Yes":
Then click the "Delete Cookies" button and you will be prompted to Ok the deletion of the files. Choose "Yes" (Warning: This will cause some sites that store your login information on your browser to prompt you again for your name and password.) :
And you my friend are done. Close down all running instances of Internet Explorer and restart the browser and you should be good to go. Good luck!
Regards!
Posted in General Computer Use | Print | No Comments »
27. July 2008 by Monkk.
So it’s all the rage to talk about how comments are bad to use, bad to rely on, and should only be used to describe why something is being not done, not how. And for the most part I agree. As soon as a comment is written it becomes stale. It’s hard enough to get the time to update the code, much less updating the comment. With today’s integrated development environments with name completion and the like, there is no excuse for using abbreviated variable or function names in your code. This is not to say that variable names should go on forever, they should be as long as they need to be to express their purpose and NO LONGER!
’Fair nuff, no real problems here. Now, the Single Use Principle states that some “thing” should have exactly One purpose. This “thing” is either an object, class, function, some item of encapsulation.
Again, who can argue with that, makes sense.
Now, my annoyance
(c’mon you knew it was coming) So ok, we have these functions which end up being relatively small and easy to read as we’ve emplopyed single use and descriptive variable/function names this is a good thing. The downside is, you now have class files with many many many small functions and getting a big picture view of what is actually happening becomes impossible… Instead of spending all your time figuring out what code does, you end up diagramming the call mapping of your functions so you can find out what is really being called, in what order. All these small almost atomic functions become more time wasting to follow then before we employed our “Best Practices” …
Very disappointing folks. Got a good solution? Neither do I, but I suspect it comes in the form of more advances to the development environment. I would love to see expandable function calls in code so a simple expand click would show you whats actually going on without having to diagram it all out. I know visual studio has a code declaration window which is great but not quite what the doctor ordered.
At any rate, the best practices are worth it, but let’s not pretend they aren’t causing another, and perhaps larger, maintenance issue.
Regards!
Posted in Programming Related | Print | 1 Comment »
3. July 2008 by Monkk.
Diablo 3, ‘Nuff said!
Posted in Gaming | Print | No Comments »
3. July 2008 by Monkk.
So, you’re writing an application, and you break down the functional parts to more base layer services and utility assemblies, and now you want to create a new application and re-use some of your code.
My “go to” answer has always been separate assemblies copied to a global project bin and then adding references to the bins in whatever application needs them. For example:
“Application 1″ and “Application 2″ represent two applications that are re-using logic. The “Libraries”directory off the root represents the project directory housing “Library 1″ and “Library 2″ which are the assemblies being re-used, they build to their respective bin directories. The “bin” directory off the root is the global bin where the binaries from “Library 1\bin\” and “Library 2\bin\” are copied to for re-use by the applications.
In the above scenario, the Applications reference the libraries from “monkk.com\bin” and as new versions of Library 1 and Library 2 are released, they can replace the existing ones when required.
The problem with this type of solution is that often times your libraries end up building on each other to create more complex libraries and soon you find yourself in an endless series of updating the various libraries for any new feature necessitated by the applications and so can lead to updating Application 2 because Library 2 had a for Application 1… Not Ideal!
So, what to do, what to do?!?
Well a technique I’ve now come to employ for just such scenarios is project references. I know, simple how could I not have thought of this? Well I had, but for some reason I’ve been ignoring them because it just didn’t seem “right” because of how intimately coupled the assemblies and projects can become but truth be told, it’s so natural (after being forced to use it) I don’t know how I ever got along without it. I suppose the problem has been, when you use 3rd party assemblies, it’s just not an options, and if all your library assemblies are supposed to be stand-alone assemblies, shouldn’t referencing them both be the same?
Well no, it makes complete sense to modify various Libraries while working on Application 1, and likewise for 2. There are some areas for concern, such as not breaking Application 2 while modifying Application 1 and it’s Library 2 use. But with a good set of Unit tests for both applications and the libraries themselves, you can do this with less risk. And of course best practices for published assemblies come into play such as adding new function signatures instead of changing existing ones (of re-factoring the internals in the process.)
This obviously applies more to companies writing their own frameworks where the libraries stay internal. My point is this doesn’t really scale to mass consumer use due to support issues. In that case, as I’m sure you are, each binary is it’s own and the extra work of version management of the application used assemblies, but such is life and it’s what we’re paid for so, enjoy!
–
Regards!
Posted in Programming Related | Print | No Comments »
2. July 2008 by Monkk.
John Minadeo
Summary
Experienced application developer that has been working in software development for the past 11 years with a strong focus on database and backend architecture and data transformations in Microsoft centric environments and strong familiarity with their languages and tools.
Skills
Can display proficiency with the following skills and in the following areas:
Industries: Insurance (Auto), Healthcare, Financial, Internet Development, General Software Development Contracting, B2B / B2C Web Site Development and back-end interfacing
Languages: C#, C/C++, VB (6 and .NET), Python, Perl, PHP, Java, JavaScript
Technologies: XML, XSL/T, HTML, ASP / ASP.NET, Web Services, COM / DCOM, Java Server Pages / Java Servlets, Relational Database Design, Firewalls / Network Security, Webtrends Reporting Package, PayPal Payment Integration
Development Methodologies: Object Orientated Design and Development, Test Driven Design, Agile Development, Waterfall Project Planning, Metrics Reporting
Source Control: Merant PVCS, CVS, Subversion, Visual Source Safe
Tools: MS Visual Studio (5, 6, 2003, 2005, 2008), Beyond Compare, Tortoise SVN, ReSharper
Back-ends: Active Directory / LDAP, MQ Server, DB2
Server Configuration: SQL Server 6.5, 7.0, 2000, 2005, RADIUS, IIS (3, 4, 5, 6) Web Server, Apache Web Server, MS VPN / DHCP, Exchange Server, NameD (DNS Server), Sendmail (Mail Server), Windows Network Administration, MS Certificate Server
Operating Systems: Windows 3.1/95/98/NT/2000/XP/Vista, Linux (Ubuntu, SuSE)
· Enthusiastic personality, Career motivated, Team player, Over 11 years of technical experience.
Experience
2008 – Present Insurance.com http://www.insurance.com
Solon, OH
Application Developer IV
Hired to fill a senior level developer position in the expanding Communication business unit. Primary responsibilities include design and implementation of various forms of customer contact primarily email. Maintained and enhanced the stand alone custom email queuing and sending services written in C#. Also maintained the email content testing system for use by the QA department. Additional responsibilities included enhancing the Quoting Interview application to support and modify queuing logic for the various customer contact types. All development used formal development procedures such as design documentation and implementation plans, design and code reviews, and included the creation of new and maintaining of existing application unit tests using the Nunit testing framework. Also aided in the development of stored procedures and data structures to accommodate new functionality to the system.
2003 – 2007 Progressive Insurance http://www.progressive.com
Application Developer Lead
Originally hired in to the Server Based Rating Platform Team to design, develop, and maintain applications and on-line services to facilitate the quoting and selling of vehicle insurance, primarily in the agent channel of business. Application development used C++ with the standard template library as well as some windows COM components. Created and maintained tools to support the creation and testing of internal applications. Participated in creating the new motorcycle product for use with Progressive’s Comparison Rater initiative piloted with Harley-Davidson/Buell in
2003 – 2003 Cobb Community Collaborative http://www.cobbcollaborative.com
Consultant
Converted existing site to a database driven website to ease future maintenance. Developed Microsoft Access database to fit the client’s lower budget grant-based not-for-profit environment.. Added a web enabled calendar to hi-light community events that can be maintained by the Collaborative and their associates. Provided training for their employees on maintaining the database as well as updating their site with Microsoft FrontPage and Macromedia DreamWeaver. Recommended new site host and migrated site to the new host.
2002 – 2003 Spellbuddy.com http://www.spellbuddy.com
Consultant
Designed and developed XML based website to showcase the client’s products. The site features an easily maintained news system, secure software delivery system, customizable user forums, as well as xml driven emailing subsystem. Database design in a Microsoft SQL Server 2000 environment. Produced in-house Visual Basic 6 and C#.NET tools to update content as well as aid in development of XML systems. Additionally wrote data import and export tools in C# .NET.
2002 – 2003 DrTango, Inc. http://www.drtango.com
Web Application Developer
Developed XML based replacement for the general payment server involving MS SQL Server 2000, in a load balanced clustered environment. Participated in the process to add multiple language capabilities to the flagship product. Documented existing procedures and internally developed components. Participated in switching T1 providers for both the site connectivity and the VoIP phone system. Participated in the design and implementation of the network after a second remote site was added. Administered multiple MS SQL Servers, and load balanced IIS clusters as well as internal development IIS servers. Created documentation for developer’s of the application as well as documented the various components that make up the application. Re-Developed HTML Newsletter mailer in C# .NET.
1996– 2002 NetForce Development, Inc. http://www.nforce.com (no longer in business)
Senior Systems Analyst
The company was relatively small (15-18 employees) and most of my duties were that of a Senior Systems Analyst, though technical policy also fell on my shoulders.
Active Server Pages scripting for websites including pulling data from and storing data to databases, NT network administration (installs/setups, configuration, Exchange Server, SQL Server, MSDNS, IIS, MTS), Custom applications using Visual Basic 5 and 6, Server Side Com component creation for use under IIS in VB and within administrative scripts. I also lead development efforts for Client Systems Analysis and Database Design. Aside from development, I also performed the following duties: Project Management, tutoring junior programmers, Security policy, Backup policy, Corporate Email Usage policy, devised / documented / implemented and trained staff in Programming standards and Best practices. I advised management in Company growth planning, procedures for client problem call tracking, virus scans, client contact tracking, backups, technology research and selection plans for adoption into production environments, and wrote client technical proposals.
Some projects I lead the development at used Project Plan and Timeline creation, deliverable schedule, and team member coordination as well as documentation for all stages of the development cycle. And include E-Commerce site for the Sewing Machine division of the international company Husqvarna Viking (http://ordering.husqvarnaviking.com/). An E-Commerce site which links authorized HV resellers and their customers to products available directly from Husqvarna. Integrated online sales with an AS400 at the
Team Lead during onsite project at the Cleveland Clinic Foundation, Cardiology Department to develop a Clinical Study Tracking and Reporting System for internal and subscription use. Using a 3-Tier Architecture model and COM / DCOM on the Microsoft Windows platform.
Team Lead on in house development for commercial release of OLLA (OnLine Learning Academy (http://www.olla.net)). A Department of Defense funded research project of Lockheed Martin. My company took rights to the source, and repaired for production in D.O.D. schools. The
Team Lead on Extranet for Crystal Internet Venture Fund. A internal website for clients authenticated to their network to view status of venture capital considerations currently pending.
1994–1996 Cyberspace Construction Company
Programmer
Conversion of data and databases from DB2 to MS Access and flat files using the C programming language. Additionally automated routine repetitive (such as newsgroup processing, email sending) tasks with scripts and programs.
Education
1999 Develop
“Building Distributed Applications Using Visual Basic and COM”
1994 - 1996 Electronic Technical Institute
Associates Degree in Electronic Engineering
1993 - 1994 Cleveland State University
1 year of core college education with an un-named major.
Interests
· Music (both listening and playing). I play guitar, bass, drum machines, and a little keyboard.)
· Computer games development.
·
Recommendations available upon request.
References available upon request.
Posted in Personal | Print | 1 Comment »
27. June 2008 by Monkk.
So, apparently my company will be downsizing, with IT taking the brunt of the cuts… By rough estimation, it’ll end up being around 20%. Doing the math that ends up being 3.5 developers. I am the 4th newest, but the most recent fills a singular specific job that’s not going away, and my gut says he’s safe. Which puts me at #3
My company is pretty choosy about the hiring process and it’s personnel, and truly, there is no chaff at all to cut. It seems that the only logical choice would in that scenario would be people with the least amount of connectedness which to me suggests “Last In, First Out” (pardon the programmer humor)
At any rate, a great bunch of guys and a very viable company, I hope they do well and that I continue my employ.
Cross your fingers for me folks, I’ll know July 2nd.
–Regards!
Posted in Personal | Print | No Comments »
7. June 2008 by Monkk.
When you lived in Macedonia (could have been Medina, started with an M :-( )Ohio, you were dating a friend of mine named Barry D. This would have been early 90’s. After you guys broke up you vanished. I can’t find any sort of trace of you anywhere, should you happen to ever come across this, you should get in touch with me. It’s John M. and I can be reached here or via email: coder at monkk dot com
Posted in Personal | Print | 1 Comment »
6. May 2008 by Monkk.
Well a third TDD post and with mixed emotions I am here. On the one side, I have found BDD which (in my opinion) is far better then TDD.
What the h#ll is BDD you ask? Behavioral Driven Design. So what does that mean? It is development that is driven by the required behavior of your application(s). For example, if you need to write a online slot machine game, and the app you write behaves as an online slot machine game, you have successfully developed an online slot machine game. Ok, no duh! So what? How is that better then TDD where you would have written tests that would pass when you successfully written an online slot machine game?
Oooh, so go ahead and re-read that last question. Notice how it suggests that your artifact of the entire development process is a set of tests (and the implied working application), whereas the BDD version leaves you with a working application (and the implied tests).
That is the difference my friends, they are essentially the same but their terminology differs to emphasize what truly is important in the development process. The creator of BDD states that BDD is just TDD done right. And that’s relevant to the effect that when using TDD it is too easy to fall into the trap of focusing on the tests. Not to imply testing isn’t important, but they are a required evil in that if we never made mistakes, we would never need to write a single line of test code. As that’s pretty much impossible (being human) testing and QA aims to mitigate the risk of the human factor.
So I still haven’t really explained what the deal with BDD is, so here goes (and I apologize, an expert on the topic I am not.) To cite http://behaviour-driven.org/GettingTheWordsRight:
| Behaviour Driven Development grew out of a thought experiment based on Neuro Linguistic Programming techniques. The idea is that the words you use influence the way you think about something.As an example, when I was first getting to grips with TDD, I was pairing with an experienced agile coach, writing little test methods, then writing the code, and generally feeling good about life. Then I went ahead and wrote some code without a test. The coach, JR, asked me why I’d written the code. I answered: “we’ll need it in a minute”, to which JR replied “yes, we might”. By using the word “might”, he introduced the possibility that we might not. As it turned out, we didn’t. - Dan North |
As far as using it, there are a few implementations ( http://en.wikipedia.org/wiki/Behavior_driven_development) for writing tests using BDD. The most popular is rSpec ( http://rspec.info/ ) for the Ruby platform. There are severl for Java, two (mostly dead) for MS .Net Framework, and vaious others (python, PHP, scala). There is a Google Video by the rSpec creator which is quite interesting: http://video.google.com/videoplay?docid=8135690990081075324&q=behavior%20driven%20development&total=27&start=0&num=10&so=0&type=search&plindex=1
I haven’t had the opportunity to do anything with BDD, nor does it look like I will with the state of BDD as it stands today. I believe what has happened is that TDD ate it and we just have to make due. The tests we write should be behaviorial based even if the syntax of the testing domain language leaves us asserting like we’re writing procedural code instead of the OO stuff us enterprise type developers eat all day :-/ Please rSpec guys, port your code to .net :-))
Posted in Programming Related | Print | 2 Comments »
5. April 2008 by Monkk.
So, as you may have read in my previous rant regarding Test Driven Development, I am one of two developers participating in a test of TDD. The project is relatively small in scope and is mostly in a stand-alone “engine” so really, I think it’s a pretty ideal test subject. If you were paying attention, your spidey sense started tingling when you read “…an is *mostly* in a stand-alone engine…” Yes, well, as one might guess the mostly is now causing us some grief. The subsystem I am working on interfaces with the main application so that it knows when it has work to do. In the final design of the subsystem, it is a stand-alone windows service consuming application events from the event queue. Now, not only is this a test TDD project, but also trying to incorporate some Agile/Scrum techniques. I think maybe this was a mistake. Agile makes more sense when you have a team of greater then two. So really I think we are suffering an issue stemming from Iteration grouping. Our 1st iteration is quite large and provides the framework for the rest. However, we are not able to take advantage of smaller implementation items that can be pushed to later interactions. Which causes us to call my sub-system from within the application that writes to the event queue, instead of just reading the event queue.
Now, here’s where it really gets ugly. Due to how we have our name-spacing and library hierarchies, I have to move my subsystem completely out of the main project library and add it to the library code it interfaces with. And later I will have to move it back. The sub-system isn’t huge, but that’s a pain.
And why didn’t we see this coming? Because we are implementing from what the tests dictate we need, not what we will need for the entire project. Some may argue that the tests apparently were not complete and I agree. But I think it’s a little unreasonable to know that from the test perspective until it’s discovered by actual implementation. And these happen late in the game so a change is not only a change to the implementation but to the entire underlying tests which defeat the purpose of starting with the tests.
I guess one might further argue that TDD is not a replacement for detailed design. But I have to wonder, if the design is indeed so detailed as to reveal this issue before any coding (and I have seen designs that would fit the bill, as well as designed some of that ilk for prior employers) that one would not need to start with the tests as testing techniques would have been built into the requirements and design. Of course if you can , why not as it prevents people from getting time crunched and not implementing tests at all. But isn’t the point of TDD to speed up and allow for iterative design (as well as pushing testing to the forefront, which I praise it for) ?
Regards!
Posted in Programming Related | Print | No Comments »
24. March 2008 by Monkk.
Well folks, I’m here today to gripe about Test Driven Development (TDD if you can’t live without an acronym). For those unfamiliar with it, the concept is (and feel free to correct me folks), one starts coding the unit tests firsts and implements the various classes/structures one needs to make the unit tests function. By the time all is done, you have a completed, working, and unit tested application. Re-factoring is embraced, heck there’s even the TDD mantra: “Red, Green, Re-factor” (which comes from the Nunit paradigm of failed unit tests show up in red, running one’s show up in green, and the re-factor refers to moving code around / renaming classes functions, etc to make more sense in one’s project domain. Essentially it means, when just the test is written, it will fail as there is no concrete things to actually perform the tasks the test requires. Once you right just enough to make the tests pass, it passes (green) and is now ready to be “integrated” into the rest of the project with minor corrections).
Sounds good in theory doesn’t it? Unfortunately, I don’t live in Theory (houses are far too costly…) Why only in theory you ask? Well, as I sit here writing some tests so I can actually code the logic at some point, I’m looking at some diagrams of system interaction and whatnot and I frankly have no idea what the hell the tests are supposed to do… I have nothing to test, and using TDD, at best, I’ll have tests that work and they will dictate what I build, unfortunately, the business wants me to build something particular. Depending on how well I do it, I could end up with something that is what they asked for, OR I could end up somewhere completely different if my understanding is off or I get pulled into the cadence of test code (vs. application logic which may be optimized for performance or maintainabililty, or whatever).
Basically, what I am getting at is, TDD is helpful when you don’t know what you are building. However, if you don’t know what you are building, why the hell are you building anything? Your time would be better spent fleshing out the requirements and the design. And before you say it (because I KNOW you’re thinking it), “But the business doesn’t know what they want, just what they think they want and I need to deliver what they NEED!” Well, I agree, so wouldn’t expectations be better managed by working through requirements with the business so everyone is on the same page, wouldn’t you know better what you are trying to build? I think so.
So where did it all go wrong? To put it bluntly, <flameShield on=”true”>Inexpereienced Developers are the majority of the workforce, and they often make mistakes (as doing is the only way to build experience, this is expected, and natural (albeit problematic)) TDD is just another way to homogenize the programming workforce to reduce the negatives.</flameShield> The downside is it also reduces the positives of having an “All Star” team. People also cite “quicker to market” reasons as by the time development is done there is something to deliver. This is just slight of hand to avoid the problems of managing business expectations. Cough up more frequent milestones and vi’ola, it looks like things are getting done. Unfortunately in reality, the same time is spent, and I propose, MORE time is being spent with TDD refactoring every pass and of course the final refactoring to align the new code with the existing code (which to be fair mostly amounts to renaming of classes, functions, etc, not so much new coding)
To me it just sounds like an excuse to not have to learn more formal documentation and requirements skills. I think knowing what you have to build is far more important then delivering it quickly. The old adage goes, “You can have it done Fast, Right, and Cheap. Pick any two.” This technique addresses the disconnect between the developers and the business that employs them who know very little about software development (think Business Programming here, not so much Software Development shops
) I firmly believe a much better approach is to teach the business what they need to know to manage software development projects, because we as developers don’t have that skill, our magic is programming and archetecting, management is for the pointy haired boss types.
Ok, I’m done. My apologies to anyone I’ve offended! Please feel free to correct me, I’d love to hear your thoughts!
I should probably mention Martin Fowler’s book, “Refactoring. Improving the Design of Existing Code” as it’s pretty good, although seasoned developers will likely know a lot of the items in the book, other books seem to reference this one (for example, “Refactoring to Patterns” by Joshua Kerievsky”)
-Regards!
Posted in Programming Related | Print | 1 Comment »