Posts

Showing posts with the label programming

“The Last Password” — A Story of Digital Rebellion

Image
Leo had survived schema madness. He’d outwitted deployment dragons. But now, he faced his final boss: passwords. Every system had one. Every environment had a different one. Some expired every 30 days. Others required uppercase, lowercase, symbols, emojis, and the blood of a unicorn. Leo’s password manager looked like a cryptic novel written by a paranoid wizard. One morning, Leo tried to deploy a hotfix. The CI pipeline failed. The database login expired. The VPN needed re-authentication. The cloud dashboard prompted for MFA. And the coffee machine? It asked for a password too. Leo snapped. He stormed into the server room, eyes blazing. “I am DONE remembering secrets for machines that don’t even say thank you!” He grabbed a stack of sticky notes labeled “Prod_DB_P@ssw0rd!” and flung them like confetti. He yanked out a cable labeled “Auth Proxy” and shouted, “You authenticate this!” A junior dev peeked in and whispered, “Is this failover testing?” Leo turned, wild-eyed, holding a keybo...

Leo and the Schema Revolution! - Part 2

Image
Leo’s rebellion didn’t start with a raised fist—it began with a whisper to his IDE. Instead of creating yet another schema for a new module, he wrote a comment at the top of his SQL file: sql  -- This schema is imaginary. It exists only to satisfy expectations.  -- I reject your reality and substitute my own. He declared a new philosophy: Flat is beautiful.  All tables lived in a single schema called `Freedom`. Columns were wild and free—some had names in lowercase, some screamed in ALL CAPS. Foreign keys? Optional. Stored procedures? Banished.  Then came the real statement: a README.md titled _“The Schema Rebellion Manifesto”_. It read like a blend of data modeling principles and punk rock lyrics. Leo posted it to the company wiki, shared it in the #db-architecture channel, and added ASCII art of a flaming ER diagram. Naturally, chaos followed. Test environments imploded. CI pipelines wept. One DevOps engineer sent a slack message: “Is this performance art?”  B...

Users Lie, and how to deal with it.

As you learn to develop and/or program, you eventually have to deal with users. You are, after all, trying to create something people will use. When trying to develop a tool for a user they will give you their requirements. This process has been discussed and, more frequently, mocked throughout the Internet universe. Eventually some simple 'truths' are concluded by developers. Generally they are (and I loosely quote): Users Lie Users don't know what they want The accuracy of those statements is debatable. Users don't purposely lie, they want something and they want to make sure it gets done their way and they're gonna tell you about it. Maybe just not up front. Also, they know what they want. So, to boil down to the truth, it comes down to: Users don't know how to communicate what they want. How To Deal With It So, what do we do? In my opinion, the best way to determine what a user wants is to walk through the job they are trying to get a tool for. This is where...

Domain Specific Language, or why people think I'm a genius

