The Tucows Developers' Hangout is a weblog that features articles of interest to software developers from beginner to expert, from casual hobbyist to enterprise systems programmer and whose target platform ranges from a handheld unit to the Internet.read more:
What Is A Professional Programmer? By Sarah George
So what does it mean
to be a professional programmer? What does it mean to be a professional anything
? Some definitions simply say to be a professional is "to make money from a skill," but true professionals also have a set of qualities often described as "professionalism." In my opinion, these qualities are...Click here for the full article.
Two Principles of Conversation By Kevin Cauble
So whatâ??s a programmer to do? Short of waiting for MIS managers to become enlightened, not much--except try to work around the problem as best we can.Click here for the full article.
Browser security versus virtual autism
I tend to ignore articles on security because I don't have a lot of respect for the security companies. As far as I can tell, most security stories are credulous regurgitations of these companies' misleading press releases. Their vested interest in FUD, their conflict of interests with their own customers, their alarmist and uninformative tendencies: all these things make it hard to take them seriously.
Just this last week there was one or other of this motley crew claiming 'Windows more secure than Linux'. The numbers were blatant nonsense, counting any Linux vulnerability once per distribution, for example, and I'm not interested in that non-story.
In amongst the usual stream of commercial effluent, I found myself reading a couple of interesting papers on phishing.
If you're anything like me (and I hope you're not) you receive several hundred spam messages a day. For my home account, one of the mod3 Solaris zone hosting
dudes set up a greylisting
system that pretty much squashed the problem. Work uses a commercial filtering system that doesn't work nearly as well, and doesn't even let me say 'drop anything in any non-European language', which would be a very
effective work-around for me. I'll admit to having been nervous about the greylisting idea ('but won't it delay genuine mail?'), but I've only been inconvenienced once so far, and that wasn't for long. I waste far much more time wading through the obvious spam at work every day
than I did on the one occasion I've had to wait for a web site to retry its confirmation mail.
Anyway, given the amount of spam that gets through at work, I see quite a lot of phishing attempts. Some would be worryingly convincing if I had any connection with the alleged institutions, many are fairly obviously bogus if you give them more than a second's glance, and some are laughably bad. That last class has always interested me the most. My assumption was always that such mails wouldn't fool anybody, leaving me wondering why the prospective phisher didn't try a bit harder?
Now I'm starting to wonder if the criminals aren't just being clever, expending no more effort than necessary to fool the foolable.
Reading Why Phishing Works
, I was shocked by the lack of acumen displayed by the experiment's subjects. The sample size was, I felt, small: only 22 people. I'm also not sure how representative of the general public university staff and students are. All the same...
Even if you don't care about security, if you're a programmer it's worth reading the paper just to see how far out of touch with technology many users are. In particular, they have no idea what's easy to fake and what's hard to fake.
That text and graphics inside the page are more trusted than text and graphics in the browser's own UI shows you just how much the disconnect between the user's model and system's model can cost.
It's also interesting to see how much of the browser people just ignore. I was thanked for adding a 'new' feature to Terminator the other week when all I'd done was add a tool tip to draw attention to a feature that had been there much longer. That was understandable because the feature was otherwise invisible and only enjoyed by people who had just assumed it would be there. This paper, though, suggests that browser features that you and I probably consider highly visible just aren't seen. Or they're seen and misunderstood, which is potentially worse when they're security features.
Not all of the problems identified in the paper are anything to do with technology, though. Except insofar as they suggest that people are bad at transferring real-world common sense to the 'virtual' world, or bad at realizing that they're the same
I wonder if the woman who 'will click on any type of link at work where she has virus protection and system administrators to fix the machine, but never at home' would agree to be beaten by said system administrators with baseball bats in the grounds of a local hospital. Presumably that would be fine, because the hospital can fix things up afterwards? So no harm done, right?
And there's the woman who types in her username and password to see if a site's genuine. Presumably she'd be happy to give me her life savings to see whether I can be trusted to return them?
I do hope those two are now starred out. But I know they aren't, and I know there are millions like them, sharing LANs (or even machines) with us.
I showed the paper to my girlfriend. She didn't know about https: versus http:, didn't know there was a padlock icon anywhere (and I'll admit that I had to look for it in Safari; I'll be switching to Firefox completely as soon as it has spelling checking), or what the padlock means, and definitely didn't know anything about certificates. It had never really occurred to me before that there were millions of people out there typing their financial details in to HTML forms without the vaguest idea of which end of the firestick the boom comes out.
We've accidentally created a whole race of virtual autists, devoid of their usual ability to infer trustworthiness.
If you think that's an over-statement, read the paper and look at the cues the participants were using. In ignorance of the high-tech stuff the browser was offering, they were falling back to tried-and-tested visual cues, despite the fact that it's trivial to copy any image, text, or video on-line.
The authors have a suggestion, if you're not too depressed to keep reading. The Battle Against Phishing: Dynamic Security Skins
describes a way of improving the browser's security indicators, but I didn't really get how it's supposed to address what seems to be the more fundamental problem: people just don't know what they're looking for. If Firefox's yellow location bar is as invisible as it appears to be, is that battle not already lost?read more:
Gravity exerts an irresistible pull....
Last night was our fourth hockey game of the season. We lost the first two, both by a single goal; the first one we really should have won, the second was just a hard-fought game. We won the third game, 7-1. To be honest I felt kind of bad about that one. You’d think it would be fun to have a game like that, but I always remember the times I was on the losing end of those games and it’s hard to enjoy it.
Anyway, like I said, last night was the fourth game of the season. We ended up coming back from a 2-0 deficit to tie it, but it felt like a win, the way we played. Our opponents were the best team in the league (same team that won the championship last season), so a tie isn?t bad at all (we can do better, though. ;)) After the game, our goalie stood up in front of everyone and announced that I had had a ?monster? game, my ?best game of the season, by far?, and that I was ?absolutely everywhere on the ice?. I think I blushed. :) Anyway, it was a really good game; I had lots of great defensive plays, stopping breakaways, cutting off passes, etc.
I did have one big fall, though, which everyone teased me about mercilessly. The captain said he was taking up a collection to have my skates sharpened. :) We had the puck in their zone, 2nd period, we were getting lots of good pressure. Curry, one of the forwards, got the puck at the left wing and saw me completely open at the blue line. He passed it to me, perfect pass, and right as he did my legs just shot out from under me. Nobody within 20?, a perfect pass, and I just BAM! fell down. What?s worse is that, as I was laying on the ice, the puck was coming straight towards me. I mean, STRAIGHT towards me. If I hadn?t moved it would have hit me right in the middle of my stick. Of course, like a total idiot I tried to lift my stick (as I?m laying flat on the ice) to take the pass with the blade, and the puck goes under the stick, under me, and out of the zone. Brilliant!
Anyway, like I said, I had a good game—almost had a goal. I had the puck all alone against 3 defenders, I faked past one, ended up right in the center of the ice with the 2 defenders in front of me. I seem to find myself in that situation about once a game, so I’ve been trying to make it work for me. My current move is to cut right just a bit to get the defender between me and the goalie, and then shoot the puck through the defender’s legs, so the goalie has trouble seeing the shot at first. This time, I?m pretty sure the shot hit the post on the far side, it was a really nice shot and I don?t think the goalie really saw it. Eventually one of those shots is going to go in, it just didn?t happen that game.
I’ve also noticed a number of Spoonerisms coming out of my mouth lately. After the game I wanted to talk about the fact that especially in the second period, it’s important to keep our shifts short so we don’t get tired and caught out of position (which is why we were down 2-0), only I said it was important to keep our “shorts shifted”. You can guess what kind of jokes were made at my expense at that point. ;) I actually really like this team. Everyone on it is always in a good mode, there’s teasing and camaraderie in the locker room. Jen says she approves of their teasing me all the time, and frankly I agree; it’s a really great group of guys and I’m glad to be a part of it. What’s even better is that I know other guys on nearly every team in the league (last nights’ opponents are pretty much the exception), so there’s always someone to say hi to or trash talk before the game. It’s a lot of fun, and it makes me wish I could play hockey every night. :)
Playing games without Jen in the audience is kind of weird. She’d only missed a few games before this season, and I was pretty used to looking up and seeing her in the second or third row, reading her book at period intermissions or cheering during play. I keep looking for her, and of course she’s not there. She’ll get to see my game this Saturday, though, so hopefully I’ll have another good game. :)
As far as work goes, it’s pretty busy right now. We have our second-most-major deadline of this entire release coming up, and everyone’s scrambling to get ready. I’m in the middle of a really frustrating problem (been working on it about 14 hours thus far, with no resolution). It doesn’t help that making brand new code work exactly like the old code did six months ago—which is what we’re doing—is one of the more tedious, uncreative jobs in programming. It has to be done, and it will be worth the effort at the end, but any programmer will tell you that solving new problems and writing new code is much more fun.
Aside from work and hockey I haven’t done much; I have a million things to do to the house that I just haven’t had the time to do, and we’re supposed to hang out with some friends for July 4th, but other than that my social life is essentially nonexistant. :) Sorry. No new baby news, either; we won’t know the sex for another 5 weeks, and that’s really the next big milestone. I’ve actually only told 3 people at work, partially because everyone who knows Jenny is pregnant seems to only talk to her about that sometimes, and I don’t want that to happen. Of course I’m also a pretty private person in general.read more:
Running a software company
An absolutely essential factor in running a software company effectively is the vision from a real, actual professional programmer, period.read more:
Indeed, the technical profile of Mr. William Henry Gates III has been an important factor at Microsoft. Of course, MBAs have their role at any company but please MBAs, consider this: do not try to run a company which does something you think understand but actually don't.
My First BillG Review
Geeks Rule and MBAs Drool
Why eBay Bought Skype
Pillars of our trade
Very good article in IEEE Software January/Februry 2006 magazine:
Looking for Powerful Abstractions by Rebecca J. Wirfs-Brock
'Finding the right level of abstraction
takes practice and experimentation.
There are times when both concrete
classes and their common abstraction
add value to a design, and there are
times when they don?t. To find good
classes, experienced designers make
distinctions based on significant behavior
There are words and phrases from experienced people in our industry of software design and programming that just feel right, it is like they are describing a higher level of truth I need to aspire.
Another example from How do we tell truths that might hurt?:
'Besides a mathematical inclination,
an exceptionally good mastery
of one's native tongue
is the most vital asset of
a competent programmer' -Edsger W. Dijkstra
That is a reason why these people are pillars of our trade. read more:
Daily Journaling Notes
<p>Jeremy Hylton <ahref='http://www.python.org/%7Ejeremy/weblog/031009b.html'>notes</a>the importance of keeping good notes, along with a good chunk of soundadvice from the article <ahref='http://www.acmqueue.org/modules.php?name=Content&pa=showpage&pid=69'>CodingSmart: People vs. Tools</a> by Donn M. Seeley, which I finallygot around to reading. I'd love to hear his review of <ahref='http://www.cvstrac.org/'>CVSTrac,</a> and whether it'sfeasible <a href='http://zwiki.org/CVSTrac'>in a Zopescenario</a>.</p><p>Ed Taekema has <ahref='http://www.pycs.net/users/0000177/weblog/2003/10/16.html'>noted</a>the use of wiki's in this area, along with several relatedarticles.</p><p>'Coding Smart' felt slightly dogmatic, but appropriately so.The initial <em>watch out--that new languages may kill yourdevelopment time</em>bugged me, as it's one of the reasons I've used to avoid writingtesting apps in Python and redundantly tested manually. His otherpointthat the new language may not be transferable to other workers I feelis a non-issue with Python. Idioms. Ouch, they are the differencebetween 'Pythonic' and 'Python', eh? I admit here I was setbacked. Wasthis general purpose programming language was leading down anotheresoteric path, reducing my psuedocodish Python to n00bish dribble or<ahref='http://www.enac.northwestern.edu/%7Etew/archives/000072.html'>unreadable</a><ahref='http://www.python.org/doc/current/tut/node6.html#SECTION006750000000000000000'>shortcuts</a>?(*What cocky programmer wouldn't claim to be able to pick up anotherlanguage in a few days, let alone <ahref='http://fishbowl.pastiche.org/2003/10/08/sig_quote_of_the_day'>debugit</a>? ) </p><p>Later Seeley moved into 'use psuedo-code', which I dug butraised aneyebrow to, Given Python's readable code and experiment and validationcapabilities. Python does add a lot of value here, and of course noteverwhere. I'd like to tie in frustrations of trying to communicate inuser stories when peer coder speaks in schema tweeks and algorithms,orthat generally good problem statements inherit the solution, butwon't.Peer reviews are also cool when common values are apparent andpersonaldogma is chained.</p><p>Outlining. +1. This is what <ahref='http://www.pycs.net/sqr/2003/09/24.html%20'>I use Word</a>for.</p><p>My college business professor (and many others) repeatedlyrecommended keeping a profesional journal. I've never been able tokeepup a paper journal. My <ahref='http://zwiki.org/PersonalWikiExplanation'>personal wiki</a>isprimarily 'notes to self' and similar links. Good notes in change logsare critical, and prefer then to be tacked within the source, as a'blog within a file' type of thing. Code diff's are no replacement,andare far from convenient--<em>especially</em> when trying togrok code and it's hi<em>story</em>. My personal wiki has a<a href='http://webseitz.fluxent.com/wiki/FrontPage'>blogapsect</a>with entry form on the front page. This causes more blog and lesswiki,but without it the time it took me to figure out where to put theresource would derail many of my intentions.</p><p>Thought of the day: When folks complain about documentation,what part of knowlege management has failed?</p>read more:
Thoughts on code audience
CP4E get's regularly noted when folks talk about expanding Pythons m???share by commencing more programmers. Similar to the 'create, don't overtake, markets' thought.
Mats Wichmann threw this discussion an appropriate curveball by asking: 'If Python is so easy for humans to program in, shouldn't it also be an easy language for programs to program in ...?'
Fredric Lundh addresses the literal issue here.
I have never analyzed code generation from UML tools before, but a comparison of model to code from a C++, Java and Python example would add insight here, although the tip of the iceburg for Mats thoughts.
Jeff Sutherland threatens: 'Therefore, American programmers must find a way to be ten times as productive or they are history', following it up with the dire need for Model Driven Development and resources. Hmmmm... Python & Java: a Side-by-Side Comparison opens with 'A programmer can be significantly more productive in Python than in Java. How much more productive? The most widely accepted estimate is 5-10 times'.
Wizards fall in there somewhere also, but are just one slice of that taxonomy. I like task automation wizards and that let me save the steps for later use, ideally in a plain text editable fashion. Which leads to...
Embedded Python for 'code that pushes applications' is also an area where python could use more face time. VBScript is a tired poster-boy, and it seems that with the latest OpenOffice/STAR Office, the window of opportunity is being addressed with Python-UNO.
Also, of note: Learning Tree's Python training is no longer supported! Many alternatives exist, including this one during October in Colorado by a University of Wisconsin graduate.read more:
Python and X10 Home Automation, Part 1
Python and X10 Home Automation, Part 1
I recently saw an ad from x10.com for a free (you pay shipping) X10 starter kit, including a 'Firecracker' computer interface. That was a deal I couldn't pass up, so I ordered it through their web site, and 3 days later, the kit arrived.
The kit consists of the CM-17a 'Firecracker' serial computer interface, which transmits via radio, a transceiver module which receives the radio commands from the Firecracker and retransmits them via the X10 protocol over your house wiring, a lamp modules for controlling... lamps, and a PalmPilot-sized hand-held remote control that lets you manually do what the computer interface does. Oh, and the transceiver module also double as an appliance module, allowing you to control appliances of up to 500 watts.
With the hand-held controller, you can control any X10 modules you have, either the ones that come with the kit, or any add-on modules you may want to buy. You could go wild, like many do, and completely automate your home -- lights, appliances, garage door, pool heater, ferret feeder, whatever.
But with the computer interface, things get much more interesting. You can, for example, download from x10.com a free application that duplicates the appearance and functionality of the hand-held controller on your computer screen. Or, you can download, for $20, an application that fully utilizes your computer and the x10 interface to do full automation. Want your hot-tub to turn on at a certain time every day? No problem. Want your lights to simulate an occupied house while you are on vacation? Easy.
Naturally, hand an X10 computer interface to a Python programmer, and he'll immediately start writing code for it. Or that was my intent, anyway. The first thing I did was google around for any existing Python projects for X10. I found two, Pyxal and Pyx10. Both projects seem to be unmaintaned. Pyxal is pure Python, and does not support the recent X10 controllers, like the Firecracker. Pyx10 uses a wrapper to turn the XAL library into a Python extention module. It supports recent X10 controllers, including the Firecracker.
I downloaded and examined both. Pyxal was right out, as it has no Firecracker support (why not add it yourself, you ask? I'll get to that in a moment...). Pyx10 and XAL looked good. After compiling and installing XAL (a snap), I tried compiling Pyx10. Nope. The wrapper code for XAL would not compile. From a quick exam, it looked like it was out-of-sync with XAL.
I could have continued hacking at it to get it to work, but further googling (the trademark police are gonna get me), I found Project WiSH, a project for turning X10 device drivers into... well, Linux device drivers. Super! Instead of having to do low-level device handling from my code, I can simply open a linux device driver and write commands to it, just like I was writing text to a file. And WiSH was a snap to compile and install. Just make sure you have your kernel source loaded on your machine. (For the CM-17a 'Firecracker', be sure to download the 1.6.10 version of WiSH. The later 2.0.1 version does not yet support it. But both versions support the CM-11a, which is the other modern popular X10 computer interface controller.)
Now, I do my work under Linux, so this is just what the code doctor ordered. Actually, it's even better than it sounds. You see, there's this little bit of info about that Firecracker X10 controller...
If you look at one of the other X10 computer interfaces, say the CM-11a that comes with another of the home automation intro packages that x10.com sells, you will see that it is controlled via the computer in a manner rather like an external serial modem. Connect it to your serial port, and send it strings of ASCII characters. Not so with the CM-17a 'Firecracker'. This little guy is a serial pass-thru 'dongle', very small. From what I can tell from my Google research, you must directly control the radio transmitter in it via bit-tiddling the RTS and DTR lines of the serial port. You must assemble a 5-byte command via bit masking, then bit-shift it out to the CM-17a by directly controlling the states of the RTS and DTR lines, doing the timing yourself. There are no smarts. Ouch. No wonder this is the bargain-basement controller.
The CM-11a controller has another advantage, too. It's smart, it has its own processor. So you don't even need to leave your computer on to do real-time home automation. Use the scheduling software to send it commands, like 'turn on my security light at local-time dusk, and turn it off at dawn', and the CM-11a will do it, all by itself.
But I don't have the CM-11a. I have a CM-17a and a Linux box. Add in the device drivers from Project WiSH, and from a Linux command line, I can execute 'echo 'on' >>/dev/x10/a1', and send the 'on' command to the X10 device at house code 'A', unit code '1'. How cool is that?
OK, how can we combine equal portions of X10, Project WiSH, Linux, Python, and fun? (OK, fun gets a bigger portion.)
Here's the deal. I work for a major software house. We do automated nightly compiles of our code on all of the platforms we support (Linux, various flavors of UNIX, Windoze). The last thing you want is for some code change you made that day to 'break the build'. The automated process sends out email giving that night's build status. If you broke the build, it's supposed to be your first priority to fix it.
I keep forgetting to check my email. I have many projects, they grab my attention, and it may be hours before I check my mail. Yes, I have a little task bar thingie that tells me if I get new mail. I don't look at it if I'm concentrating on a problem.
Python and X10 to the rescue! (This is a fun solution looking for a problem.) I now have a Python script that is run via cron every 10 minutes. It uses the poplib and email modules to grab and parse my email, looking for the specific patterns that a 'you broke the build' message will contain. If it finds such a message, it opens and writes an 'on' command to the proper X10 device driver, which then turns on the BIG RED ROTATING LIGHT. I kid you not.
This is so much fun!read more:
The new PodShow+ site, unleashing pretty darn soon, has a personal bio feature called 'The Legend of me'. I just filled mine out. Here's what I wrote:
Pretty verbose --- it fills the alotted space on my profile page --- yet it barely scratches the surface.read more:
Language of the year
The Pragmatic Programmer suggests learning a new programming language (at least) once per year. Specifically, you should learn a language that changes the way you think about things - learning C# if you know Java doesn't count.
Last year I decided to learn Ruby - a lot of people told me how great it is. At first I thought it was pointless, but I eventually dived in. Man, I'm glad I did! I've since fallen in love with language.
Ruby is an incredibly clean and concise loosly typed OO language - a much purer OO than Java as everything is an object. It has some very nice features such as blocks/closures and the ability to create new types on the fly. But what it really taught me was the power of simplicity. Using Ruby I could solve problems quicker, with far less code which was easier to maintain and well designed. And the code looks so good to - zero fluff. Learning about simplicity was very much a theme for me last year.
On top of that I had to get to grips with maintaining loosly typed code. I never really mastered this in my Perl hacking days which is probably why I love Java so much. However, I've since become test-infected and cannot write a line of code that isn't test first (seriously - I can't - it's annoying sometimes!). The great thing about becoming test-infected is you end up with very very strongly typed code. Effective unit tests show many more problems than the compiler as they actually test the code does the right thing rather than just if it's syntacticly correct. And the tests provide an excellent reference manual for your objects.
So anyway, Ruby has changed the way I think and I really would write business applications in this language (if I could convince the clients I work for).
But it's a new year now and I'm looking for a new language. So what do I learn?
Smalltalk has been recommended but I think I may have already learned some of it's most important lessons through Ruby.
From chatting to colleagues, I've narrowed the list down to:
- LISP (with CLOS and MOP)
So, which one should it be? How will they change the way I think? What will you be learning this year?read more:
More BizTalk Server 2006 Samples on MSDN!
The programmer/writers have posted 10 more samples to the BizTalk Server Developer Center on MSDN (http://msdn.microsoft.com/biztalk/)!
This sample consists of a C# console application that instantiates and hosts an instance of the receive adapter. The adapter is a Visual Studio 2005 class library that invokes the BizTalk Server 2006 APIs.
This sample demonstrates how acknowledgments work and how to use delivery notification.
Using Long-Running Transactions in Orchestrations
This sample demonstrates how to use long-running transactions in orchestrations.
Using the Looping Functoid
This sample transforms catalog data from one format to another by using the Looping functoid.
Mapping to a Repeating Structure
This sample demonstrates how to map multiple recurring records in an inbound message to their corresponding records in the outbound message in the BizTalk Mapper.
This sample demonstrates how to design the parallel convoy pattern in BizTalk Orchestration Designer.
This sample demonstrates how to invoke a policy from another policy by calling the Execute method of the Policy class exposed directly by the Microsoft.RuleEngine assembly.
Recoverable Interchange Processing Using Pipelines
This sample demonstrates how to implement recoverable interchange processing.
Using the Table Looping Functoid
This sample demonstrates the use of the Table Looping functoid in gated and non-gated configurations.
Using the Value Mapping and Value Mapping (Flattening) Functoids
This sample demonstrates the use of the Value Mapping and Value Mapping (Flattening) functoids to transform data between different message formats.
What Exactly is Web 2.0?
Many of you have probably seen references to 'Web 2.0' around the 'Net. Tim O'Reilly has taken on writing about what this term means in his recent article, What Is Web 2.0, Design Patterns and Business Models for the Next Generation of Software. It's not just a boring article defining the term or written so that only programmers would understand it, though. Tim's new article overviews how the Internet arrived where it is today, comparing the past with comparables today in a way that even a non-programmer like myself can understand. Today's post provides an overview of this fascinating new article. (389 words, 3 links)read more:
Behind the Scenes with Apache's .htaccess
Although I'm a designer and not a programmer or server-side specialist, for a few years I've used Apache's .htaccess to a limited degree for clients' websites, primarily for simple URL redirects and setting up custom error pages. Now that I can use Apache's .htaccess for my own websites, I've been immersed in learning more about how to use this powerful tool conservatively but effectively to redirect URLs and to combat spammers and bad bots. Today's post provides links to some of the online sources that I've found especially helpful. (3024 words, 91 links)read more:
Rails programmer needed!
So I’m going to be leaving Gilsson shortly for a new startup in Berkeley, which means that my old job is now open. If you’re within commuting distance from Hayward, CA and are looking for a Rails/IT position, check this out:Responsibilities:Maintain local network of 5-10 workstations and 1-2 file and database servers, with a mix [...]read more:
ASP.NET developer wanted in Stockholm
The busy days at NetRelations continue. Just after finding the right person for the front-end developer job opening I posted about in mid-November, we now need to recruit again. This time we need someone with more back-end skills, more specifically a standards aware ASP.NET programmer.
Are you based in the Stockholm, Sweden area? Do you spend most of your days building websites with ASP.NET? Have you worked with the EPiServer CMS? Do you want to build modern, web standards based and accessible websites, but aren't allowed to at your current place of work? Come work for us instead.
At NetRelations, solid knowledge of Web standards is a requirement, so we want you to know how to avoid the non-standard, poor excuse for client side code that out-of-the box installations of ASP.NET/EPiServer produce. In other words, we're not looking for a Visual Studio drag-and-drop cowboy.
More details and information on where to send your application is available in Vi söker en webbstandardinriktad ASP.NET/EPiServerutvecklare. Please do not apply by posting comments here.Visit site to read or post comments…
Add 456 Berea Street to your Technorati favorites.
Posted in Job openings.
2007 Key to Success: You are the CEO
Here?s my 2007 prediction:You will make more money in 2007 on the Net than you have ever made in the past.How? By changing your perspective. This year, you will see yourself and act like the CEO of your own Virtual Real Estate Company.Too often, you tackle problems as a web designer, an SEO, a programmer, [...]read more:
You?re Not a Programmer, We Won?t Pay You That Much
Occasionally, people ask me to create XHTML/CSS template based on provided .PSDs. Most of the time, such projects are pretty straight-forward — I tell the hourly rate and the estimated hours. The prospective client then accepts the offer or not.It could be zillion reasons why clients reject offers and I’m used to some neutral (read: polite) [...]read more:
Career Paths for Programmers By John Bennett, Jr.
You Searched for
The key to maintaining a good employment outlook in IT, it seems, is to move out of programming and up into more business-oriented IT positions such as systems analyst, business analyst, project manager, or systems architect. However, a computer programmer can't just decide to become a systems analyst or project manager overnight.Click here for the full article.
asp programmer Click asp programmer to go to MMK Technologies
SEARCH RSS NEWS USING THE WORDS BELOW
asp programmer |
cgi store |
perl store |
internet store |
database programmer |
internet database |
online marketing |
ecommerce software |
streaming media |
video streaming |
secure video streams |
media streams |
audio streaming |
MP3 security |
avi security |
Windows Media Security |
protect video |
secure web cam |
webcam security |
video piracy |
media piracy |
windows media player security |
secure media |
protect audio |
video stream protection |
MMK Technologies |
prevent audio theft |
prevent video theft |
web page design |
ecommerce shopping cart |
shopping store ASP |
sell online |
sell products |
products to sell online |
web technology |
website builders |
web site builder |
bradenton web design |
florida web design |
bradenton website design |
protect MP3 |
keep video from being copied |
sarasota web design |
secure upload video |
web programming |
cgi programming |
net hosting |
net development |
flash design |
flash programming |
cool flash |
action script |
flash database programming |
flash graphics |
graphics design |
graphics disign |
flash disign |
web disign |
web design |
website design |
internet marketing |
web marketing |
web site marketing |
web sites designer |
web designs |
internet design |
programming developer |
website marketing |
web development |
marketing internet |
web sites designing |
site designs |
sites designs |
internet designer |
internet designs |
e-commerce store |
web development |
web site development |
design webs |
internet site marketing |
internet hosting |
internet host |
web hosting |
web host |
sell on the internet |
sell on the web |
e-commerce store |
internet development |
florida web site design |
website development |
ecommerce store |
sell online |
affiliate program |
asp web store |
marketing program |
marketing software |
submission software |
asp programmer |
Cherry Hill Antiques Orlando florida Famous Marc Art Antiques collectibles antique seminars artwork oil painting arclyic painting
Web Design Hosting and internet marketing by MMK Technologies
(c) Copyright 2005 MMK Technologies.