One feller's views on the state of everyday computer science & its application (and now, OTHER STUFF) who isn't rich enough to shell out for www.myfreakinfirst-andlast-name.com
Using 89% of the same design the blog had in 2001.
FOR ENTERTAINMENT PURPOSES ONLY!!!
Back-up your data and, when you bike,
always wear white.
As an Amazon Associate, I earn from qualifying purchases. Affiliate links in green.
Increasingly, I feel like a lot of my tools are dressing-up as tools, because they donโt offer any savings in time or effort, just slightly different methods to mindlessly shift information from one bucket to the next. And if one bucket has a hole in it, you get another, smaller bucket to catch anything coming out of the hole in the first bucket. This goes on and on with more holes and buckets, and before you know it, you have an intricate network of buckets whose reason for existance [sic] is to catch the information you canโt manage in the first place. You are stuck in bucket recursion, adding tools to patch the shortcomings of other tools. Those patches are how you know you have dress-up tools.
The original is specifically targeting design tools, but I think we could easily forward that to third party libs as well. We use NHibernate at work. It's neat. But I just edited seven files so that I could query a database with complicated logic like...
SELECT * FROM MonsterLocations WHERE Zip IN (10001, 10002, 10003)
So to do the same thing as that simple SQL statement, I had to create an entity based on the table, a repository to handle all the sorts of WHERE statements I might want to run, a map of the entity to the table, etc etc. I don't begrudge the tests, much, though they're really simple stuff like, "Can I inject really conventional values into each field?" which isn't where the real value of TDD is. And I'm missing a few of those overly simplistic tests right now.
Further, there "should" have been more files, as I've stopped using ViewModels by rote and instead usually return anonymous classes based on good LINQ selects. If you're passing huge ViewModels to the client and then processing them fully on the server, be careful that you haven't created too complex a client model.
It's nice to have tools, and I understand why folks enjoy ORMs. The usual argument is that if we ever change database engines, NHibernate means we're already 80% there, but was it really worth the extra hours on hours of overhead just in case we want to swap engines later? It's been years of extra code and no change so far.
Code based on NHibernate is, by definition, lightyears away from being a minimally viable product. Enough tools/libs. Keep it simple.
There is actually a setting in Visual Studio that does this automatically.
Tools โ Options โ Projects and Solutions โ Track Active Item in Solution Explorer
That works, but it's awfully Solution Explorer spammy. I've installed the "Collapse Selection in Solution Explorer" add-on already just to combat my own spam... we'll see, I guess.
Update 20150730: This function is in VS 2012+ by default, as advertised.
So here we go. This is what I hate. I compose something for Blogger with one br tag between sections, and once I Publish, it's automagically changed to two br's.
Thanks Google. You realize Pyra had this down in the 90s, right?
It turns out that many variable length data types (and some that are fixed length, like CHAR) are represented internally with the same varlena data structure, which is simply a byte array prefixed with a 32-bit length field.
I assume I'm missing something, but, if true, that seems extremely lazy.
Monolithic applications can be successful, but increasingly people are feeling frustrations with them - especially as more applications are being deployed to the cloud . Change cycles are tied together - a change made to a small part of the application, requires the entire monolith to be rebuilt and deployed. Over time it's often hard to keep a good modular structure, making it harder to keep changes that ought to only affect one module within that module. Scaling requires scaling of the entire application rather than parts of it that require greater resource.
This is the way I "naturally" like to architect things. I'm not a big fan of, "[In a Microservices architecture,] There is a bare mininum [sic] of centralized management of these services, which may be written in different programming languages and use different data storage technologies," but there's obviously nothing inherent in the microservice that requires you fork technologies.
That said, making your app truly modular means that when you're ready to leave vbscript, you can start immediately, not kludge the crap out of your modular codebase instead (which is not to say I don't think the kludging isn't a great idea in a certain situation, but it shouldn't be a Sophie's Choice). So though I wouldn't plan on using different languages, or let too many folks plan to "try something out" that will end up living in production forever with its inherent cultural overhead (now your job posting for a C# developers have to say, "Python experience is a plus!"), the freedom to swap when it's smart, and only as quickly as you have to, is wonderful.
The worst part of not microservicing? It's the wasted work. It's very little extra work to create microservices. It's more of a head rethread than anything even as prescriptive as MVC. Write once and then refactor to microservices in bulk is a much nastier task than simply starting there. And there's nothing -- nothing -- that says you can't start accreting microservices around your current monolithic service immediately.
I'm also surprised Agile culture in general didn't gravitate here more quickly.
But yes, this is a pretty good articulation of the way I like to do things. Happy to have found it.
Joel gives an overview of Fog Creekโs attitude towards software piracy and licensing. At its root, we believe that buying your software has to be easier than stealing it. Stop thinking of it as fighting an enemy and think of it as simily being better than the alternative.
I've long believed that's why the iTunes Music Store works. At some point, I'd rather pay a dollar to find a single track quickly than to scour to steal what might end up being a very poor quality version of it.
(And by "I", I mean the nurse's "I"; I painfully don't steal music, and certainly not when bt.etree.org exists.)
But yes, you have to provide value over the alternative to sell your software for more than nothing. The various app stores are making that much easier, but it's not because they're walled as much as because they provide value for their ecosystems.
in Windows 7, press and hold Shift and right click on the grouped icon that you want to open all of it's grouped windows in a cascade arrangement, then click on Cascade .
The other two methods use the HMAC and RSA signature algorithm combined with the SHA1 hash method. Since these methods are too complex to explain in this guide, implementers are encouraged to read other guides specific to them, and not to write their own implementations, but instead use trusted open source solutions available for most languages.
One thing you may not know about Airplane mode: you can actually turn Wi-fi back on after enabling Airplane mode. Just tap the Wi-Fi button in Control Center (the icon directly to the right of the Airplane). This is perfect for places, like an airplane, where you have zero cellular coverage but a strong Wi-Fi signal.
The postings on this site are [usually] my own and do not necessarily reflect the views of any employer, past or present, or other entity. About Our Author