Let me specify right off the bat... I don't think I'm a genius. However, when I begin to tell most people about what I do for work, their eyes glaze over, and their heart-rate slows to near-death levels. It seems overly complex to them. Now, I'm not saying just anybody can walk into my office and take over what I do. I'm just saying that once you get over a few basic hurdles, I'm simply a problem solver. The main hurdle is terminology. Not just learning what certain words or phrases mean, but what they mean at different times. It may have been said, 'My home is my Domain', or some such thing. Most people wouldn't think of using the word Domain today, but if they did, they would likely think of an area they had control of. (Don't glaze over just yet.) In the IT world, a domain would refer to a collection of computers networked and protected together. But if you were to start coding, and happened to look at something like Monorail .Net you may run int...

When debugging, watch your watches

I should know better. We had a section of code where a new 'document' was created in our web app. A document in this app consists of data in various tables. So, what happens is, we start adding rows to the tables in the dataset, but before we add any rows, we turn off EnforceConstraints for the dataset. Later, right before we Save the dataset, we run a method, IsValid, which turns EnforceConstraints back on, and checks the dataset's HasErrors. So, our flow works like this: CreateButton.Click   EnforceConstraints = False   ... add a bunch of rows, which may at times have Nulls where their shouldn't be.   ... Nulls get filled in.   IsValid     EnforceConstraints = True     ... If HasErrors, throw exception.   Save End Method Now, what would happen if you put IsValid in the Watch window? That's right, EnforceConstraints would be set to True very frequently. I'll go bandage the hole in my foot now.

Of Laptops and Builds, Time wasted in the development world

Time is money. Time is of the essence. No time to kill. Every second wasted is bad. That's the long and short of it. So, let me fill you in on how even a big(ger) development company can lost this valuable resource. Hyper IT guys who think they know it all If you can rush, and never miss a step, then rush. If you're gonna rush and miss key things, don't rush. Our IT department has a procedure in place for rolling out new laptops. Backup the old one, and (within a day or two) give you the new one with all the software the developer has been using and will need. No settings are copied, but the software is supposed to be up and running. Here's how my laptop upgrade went: Backup my laptop - IT guy asks me when I'm working till. I tell him 5PM. I'll be by at 4:30 to backup your laptop. My thoughts are, he's gonna back it up and give it to me by 5? That's pretty good. So, 4:20 he comes and takes my laptop. At 4:50 PM I ask him how long it'll be. "I ho...

The problem with 'Find location by Zip code'

I live in an area where a zip code could be 30-45 minutes across. And I work in a different zip code than where I live. So let me lay out my problem. Let's say I live in the western side of 'Town A'. Further west, we have 'Town B' where I work in the Eastern half. If I do a search on my insurance company's site for doctors in the zip code of Town A, they may send me to a doctor in the eastern side of the town (remember, in this example, I live in the western side of the town.) So, I drive 30-45 minutes WEST in the morning, to go to work. Then I have a doctors appointment, and have to drive maybe 1.5 hours (passing my house) to go to the doctor. That's just silly. So, let's say I punch in the zip code for 'Town B', where I work, and they send me to the Western side of town. Here I'm working in the eastern side, so again it's all the way accross town. A 1.5 hour round trip. Could I put in 2 addresses, and let our slaves of a computer figure...

Programming Theory

I may have mentioned this blog before, but I'll state it again. http://www.codinghorror.com/ I just read this post . It reminds us to allow ourselves to take a fresh look at things, putting asside our biases. I also liked the article he wrote, Will My Software Project Fail? This site has helped me to round out my viewpoint and perspective on coding, and reminds me to look up from time to time, and remember what we're coding for.

Build Your Own Developer PC

I feel that every good developer should have a basic understanding of how a computer works on the inside, and if possible, a little time playing with Assembly. (Much like a Jedi must build his own light-saber!) Here's an article to help you start with your sweet Developer Rig. http://www.codinghorror.com/blog/archives/000918.html

Numeric DataTypes, SQL to XML

For reference: http://msdn2.microsoft.com/en-us/library/ms187745.aspx I'm working on an app where the datafield (in SQL) was set as a tinyint (-255 to 255). The typed dataset in the app used a byte (-128 to 128). Problems occured as the datafield received or needed to use values bigger than 128 or 255. An unsigned byte would have gone from 0 to 255. I'm updating both fields to do -32,768 to 32,767. This will be a smallint on the SQL side, and a Short on the dataset side. I'd love to find a reference that translates SQL datatypes to dataset/xml datatypes. If you know of one, comment here.

New info for .Net coders

We don't know everything, but everybody knows something. How can you glean the answers to your questions from the internet. Google.com is a great tool, but sometimes, instead of a back-hoe you only need a spade. So, to search for .Net stuff, try this: http://www.searchdotnet.com/ . This is a focused search for your .Net answers. I've also heard some things about Singletons at my new job. What is a Singleton? One of the links that popped up on searchDotNet.com was this link: http://msdn2.microsoft.com/en-us/library/ms954629.aspx . Interesting...

Wow... almost a month!

We had 136 with 1 partaker on April 2nd. Our bible studies came, so that was nice. Okay, the new job. I like it. I have to get acclimated to the new type of work environment, but as for technical skill, I'm not as far behind as I was afraid I would be. I still have a lot to learn, and it's a big project, but it's VB .Net 1.1. So I don't have to get used to a new language right now. I'll try to find topics I can talk about but for now, just getting used to the routine and such. All else is well.

PHP and mySQL ROCK!!!

Why would a Microsoft guy say that? Well, because they do!!! I created a demo database so that I could flex my muscles with PHP while searching for a job. (More on that to come.) You can check out my samples page here: http://www.greatwhitedata.com/samples.php I got to thinking, when I wanted to add a joke to my site, why create a page for every joke? So, I created a database for my site with tables for jokes. Take a look at the results here: http://mark.phillk.net/funnyKeys.php I even create a PHP form for adding jokes in. It uses Key words to sort. It's not as intuitive as .Net, but it works, and it's free. New Job Ok, now to my new job. Computer Aid . I decided that I needed to broaden my horizons, get out of my basement, and get something that paid enough so that I wouldn't have to work 2 jobs. (7 DAYS A WEEK! YEESH!) I can't give out details of my job assignment, but this is a consulting firm, so they have multiple projects for multiple clients. I will probably be ...

Samples of my work

I have a page put together now that shows some of the work I've done: http://www.greatwhitedata.com/samples.php

MsgBox vs. MessageBox.Show

I won't go into all the details here. I will point out, using MsgBox() overloads do not come close to all the flexibility of MessageBox.Show() overloads. You can do some searching on your own, but hopefull this reminder will help others. I googled for a while down the wrong path, before I had to ask for help.

No wonder my numbers were down.

When I revamped my blog here, I forgot to include the counter for it! No wonder my numbers dropped to zero. I know I have many eager fans/listeners/readers. In programming news, work continues on the Canon SDK at the Canon Yahoo! group. http://tech.groups.yahoo.com/group/CanonSDK/ DataMatch is getting a major look overhaul, and some basic functionality enhancements. We're not throwing a lot of NEW features in just yet. Just getting a bunch of little glitches running better.

Ensuring clean .Net memory management

If you're a .Net developer, it would be good to review this article . Yes, it's been a while since I posted mainly programming info, but I am trying to get back into it. I've been reading a lot of tech stuff, and will be adding some of it here.

Much ado!!!

Ever get stranded in an unfamiliar location? We did!!! Let's see, where to start. 2 weekends ago, December 9 th and 10 th , I spent working on my work system, trying to re-install Windows XP Pro. Why? I get weird STOP errors when I go through my registry and other things. I tried to do it without wiping my drive, but couldn't until I removed one of my 512Mb chips of RAM. This past weekend, 16 th and 17 th , Steph and I drove to CT for my sister's graduation party. All went well (other than the fuse blowing at the hotel room) once we got there. We were going to head up Friday, but a surprise late bill canceled that. (Our water bill should come to us, not the landlord, then it won't surprise us!) It was on the way home we had trouble. We were doing fine, crossed the PA border and took the first exit to grab a bite to eat. Got back on the highway, accelerating to cruising speed, and we hear a big BANG! I pull over thinking a tire blew or something... nope, all looks we...