 |
 |
Saturday, March 20, 2010 12:51:17
Rate this entry:
Average Rating: 0.0
(0 votes)
Seriously, Microsoft? The newest version of the Windows mobile operating system, Windows Phone 7 Series, according to Microsoft sources, will not have clipboard functionality, meaning you will not be able to copy and paste text between applications. So if you need to copy some text from a web page to an email message, or copy an address into an existing contact, or copy a URL into your task list, or any of a hundred other copy/paste uses, you're out of luck, because Microsoft knows what's best for you. Their text-recognition logic is supposed to be an alternative to the clipboard, allowing you to perform standard tasks on phone numbers and email addresses, which they feel is what 80% of users actually think they need copy/paste for. While this may be useful, it's certainly no replacement.
Here's the conversation that must have taken place:
M$ Exec: So, a bunch of people have iPhones. Let's build something like that. Engineer: What features do you want? M$ Exec: I read somewhere that the first series of iPhone didn't have a clipboard. I know we had a clipboard in all previous Windows Mobile versions, but if we want to be successful like Apple, then we need to take the clipboard out. Engineer: Did you also see that lots of people complained, and eventually they put a clipboard in? M$ Exec: No, I can't be bothered to read entire articles. Besides, I already said to leave it out, and I can't change my mind now. That's called leadership. Engineer: (mumbling) What a unbelievable tool. M$ Exec: What was that? Engineer: I said that was an unbelievably cool idea. I guess that's why you get paid the big bucks. M$ Exec: That's right. I could squash you like a bug. Now go fetch me some coffee. Engineer: (mumbling) Cretinous ogre. M$ Exec: What? Engineer: Cream and sugar?
Microsoft has recently gone to great lengths to build quality products, most notably Windows 7. Even Internet Exploder has improved in versions 7 and 8, to the point where IE9 might only kind of suck. Office 2010, .NET 4.0/Visual Studio 2010, Bing, XBox, and a series of other Microsoft products have all improved, adding features that people want and need, with a focus on integrating technologies together to make life more convenient. Taking a core feature like the clipboard out of an entire operating system and office suite just doesn't make any sense. It's a decision that's going to further alienate Microsoft-haters, and piss off people that don't realize there's no copy/paste until they need it. |
Tags: rant microsoft tech mobile
Comments:
Add Comment
Saturday, January 30, 2010 23:15:11
Rate this entry:
Average Rating: 0.0
(0 votes)
I've supported Mozilla Firefox for a long time. I'm not changing my opinion that Firefox is an amazing piece of technology, but it's time to switch my official favorite browser to the newest version of Google Chrome, version 4.0.
Chrome has made amazing leaps in the industry, starting in late 2008, and already being the browser of choice for a significant number of people across the world. Speed has obviously been Chrome's biggest selling point - application speed and javascript speed are significantly better than any of the other major browsers. With open-source code, and security and basic user-experience on par with the competition, Chrome already had what it takes to be great.
However, with version 4, Chrome introduced the Firefox-killer: extensions. Extensions are what made Firefox special, and Chrome is off to a great start. Firefox has over 5,000 extensions for a wide variety of customizations, from simple appearance to bookmark management, social networking integration, privacy, development, language support, blogging, download management, and dozens of other categories. Basically, if you want to do it online, chances are someone wrote a Firefox extension to help you. I personally have used many extensions in Firefox, and have found them to be invaluable. For example, Linkification converts plain-text URLs into clickable links, saving copy/paste time when saving a bunch of plain-text links. Video DownloadHelper will save nearly all Flash streaming videos (like YouTube or Today's Big Thing onto your disk to watch later, with a simple user interface. And developer tools like Web Developer and Firebug are very useful for developing and debugging web applications.
Chrome now has their own extensions, and while they may not number in the thousands just yet, they're well on their way. Installation couldn't be any easier - most are one-click, like with Firefox. More are being added all the time, so it's just a matter of time before they catch up with Firefox.
Chrome seems to lead the industry in HTML5 support. This support, combined with its fast javascript rendering, make it the perfect browser for new web demos, like the Browser Ball, Intergalactic Oddyssey, and Canvascape.
The speed, support, and especially the introduction of extensions, make Chrome the best of the browsers at this time. Of course, in this ever-changing market, that can change at any time. Firefox 4 or 5 might figure out how to imrpove their speed and get back on top. Who knows, maybe IE9 will even top it. And maybe monkeys will fly out of my butt. |
Tags: browser tech
Comments:
Add Comment
Sunday, November 29, 2009 21:44:23
Rate this entry:
Average Rating: 4.0
(2 votes)
Everyone knows that Google controls a significant part of the web, but not a lot of people know that Google developers have a real sense of humor.
One example is that if you search for "recursion", Google asks "Did you mean: recursion". This link redirects you to itself, which is of course what recursion is.

Another example is when you search for "the answer to life the universe and everything", it tells you "the answer to life the universe and everything = 42" - a reference to the movie The Hitchhiker's Guide to the Galaxy.

Recently, people have discovered another series of comedic responses from Google. Not long ago, Google added AutoComplete to their homepage, which gives you a dropdown of common search criteria based on what you are typing. Usually the results it gives you are pretty standard, but every once in a while, a ridiculous funny one comes up, such as:
 or

There's a website, Autocomplete Me, where people can submit these funny screenshots as they find them. There's an RSS feed so you can keep an eye on them, since there are a few new good ones every day. Some of them are not family-friendly - there are several with adult language or content, but those typically are even funnier. This means that Google itself is providing inappropriate phrases to the general public, which seems pretty unethical to me, but that's a discussion for another time.
Here are a few more fun samples:



http://www.autocompleteme.com/ |
Tags: searchengine funny tech
Comments:
Add Comment
Sunday, November 29, 2009 19:04:12
Rate this entry:
Average Rating: 0.0
(0 votes)
I've got a new page on my website, Free Software, listing my favorite free applications for software development, data security, and other utilities. Some are open source, some are freeware, and some are free software, but no shareware or trialware.
http://www.jtenos.com/freesoftware.aspx |
Tags: microsoft programming operatingsystem browser tech
Comments:
Add Comment
Tuesday, November 24, 2009 21:33:01
Rate this entry:
Average Rating: 0.0
(0 votes)
Tonight I submitted another article to The Code Project entitled Custom Flag "Enum" Using Binary Numbers.
This article describes an incredibly awkward way of replacing flag enums in C# with a class that allows you to define values as binary numbers instead of decimal or hexadecimal.
The code itself is totally worthless, but it demonstrates some concepts that occasionally do come up in real life. Like my previous articles submitted, there's nothing really new here, but just something to think about. |
Tags: programming tech
Comments:
Add Comment
Saturday, November 21, 2009 12:26:41
Rate this entry:
Average Rating: 3.0
(1 vote)
For the last few months, I've been using ReSharper 4.5 for Visual Studio 2008. Prior to that, I was using version 3 for Visual Studio 2005. Version 4.5 introduces some new features, and improved performance over 3.0. Below are my reactions to the new version, and ReSharper in general - many of these were probably new in 4.0, but since I just from 3.0 to 4.5 directly, I'm not going to try to figure out what was in 4.0 and what's only in 4.5:
ReSharper ReSharper is a plug-in to Visual Studio that provides code analysis, cleanup, refactoring, templates, and IDE helpers in order to provide a better overall coding experience. It's an excellent addition to Visual Studio, and one that I have found to be extremely useful in day-to-day development. Alternatives such as CodeRush exist, but I haven't had any experience with them, so I can't really comment on how well ReSharper compares to them.
New in 4.5 I believe ReSharper 3.0 was limited to C# 2.0, so the new language features in C# 3.0 and 3.5 are all new in ReSharper 4. C# 3.0 and 3.5 introduced quite a few new coding techniques, designed to improve developer productivity and make code cleaner and more powerful, all while still using the 2.0 CLR. ReSharper helps you to take advantage of many of these new features. This is very nice when you have a 2.0 application and upgrade to 3.5. There are a lot of new features, but some of the ones I find most useful are:
Lambda expressions: ReSharper can replace old style anonymous methods with lambda expressions, so code like: myList.Find(delegate(Foo foo) { return (foo.Id < 10); }) can be replaced by: myList.Find(foo => foo < 10) ReSharper suggests this change for you, and automatically refactors it if you accept the suggestion. Of course, like all suggestions/warnings, you can disable this if you like the old-fashioned style.
Auto-Properties Auto-Properties are one of the best things to come out of C# 3.0. They allow standard properties to be be defined without defining the underlying fields that hold the data. This makes coding easier, debugging faster, and makes it just nicer to look at. ReSharper can automatically detect old-fashioned properties and fields that can be converted to auto-properties, and make the change for you, turning: private int _id; public int Id { get { return _id; } set { _id = value; } } into: public int Id { get; set; } It also can find scenarios where you can convert, but it would change the meaning. It will do this for you if you ask, but it won't recommend it, so you don't accidentally change the meaning of your code. Scenarios like: private readonly int _id; public int Id { get { return _id; } } can be modified to an auto-property with a private setter, but it would slightly change the meaning.
Object Initializers C# introduced a feature called object initializers (also collection initializers), that allows you to initialize an object and set public property values, all in the same statement, borrowing some of the concepts from VB's With statement. This helps in two ways, first by keeping such initializations clear to avoid confusion in reading and writing, and second by allowing you to use a new one-time-use object as a parameter without declaring it as a separate variable and set the values one at a time. ReSharper can recognize when you have a new variable immediately followed by assignments to public properties, and replace the code with an object initializer (same for collections, but I don't see that as often in code): Foo foo = new Foo(); foo.Id = 1; foo.Name = "John Doe"; can be automatically converted to: Foo foo = new Foo { Id = 1, Name = "John Doe" };
Naming Conventions Other than the new language features, ReSharper also now can analyze your variable naming convention, and warn you when you've named variables inconsistently. For example, my convention is to name fields with a leading underscore and lowerCamelCase; properties, methods, events, types, and enum values as UpperCamelCase; local variables and parameters as lowerCamelCase; and constants and static readonly fields as UPPER_CASE. ReSharper lets you choose for each of these, defining a prefix, suffix, and casing style; it also allows for multiple possible naming types. So you can have methods as UpperCamelCase, but also define event handlers for GUIs as UpperCamelCase_Click or btnUpperCamelCase_Click, or however your event handlers look based on your conventions.
Solution-wide Analysis ReSharper now can watch your entire solution looking for code errors in real time. So if you modify a class in one assembly that affects another assembly, ReSharper will tell you immediately, instead of having to wait until the next time you build your solution to find out that you screwed something up.
Performance This is one area that ReSharper 4.5 is supposed to be a significant improvement over previous versions. Version 3.0 slowed down my system quite a bit, causing it to lock up for as much as 30 seconds fairly often, and ate up a ton of memory. My primary development machine wasn't really all that powerful, so I blame my hardware as much as ReSharper itself. With 4.5, I've noticed some improvement, but I think my hardware is still holding me back considerably. Sometimes it takes 15-20 seconds just to open an .aspx file, which can be frustrating. But once everything's loaded and in memory, performance is generally fine. Memory consumption is still quite high, especially with the solution-wide analysis running - my 25-project solution fully loaded can take 700-800MB of RAM, even with no pages currently open. While this may not be much in a powerful 64-bit machine with a lot of memory and new processor, the 4-year-old machine I'm using with just 2GB RAM doesn't like this too much. I'd expect ReSharper to perform well in a newer machine.
Conclusion There are also a ton of small features that ReSharper provides, such as showing you your unused variables, using statements, and classes, providing code templates, reformatting your whitespace, and rearranging things like 'if' statements into ? or ?? statements, that just make ReSharper nice to have. There are some features such as integration with NUnit that can make writing test fixtures easier and faster. Many of the abilities of ReSharper are available elsewhere - Visual Studio 2008 added several things from 2005, and from what I've read, VS 2010 will provide a big jump as well (I haven't tried the beta yet, so I can't speak for them personally). FxCop provides many of the same code-analysis features, but it's an external program that doesn't work directly with the code the way ReSharper does.
For such a reasonable price, my opinion is that any development shop should give their developers a ReSharper license. It will keep them happy because they can code more productively and write better code, and will keep the development lead happy by making it easier to follow coding standards and conventions. And keeping developers and their supervisors happy is by far the most important thing for a company to do (from my point of view at least). |
Tags: review microsoft programming tech
Comments:
Add Comment
Saturday, November 07, 2009 20:43:00
Rate this entry:
Average Rating: 0.0
(0 votes)
Today was the newest Desert Code Camp here in Phoenix. This was the second time I've attended - the last camp was back in June, and was a lot of fun. This time around was also a big success. I attended nine sessions, and my reactions are below.
More Advanced Debugging with Visual Studio This session, led by Michael Collins, introduced some Visual Studio debugging techniques that may aid in debugging applications, both in development and production. The techniques I was most interested in were DebuggerDisplayAttribute and DebuggerVisualizationAttribute - these two attributes allow you to more easily visualize objects in the debugger windows.
Objective-C for Java and .NET Developers Objective C has been around for a long time, but I've never taken the time to learn anything about it. All I knew was that it was the language typically used for Macintosh and iPhone applications. This session, also led by Michael Collins, obviously couldn't teach a language in just an hour, but it did introduce some of the basics about Objective C and its syntax and basic use. Looks like a reasonable language that wouldn't be too difficult to learn, but I was suprised at how much it didn't look like C (or C++ or C#). I doubt I'll do any Objective C programming myself anytime in the near future, but I think it was worthwhile to see it in action, even if it was just for an hour.
CSS3: Behind the Website At the last code camp, I attended Saul Mora's session, subtitled "CSS Sucks", where he discussed a lot of interesting things about CSS. Today was like a continuation, called "CSS Sucks Less", where Saul introduced some new parts of CSS 3 that are currently in the works, but not yet fully implemented in all browsers. The most exciting features I saw were the ability to render objects in 3-D and animate them, using only CSS and little if any javascript. Combined with HTML5, these new design techniques may soon take the spotlight from Adobe Flash and Microsoft Silverlight, two web technologies I'd love to see die.
Creating Your First Proof of Concept in Expression Sketch Flow Visual design has always been my biggest weakness. I'm not an artist by any stretch of the imagination, and I don't think that will ever change. However, there wasn't anything else in this time slot that interested me, so I figured I'd check it out. Joel Neubeck ran this session, and it was very interesting. It was a short session (30 minutes), so there wasn't a lot he could show, but he did make it through a demo of the Sketch Flow concept, showing how you can quickly put together a "sketch" of your application GUI, and give it enough functionality for a quick demo or proof of concept, while being robust enough to be an actual start to the real project. I doubt I'll ever use Expression or similar products, but I'm glad I got the chance to check out the demo.
Javascript: The Untold Story Saul Mora also led this session, which focused on some of the intermediate topics of javascript, such as prototypes and closure. It was interesting to see other developers' opinions and questions on this language.
Beginning iPhone Development This was a fast-paced demonstration of how to build an iPhone application from scratch, using Xcode with Objective C. The techniques are significantly different from what I'm used to with Visual Studio - it seems more complex than necessary, but since iPhone apps are so incredibly popular these days, it must not really be that bad once you really get into it.
Learning Web Security with Web Goat WebGoat was brand new to me - I've never spent much time on web security, other than ensuring my applications are designed properly to protect against SQL injection, XSS attacks, etc. As the speaker, Andrew Wilson, demonstrated, WebGoat is a great tool for learning about all kinds of potential vulnerabilities inherent in web applications. I'd be interested in learning more about this, as well as related applications like WebScarab.
Intro to jQuery This was the topic I was most looking forward to - I've been wanting to learn about jQuery for a long time, but just never got around to it. This session was led by Remi, who demonstrated how simple it is to incorporate into a web application and get started. It's an exciting technology, providing the ability to manipulate the DOM, modify styles, and fire off AJAX, much simpler than using straight-up javascript. I'm looking forward to continuing learning about it and incorporating it into my own projects.
Intro to Azure The last session of the day was about cloud computing with Windows Azure, Microsoft's version of cloud computing. Andrew Wilson also presented this session, and provided a good explanation of the concepts, advantages, and disadvantages of this new technology. Azure will probably play a huge role in technology over the next several years, so this is something I'm going to have to keep an eye on.
Of the nine sessions, the two that I got the most out of were Saul Mora's CSS3 presentation and Remi's jQuery sesssion. All of the sessions were interesting and educational, but I think these two technologies will most directly affect me in the short-term.
I'd like to thank Joseph Guadagno for putting this together, as well as all of the presenters and others involved in making this a success. I had a great time and look forward to the next one. |
Tags: programming phoenix social tech
Comments:
Add Comment
Saturday, October 24, 2009 11:45:25
Rate this entry:
Average Rating: 0.0
(0 votes)
Now that Windows 7 is out there, you may be asking yourself whether it's a good idea to go out and buy it. Microsoft's been advertising it like crazy, and every tech blog and publication is telling you how great it is. Very few people have anything bad to say about it. Even Apple's only argument so far is "Vista sucked, so Windows 7 must suck too". With Windows 7 costing $119 for just the home upgrade from Vista, or $319 for the good full version, it's important to know whether it's worth it to buy it directly, or just buy a machine that comes pre-loaded. Fortunately, I attended the kickoff event here in Phoenix, and received my version for free, so I don't have to make this decision.
Let's look at this from various points of view - you probably fall into one of these categories:
Computer illiterate You know nothing about computers, except how to turn them on, fire up "The Internet" (a web browser, probably IE), send/receive emails, fiddle with a Word Processor, and play solitaire (or Minesweeper if you're slightly more advanced). If this describes you, you most likely should never buy or install an operating system at all. You probably buy a computer that has an OS on it out of the box, and you'll use that OS until the computer breaks down or becomes obsolete and is replaced by another. Whatever OS comes with the computer is just fine for you - if it's Windows XP, Vista, or Windows 7, or if it's any Mac OS, it doesn't really matter. You can do everything you need to do.
You should not buy Windows 7.
Competent, but not a techie You know what you're doing - you know the difference between "The Internet" and a web browser. You know that "the big blue e" is not "The Internet", and maybe even have installed an alternative browser to use. You defrag your hard disk, and use a virus scanner that you set up yourself. You actually understand that Macs cost a lot more than PCs, and don't really do anything different, so aren't worth the extra money. You could install your own OS, but you're content just using the out-of-the-box OS. You're probably better off just using what you have - after all, your machine does everything you need of it.
You should not buy Windows 7.
Rich, but clueless You have more money than most small countries. You're filthy stinking rich, and you'll buy any damn thing you see on TV or in an electronics store, just so you've got the latest and greatest. You bought a video phone when they first came out, and are the only person you know who owns one. You paid $2000 for a Blu-Ray player when they were brand new, instead of waiting a few months and paying 1/10th of that. You have a color monitor in your refrigerator that tells you what's inside without having to open the door. You have a T1 line in your house. You own laptops, netbooks, smart phones, home servers, media centers, and standard desktops, all of them top of the line, and the most you do on any of them is play internet checkers. But by golly, it's really fast. You have no need to ever install an OS, and you buy machines so often that you'll have an out-of-the-box Windows 7 before you even realize it.
You should not buy Windows 7, but you probably will anyway.
Serious gamer You play computer games 18 hours a day. You're an expert at World of Warcraft, and spend your days boosting up your magic levels or super powers or whatever you guys do. Your diet consists mostly of Hot Pockets and Red Bull. You're afraid of natural light, so you have blackout curtains on your windows. Your water bill is very low, since you don't waste water on unnecessary things like showers. Windows 7 will probably work fine with your games, but that would mean you'd have to take an hour or two away from playing your games to install it. Plus, it means you'd have to dip into your Mountain Dew budget in order to buy it.
You should not buy Windows 7.
Large non-tech business You are responsible for maintaining the computers for a large non-technical company. Your core business is not software engineering or anything else that requires top of the line software. Your employees come to the office every day, do their job, and then go home. You have no need for super-special security measures, high level encryption, or seamless remote access. You're probably better off leaving things as-is for now, then adding new machines with a Windows 7 image as you regularly cycle out your employees' machines.
You should eventually buy Windows 7, but not all at once.
Large technical business You are responsible for maintaining the computers for a large technical company, or one that has significant technical needs. You want to take advantage of some of the new features, like more advanced software installation and deployment policies, advanced virtualization, on-the-go encryption, and built-in remote access. You may develop software that will be distributed to end users or other businesses, and you need to ensure that you have significant testing capabilities on all operating systems.
You should absolutely buy Windows 7. Learn everything about it, and deploy it as soon as possible.
Software developer You work for a software development team, building web or desktop applications that solve business needs. You're not cutting edge, but rather working with stable technologies that you've known well for years. If you want to stay marketable by keeping up with the latest trends, you should probably have some experience with development techniques on Windows 7, but you probably won't actually accomplish anything useful.
You should probably buy Windows 7, but only if you don't already have it at work, and don't have an MSDN subscription, and only if your job is secure enough that you feel comfortable spending a couple hundred dollars on something you really don't need.
Techie You build your own PCs at home, buying parts one at a time from Fry's Electronics, or online at sites like Tiger Direct or Newegg. You set up your own secure home network, run automated backups and maintenance jobs, and are the resident tech support for your family and friends. Since you never buy machines out of the box (except maybe laptops), you do all of your own operating system installation and setup.
You should buy Windows 7, as part of the next machine you build.
FSF member You are a member of the Free Software Foundation. Richard Stallman is your personal hero. You sing along with the Free Software Song (below, or here). You run some flavor of GNU/Linux (making sure that you say "GNU" whenever you say Linux). You hate Microsoft and all it stands for. You despise the free enterprise market (which is ironic, because your entire foundation is built on "freedom".
Let me think...You probably won't be buying Windows 7.
Hacker You're an expert on all things technological. You might be a hacker in the traditional sense, doing illegal things, breaking into where you don't belong, pirating software, attacking networks, etc. In that case, you probably use Backtrack, Openwall, or another specialty Linux distribution. If you're the "good" type of hacker, where you just enjoy learning everything about hardware and software, then you probably use another more mainstream Linux distribution, like Fedora, openSUSE, or Debian, as your primary OS. In either case, as a technology prima donna, you must also be an expert in hacking Windows (either in a good way, or a highly illegal and destructive way).
You should buy Windows 7 (or steal the source code, compile it yourself, and break the activation code - not that I condone that kind of behavior).
Conclusion Windows 7 is expensive. 200-300 damn dollars for an operating system that probably doesn't do anything you need and can't already do. GNU/Linux or similar free operating systems (like FreeBSD or OpenSolaris) are out there. You probably already have Windows XP or Vista. More than likely, you have absolutely no need to pay that kind of money for Windows 7.
With that said, Windows 7 is clearly the best operating system Microsoft has come up with, and I absolutely believe that most people should have it - but unless you have a specific need for the new features, then my opinion is that it would be a waste of money to spend that much right now simply on an operating system. Just wait until your machine takes its last breath and gets replaced, or until you can find a smokin' deal, or until you suddenly have more money than brains. |
Tags: microsoft operatingsystem tech
Comments:
Add Comment
Thursday, October 22, 2009 22:44:20
Rate this entry:
Average Rating: 0.0
(0 votes)
With the release of Windows 7 to the public, you knew Apple was going to have some fun with it. There's a new "Mac vs. PC" commercial that was just released, poking fun at Microsoft's history of imperfect operating systems:
I've been using Windows 7 as my primary operating system at home for several weeks, after attending the kickoff event and receiving an early copy of Windows 7 Ultimate. Prior to that, I beta-tested Windows, and participated in the Release Candidate program, so I've been using Windows 7 off and on since February, and I have to say that I'm incredibly impressed. Everything runs smoothly, applications are more powerful and useful, and tools are available for improving productivity even more in the coming years, as people start to take advantage of the features Windows now provides.
I'm not going to go into any details of what's new and improved with Windows 7 - you can find those anywhere. I just wanted to give my opinion that it looks like Microsoft finally got it right, out of the box - in other words, 7th time's a charm.
Apple's commercial may prove to be wrong, but still, it's pretty damn funny. |
Tags: funny microsoft operatingsystem tech
Comments:
Add Comment
Saturday, October 10, 2009 08:56:44
Rate this entry:
Average Rating: 0.0
(0 votes)
A few months ago, I received a notice from my wireless carrier, Verizon Wireless, that they were shutting down their SMTP Mail Relay service. The shutdown occurred on August 29th.
If you're unfamiliar with SMTP, basically it's the standard that is used to send email through the internet, and requires a server that allows you to send your message (I won't get into the details, mostly because I don't know all the technical details of how it works). Normally, your ISP provides an SMTP server that you can send messages through, even if you are not using that ISP as your sending address - for example, the email address I use is joe@jtenos.com, but I send all my outgoing mail through smtp.west.cox.net when I'm at home.
Cox, my ISP, which is one of the largest providers in the country and likely the most popular ISP in the Phoenix area, does not allow you to use their SMTP server unless you are on their network, which means I can use it when I'm at home, but not from another network, such as my cellular network. This means that when I'm using my cellular phone for email, I cannot send messages using the mail client on the phone, because I can't use Verizon anymore, and I don't have another alternative.
Of course, there are alternatives, and Verizon is only too happy to tell you what you should be doing:
"Verizon Wireless considered this service, along with the needs of our customers, and decided that there are better alternatives for our customers than the SMTP Mail Relay Service."
"If your email provider does not permit you to use its SMTP mail server, other solutions include browser-based email access; check with your email provider for availability."
So I'm paying a premium for internet access on my cellular phone, signed a two year contract with Verizon with the understanding that I would actually have internet access, and with only a couple months notice, Verizon takes away one of the fundamental parts of the internet, the ability to send email, and tells me: Oh by the way, you should be using WebMail - you can receive mail using the mail client on the phone, but you can't reply to it or forward it.
Obviously Verizon is looking to cut costs by removing one of their services, saving on their hardware and overhead costs. In the long term, I'd have no problem with this if they did it the right way - if they phased out their SMTP service over a period of a couple years, and either started to charge a monthly fee or stopped offering the service on new customers and grandfathered out their existing customers at the end of their contract, it would be fine - customers like me simply would not buy their service and go elsewhere. But the fact that they stole a basic service from their existing customer base with a very short notice is absolutely unacceptable to me.
This is in my opinion the definition of a breach of contract. I signed up with Verizon for two years with the understanding that I could send and receive emails on my phone - now I can't. It would be like if they suddenly decided that you can't have call waiting or voicemail - it's a fundamental service that they had no right to take. I talked to Verizon's customer service, and received nothing but ignorance and arrogance - they pretended to know nothing about the problem, saying that it should still work, or that I can use Cox, or that I should use WebMail. I'm at the point where I'm giving up, and will be forcing them to end my contract early, with no penalty, and switching to AT&T or Sprint, where I would not be ripped off.
The absolute worst part of this change, in my opinion, is the "we know what's best for you" attitude taken by Verizon, as demonstrated in their letter, where they explain why they made this change:
"As part of our commitment to ensure that our customers are provided with the best possible user experience"
In other words, we're taking away a service, not reducing our price, and you're going to like it. I'm not buying their garbage, and I hope more people follow in my footsteps and leave.
Some links regarding this discussion:
Official page describing the shutdown
Discussion on the Verizon forum |
Tags: rant tech mobile misc
Comments:
Add Comment
Thursday, September 03, 2009 19:27:57
Rate this entry:
Average Rating: 1.0
(1 vote)
The latest version of the Opera web broswer, version 10, was recently released. While this broswer enjoys only a tiny share of the non-mobile market, it is definitely noteworthy in any discussion of web browsers. Opera has always been an early adopter, if not a pioneer themselves, of new browser features and functions.
Version 10 introduces several new and improved features, some of which are discussed below:
Opera Turbo Probably the most talked about new feature is Opera Turbo, a feature designed to improve download speeds in slow internet connections. The concept is nothing new - it's a proxy server that compresses large web content before sending it to the browser. But being streamlined inside the browser, and backed by a large company like Opera, makes it more easily accessible to the general public (you can turn it on simply by going to Tools->Quick Preferences->Enable Opera Turbo).

HTML compression is nothing new - GZip and Deflate are designed to compress data from the web server, and decompress on the client, in order to speed transmission of HTML. However, web server compression isn't turned on everywhere, and Turbo does more than just compress text. Images are permanently compressed (with loss of quality) and Flash is initially disabled, so there is literally less stuff for your browser to process, which can improve speed more than simple compression alone.
There are concerns about privacy any time you talk about proxy servers. Basically, a normal web connection means your browser requests data from a web server, and the web server responds directly to you. With Turbo, your traffic is routed through Opera's servers, so all of your requests and responses are visible to them. While they claim that your privacy is important (and there's no reason to doubt that), some people may not like the fact that a third party such as Opera has access to their history - in any case, users should at least be aware of what's going on. In addition, all secure connections (banks, credit cards, and any legitimate commerce sites) will not go through the Turbo servers, for a couple of reasons: first, it gives you piece of mind knowing that your secure information is not going through any unnecessary routing; and second, these connections are truly secure and made up of encrypted data, so compression wouldn't be as effective anyway, since there is no text or images like on normal connections.
Resizable Tab Section One of the cool new features of Opera is the resizable tab section. You can expand the tab section vertically at the top of the screen, and you'll see not only the titles, but a thumbnail preview of the tab as well. Thumbnail previews are really becoming standard in operating systems lately - Windows Vista, improved in Windows 7, and the latest Linux distros like Ubuntu 9.04 have recently adopted this type of preview for their applications, and this type of concept is quickly becoming standard in the browser world as well.

Browser Speed Opera 10 claims to be 40% faster than its predecessor. This is something that all browsers have been focusing quite a bit on lately. Everyone is fighting to be the fastest, and while Firefox has greatly improved their speed lately, Opera and Google Chrome still appear to be the top two when it comes to rendering speed - there is no single reliable browser speed test, so any discussion of speed is not conclusive.
Conclusion When it comes to browser customizability with extensions and add-ons, Firefox is still by far the best of all browsers. Internet Exploder has come a long way with version 8, and Chrome is still the fastest and lightest as an application, although available for Windows and Mac only. Safari is a quality browser, but seems to be a little bloated, at least in the Windows version (I haven't actually used a Mac since junior high). In the browser industry, Opera combines good speed and performance with quality built-in features and a decent selection of downloadable widgets.
Opera has been my number 2 browser at home (with Ubuntu) for awhile, and version 10 may be good enough to steal the number 2 spot from Chrome on my Windows machines. Opera owns a significant portion of the mobile browser market, and if they continue to improve on their fine product, they may start to see a little more usage in the full browser market.
http://www.opera.com/browser/features/ |
Tags: browser tech
Comments:
Add Comment
Monday, July 20, 2009 07:12:36
Rate this entry:
Average Rating: 0.0
(0 votes)
I recently submitted my fourth article to The Code Project. It's a pretty straightforward piece of code - nothing new or exciting, but it's a utility that I found useful recently.
This application will accept two binary files as input, and simply determine if they are identical - something any file comparer can do, but this runs fast, with hardly any CPU or memory footprint.
http://www.codeproject.com/KB/cs/JTBinCompare.aspx |
Tags: programming tech
Comments:
Add Comment
Saturday, July 11, 2009 20:45:09
Rate this entry:
Average Rating: 1.0
(1 vote)
Below is the continuation of my series on future predictions, this time dealing with technology predictions for the year 2050. I'll revisit some of the topics on my entry for 2020 - obviously there are plenty of technology topics to cover, so I'm just picking a few specific areas.
Internet By the year 2050, the Internet will look significantly different than it does today. First off, connectivity will be wireless for nearly all customers - all major metropolitan areas in the United States and other developed countries will have wi-fi access for everybody across the city. Connection to the wi-fi network will always be fully encrypted from start to finish - each customer will have their own public and private key, combined with a biometric scanner, that corresponds to their user account. So a user's portable/mobile device can be used anywhere, accessing the same network, with the same security, and the same connectivity, no matter where they are.
Government agencies will work together to regulate content, to attempt to ensure safety and security across the web. Sites that are deemed offensive or questionable will be inaccessible to everyday users without some kind of standardized registration and permission, in order to deny access to minors and those who don't want to see it. In addition, sites offering illegal content can be shut down by regulatory agencies. Unfortunately, this also means that politicians will be able to block content to the public, which will lead to extreme versions of the kinds of censorship you see in China today, except on a worldwide scale.
The web will still consist of pages within applications within websites, running on centralized servers, still built with a structured markup language based on today's HTML. Web applications will still be built with a variety of server languages - ASP.NET, PHP, JSP, and other web technologies of today will no longer be around, but other languages will take their places. Client javascript will be gone, replaced with a type-safe language that's designed for the sole purpose of manipulating the markup. Stylesheets will exist in some form, but users will be able to easily define their own visual experience in a standardized manner. Applications will be readily available in both standard video and mini-video for small portable devices.
The "cloud" will be extremely useful for storing data - software will actually work to allow users to access their information securely from anywhere. Local storage will still be commonplace, but the cloud will be used by most people and businesses to backup local data regularly.
Simple email will still be around, with text/picture/video messages still available without any effort. The technology will be replaced by something significantly more secure. Since all Internet communication will be encrypted, email will no longer be nonsecure. Also, the technology will be designed so that the "From" is actually accurate. Today, you can send a message and set the sender to be whatever you want it to, very easily, meaning spammers can use stolen or fake identities incredibly easy. In the future, if a message says it's from someone, then you can be confident that it actually is. This will lead to systems that allow approved senders only to send messages - you can accept messages only from the people and companies you choose, and the rest gets junked.
Automobiles Still no flying cars in 2050, unfortunately. Instead, we'll have clean-burning vehicles designed for safety and security. Vehicles will be protected by fingerprint scanners in addition to physical keys, both for the doors and for the ignition. Computers will full encryption systems will control the electric systems, which will prevent ordinary criminals from stealing cars by crossing wires or other physical techniques. Fuel will be a combination of biological and clean burning fuel, such as hydrogen or nuclear energy. Refueling stations will still be common, but people will be able to store their own repository at their homes by buying tanks of fuel in bulk.
Cars will come standard with Internet connections. Full navigation systems will be standard in all vehicles. Voice recognition still won't be perfect, but it will be good enough so that the driver can speak the name or address of where they want to go, and the GPS system will do its thing, connecting to Internet directories as needed, to obtain traffic and weather updates, and to keep the index up to date.
Television Television will be fully incorporated into the Internet by 2050. The wireless signal that comes in will allow users to stream standard "free" TV into their TV sets, in addition to various levels of premium programming, similar to levels of cable/satellite today. Programs and movies will also be available for streaming individually at a per-use fee, similar to On-Demand and pay-per-view, for people who know exactly what they want to watch. Advertising will occur throughout the program, instead of just at breaks within the program - for example, sidebars and in-show sponsors will be used to replace many of the standard 30-second spots, to ensure that viewers actually see the advertising that's paying for the show. Programs will be licensed to specific hardware, so people will be unable to easily record and pirate shows. Since all television is obtained through trackable sources, the Nielsen ratings will be replaced by a system that actually works.
Mobile Phones Mobile devices will continue to replace home and business phones, until that's all that's left. Since wi-fi will be available practically everywhere, phones will be able to connect via the same Internet connection as everyone else, and will be able to make secure calls and other communication. Cellular networks, or a similar technology, will still be available in areas where wi-fi is not, but with significantly inferior performance. Video phones will finally be used, as an option per call - if turned on, then the device will be use a video screen and camera to transmit images - audio can be transmitted via speakerphone or with an earpiece for more privacy.
Obviously, mobile devices will have significant computing power - but with data available in the cloud, and the majority of everyday applications available via the web, phones will not be used as full computers, except in plates where a full computer is not available - which won't be many places.
Conclusion The information age has focused around the Internet - for 20 years we've been learning about the different things that it can do, and we've seen examples and proofs of concept on these items. In 40 years, all of these concepts will become reality - a single network will be behind nearly all forms of communication, entertainment, and finance, along with a standard and secure way of connecting to this network. Still no transporter, food in pill form, time machines, warp speed, or any other sci-fi technology like that, but the Internet will be mature, stable, and secure. |
Tags: tech predictions
Comments:
Add Comment
Monday, July 06, 2009 19:50:13
Rate this entry:
Average Rating: 5.0
(1 vote)
I've decided to put together a series of posts on my predictions for the future, mostly just for fun, but it will be interesting to see how much of this comes true. Over the next several months, you can expect to see a dozen or so posts dedicated to what the world will be like in the year 2020, 2050, and 2100 (assuming the world doesn't end in 2012).
I'll start with technology predictions in the year 2020. I'm a software engineer by trade, so I am in touch with the technology industry in general. However, I am by no means an expert in all things computer-related. Since technology will obviously play a major role in many aspects of life, I'll try to limit this post to specific technologies, instead of how they will play a role in our daily lives.
Internet When talking about current technology, the Internet is obviously at the top of the list. Email and the world wide web play an incredible role in our lives, something that we couldn't imagine living without - and other network technologies, like FTP, SSH, P2P, and online games are invaluable tools for business and entertainment needs.
My prediction is that this trend will continue to grow over the next 10+ years, with no major change in architecture. HTML will continue to be the markup language behind the web, with javascript still leading the client-side web. HTML will evolve, much like it is today with HTML 5, including more powerful and standardized tools for multimedia, games, and social connectivity, but the general design will remain the same.
Cable companies will continue to dominate the personal high-speed market, and they will find a way to make one more major leap in speed, to approach 50 Mbps for the home user, which will be enough to satisfy the majority of the market, the same way 12 Mbps is good enough for people today. New paradigms will be discovered, but none will be practical enough (aka cheap enough) for the average consumer.
Spam will continue to be a problem, with junk email continuing to represent over 90 percent of overall email traffic. Email clients will continue to improve spam blockers and filters, so the average user will not have to deal with the problem. Since people won't notice a problem, there will be no real motivation to deal with the spammers, and the dirtbags will continue writing their malware to spread their garbage, finding new ways to get at least some of their messages past spam filters. This will be dealt with eventually, but not yet by 2020.
Automobiles With so many people concerned about fuel efficiency due to potential environmental (real or imagined, up to you to decide) and political reasons, I believe the first major step toward a cleaner car will be taken by 2020. Assuming the Cash for Clunkers nonsense fails, which it will, the current government will want to try again, this time with something that is actually realistic. They will take steps to ensure that American car manufacturers have the appropriate incentives for finding cheaper ways to build alternative fuel vehicles, and that the industries that would produce the fuel can do it at a reasonable price, one that would allow them similar profits as gasoline. Ingenuity has never been a problem in this country, so as long as the profits are there, people will find a way to make it happen. Once manufacturers and fuel companies can make the same money selling cleaner cars than they could selling gas guzzlers, there will be no reason not to. We obviously won't be off gas by 2020, but I predict that we will see the light at the end of the tunnel.
Television TV has evolved quite a bit lately, and in the next 10+ years, I predict this will continue to grow. Flat/wide screen TV's will be the standard, and traditional boxes will be difficult if even possible to find. On-Demand will grow exponentially, as cable companies discover new ways to increase their bandwidth. Instead of a few dozen possible movies, cable companies will offer hundreds, even thousands of movies and shows available at the push of a button. This technology will not quite be integrated with the Internet, but it will be close.
Regarding the Internet, sites like Hulu and the networks' own sites already provide many of their shows online. This trend will continue to grow, and more and more shows will be offered over the web - not replacing On-Demand, but rather supplementing it. More people will be hooking up their TVs to either an Internet connection or as video output from their laptops, leaving the TV set as the primary mode of watching shows and movies.
Overall, today's television experience will not be significantly different from 2020 - there will just be more options.
Cell phones 20 years ago, cellular phones were as big and heavy as bricks, and were ridiculously expensive. Today, you'll find phones the size of credit cards with cheap plans. Texting has become as popular as talking, and QWERTY keyboards are pretty common. Web browsers are available, but the user experience is simply not as good as real life. My prediction is that cell phones will continue on their course of replacing home phones, and become more web-friendly.
Right now, the iPhone probably has the best web interface out there - it's the closest thing I've seen to a real web browser on a mobile device. This type of responsiveness and user experience will start to appear on other brands, and will soon become the norm. Apple will continue to lead innovation, and will produce a new method for viewing the web using their phone - a video projector, so the iPhone can project its video onto a wall where it can be more easily viewed and shared. A mouse or other pointing device will be usable via bluetooth to control the browser, to make it more like a true web experience. You won't be able to do anything really cool like touching the projection itself or projecting a hologram over thin air, but this will be a major jump in the usability factor.
Conclusion Technology has been moving in leaps and bounds over the past 20 years - new ways of thinking have evolved, causing incredible breakthroughs in all industries. I think we're due for a time of improvement, but not paradigm shifts, over the next 10+ years. We'll continue to get faster, better, and cheaper, but the technologies themselves won't change too much by 2020. We won't have the flying car, the transporter, the holodeck, good speech recognition, jetpacks, hover boards, or anything like that, but we will continue to experience worldwide communication, faster access to information, and so many of the other amazing things that have developed in the information age. |
Tags: tech predictions
Comments:
Add Comment
Tuesday, June 30, 2009 22:07:04
Rate this entry:
Average Rating: 0.0
(0 votes)
Today was the official release date for Firefox 3.5, the most advanced browser to enter the market. The Mozilla project is by far the most important community in the web today - their goal is to ensure open internet standards, a necessary step in providing the best experience for all parties. They've taken the next step in that goal today.
After only about 12 hours, there have already been over 2.8 million downloads of Firefox 3.5, nearly 1 million in the U.S. alone, and is currently being downloaded at a rate of about 40 per second. (Stats available at http://downloadstats.mozilla.com/). That's some amazing work - it proves how much people care about Firefox, and how excited we all are at the idea of a new version of the product.
Below are some highlights of the new version:
Faster Javascript: Speed has been a major concern for all browsers lately. One of Chrome's big selling points has been its speed - same for Opera. The web is becoming more and more javascript and AJAX intensive, and javascript speed is a big factor in the overall user experience. Firefox 3.5 is more than twice as fast as Firefox 3, and many times faster than Firefox 2. Javascript speed is dependant on what you're doing, so there is no single "fastest" browser - but Firefox is absolutely back in the same ballpark as Chrome and Opera, and surprisingly Internet Exploder 8, which is putting up a pretty good fight in the recent browser wars.
Private Browsing: Safari, Chrome, and IE8 all already have this feature, allowing users to browse with zero trace left on the machine once their browsing session ends, and Firefox now has this option available as well. This is targeted toward people using shared computers, who don't want any cookies, temporary cache files, or history of their session left on the machine for unscrupulous people to find. It's also for people who want to "want to shop online for gifts for their spouse without them finding out", and let's leave it at that.
Enhanced Tabs: Tab organization has improved significantly. Tabs can be dragged between Firefox sessions, in case you want two windows open and want to move one tab between windows.
HTML 5: HTML version 5 is an exciting new standard that is still in progress. However, Firefox has implemented several new features that will be part of that standard. For example, new <audio>, <video>, and <canvas> tags are now available. Video tags will replace the majority of Flash videos out there, allowing browsers to play multimedia (things like YouTube, Google Video, or Today's Big Thing) without using the Adobe Flash Player. This will allow standardized video formats, along with a standardized user experience. The canvas tag allows for scriptable rendering of images - so far, it seems to be limited to simple drawing, like a simple paint program. However, I'm sure there will be interesting uses for this before too long.
For a more detailed explanation of some of these new or improved features, visit http://www.mozilla.com/en-US/firefox/features/. Although a lot of the new stuff is just catching up to Chrome, Firefox's stability, incredible user community, platform independence, and ability to adapt itself through thousands of addons make it the best browser out there right now. |
Tags: browser tech
Comments:
Add Comment
Tuesday, June 16, 2009 11:39:03
Rate this entry:
Average Rating: 0.0
(0 votes)
Last week, the makers of Opera, one of the top mobile browsers and a reasonably successful full-scale browser, promised a new technology that would change the web forever, without providing any additional details. This announcement caused all kinds of speculation, from enhanced cloud computing, to advanced syncing software, to personal web servers. It turns out that personal web servers is what it was.
Today, Opera announced the new feature, called Opera Unite. It promises an easy and safe way to share files, media, web sites, and notes, without a lot of technical knowledge that's typically required for such an undertaking. Of course, hosting a personal web server is not anything new, but it has never really been anything that the average person has been able to do. Opera's goal is to bring this technology to the everyday user.
There's plenty of support out there for easily sharing files with people. Social networking sites like Facebook let you easily share things like pictures and videos, with no technical knowledge required. Sites like Flickr are designed to let you share and organize photos, again with no technical knowledge. However, all of these force you to rely on other companies to host and store your data. If they are undergoing maintenance, or if by some chance get attacked and lose your data, then you're out of luck. Hosting your files locally gives you full control over your data. Store what you want, where you want, and you don't even have to upload them to a central server. You're not limited to file sizes, picture resolution, or anything other than the size of your hard drive and your outgoing bandwidth.
There are plenty of concerns with this technology. First and foremost is security. I haven't found any information on exactly how this will work, but I can only assume that this requires opening a port on your PC (and router) to the outside world, which exposes you just a little bit more to hackers and other low-life dirtbags out there. I'm sure Opera is doing everything they can to keep your system safe, but hackers get more and more creative every day.
EDIT: I found some more technical details on how the server connects to the world, and it turns out that you don't need to open ports. Users from the outside world connect to a central Opera server, and your home server also connects to that server, asking if anyone is making a request. So your home server just connects via normal outgoing channels to the server, instead of someone connecting directly to you. This has the effect of being safer, but also means that if the Opera servers are down, then you lose connectivity to your server, which was one of the benefits of having a home server in the first place.
One complaint that has already come up is the fact that this is not scalable, the way centralized servers are. You are limited to your network's upload speed, and your PC's performance. Multiple people connecting at the same time will experience pitiful download speeds, compared with the majority of the web. However, thinking about your target audience, I'm sure this is fine for most people. The people who use this won't have thousands of people connecting to their site - probably just a few, and probably not all at once. If you are planning on running a full-fledged business or multimedia center for the public, then this probably isn't for you.
This solution requires that the host keep their computer on and connected at all times, if they want their data available for download/update. This is an unreasonable requirement for users on laptops, and many others who don't want to leave their machines on 24 hours a day.
Data would be protected via passwords, but from what I've seen, there is no encryption of the requests and responses, meaning basic hacking techniques would succeed in stealing passwords, and therefore data. Obviously, sensitive materials should not be stored in any way where the application can see it.
Although Opera claims that they do not monitor people's files, they do have the power to block users who they have received complaints against - people sharing copyrighted materials, for example. This may be too much power for a software company to wield. This type of control currently exists only with your ISP, and that's really where it belongs.
I predict that Unite will be a good start to this self-hosting phenomenon. However, Opera has enjoyed only very limited success as a browser, and I don't see the majority of the community adopting this first attempt at a simple home web server. I'd expect to see other similar products arise from competitors, each with their own benefits, and a clear winner not determined for years to come. And until home servers are commonplace the way desktops/laptops are, and a new bandwidth paradigm is reached, I don't expect this to be widely used. |
Tags: browser tech
Comments:
Add Comment
Sunday, June 14, 2009 15:20:43
Rate this entry:
Average Rating: 0.0
(0 votes)
Yesterday I attended Desert Code Camp here in Phoenix. This was a full-day event, taking place at DeVry University.
This was a great event, targeting programmers from all environments and languages, in a "by the community, for the community" format. The speakers are real-life experts in their field, and are there to teach, demo, and provide insight into their particular technology. Classes ranged from the basics, like intro to OO, to specific sessions like the new FILESTREAM feature in SQL Server 2008. Technologies ranged from specifics like Microsoft.NET or Ruby, to general techniques like table-less CSS web design.
I attended seven sessions: On-Site Optimization, Tableless Layout with CSS, Aspect Oriented Programming in .NET, ASP.NET MVC 101, ASP.NET MVC Advanced, New Features of C# 4.0, and Optimization Patterns: Reducing Memory Footprint in .NET.
Of these sessions, I was especially interested in aspect oriented programming, led by Andrew Wilson, and ASP.NET MVC, led by Scott Williams. Aspect oriented programming has always been somewhat of a mystery for me - I've worked with attributes, and even built my own on occasion, but never really understood how some of the popular frameworks like PostSharp worked - this session helped me to understand what is actually going on behind the scenes with these attributes. ASP.NET MVC seems to be an up-and-coming technology that potentially has a bright future in the .NET world - it still seems a little strange to me, coming from a WebForms background, but I think I'll give it a shot - it could be fun. The two hours of live demos and Q&A beats out reading half a dozen tutorials online.
Code Camp is always free to the community, sponsored by outside companies - I really didn't see any advertising anywhere, so these companies apparently are anonymous to the community. DeVry of course was a big part of the success, providing their campus and several classrooms for the event. Lunch was free - there were probably close to 100 large pizzas from Domino's, and dozens of Subway sandwiches, and there were muffins and danishes for breakfast.
I don't know when the next camp is coming, but I will definitely be attending. I highly recommend it to anyone in the software development industry, whether you are interested in hearing about new technologies or techniques, or if you just want to meet up with your peers throughout the valley. |
Tags: programming phoenix social tech
Comments:
Add Comment
Thursday, June 04, 2009 10:45:56
Rate this entry:
Average Rating: 0.0
(0 votes)
Recently Microsoft released a new decision engine (a.k.a. search engine), known as Bing, which is supposed to be the next big competition to the superpower Google. The most recent so-called Google-killer, Cuil, which was hyped like crazy in the media and blogosphere, was an incredible failure in the market. Bing seems to be strong right out of the gate, and looks like it may succeed where others failed.
What makes Bing different from Google is the advanced decisioning engine, that aims to provide usable information rather than just links to external sites. For example, searching for a vehicle make and model (i.e. Ford Mustang) on Google provides an excellent result, first with the official Mustang page on fordvehicles.com, then the Wikipedia entry, news results, enthusiast sites, books, etc. The same search on Bing starts out with vehicle information, including MSRP, fuel economy, user ratings, and links to local listings for sales and service. Then comes the official Mustang page along with the other top search results, then sub-sections for specs, dealers, parts, recalls, videos, images, and additional information. All of this is of course easily available in Google by clicking one of the "related searches", but it's nice to see all of that one one screen.
Some other nice features of Bing are: - A search history on the search results page, so you can see or repeat what you've recently searched for (Google has this on a separate page). - Previews of each result by simply hovering over the preview button. - One-click conversions from normal web searches to images, videos, shopping, news, maps, etc. This is almost identical to Google - not very original, but it's so useful that I wouldn't want to use a search engine that didn't have it. - Search suggestions as you type - again, not original, but I'd expect it to be there on any search engine that competes with Google. - A unique and simple name. In order to be part of the vernacular, you need something that can be used as a noun or a verb, like Google (have you googled it?), something recognizable and fun (bada-bing!). Bing's predecessor, Live Search, just didn't have the creativity, and others like Cuil, Yahoo, and Ask.com really don't roll off the tongue the way Bing does. - Travel deals when searching for hotels, airfare, etc. - Enhanced video search, allowing multiple search options, and providing small previews of videos without loading the whole thing.
However, all the cool features in the world wouldn't mean anything if the search results were no good. Google has been the most popular because it gives better search results than anyone else - it constantly crawls the web with a ridiculous number of servers, doesn't rely on meta tags, and consistently gives exactly the results you're looking for, in a fast and simple interface. From what I've seen the past few days, Bing's search results are as good as Google's, and with the additional features, and promise of continued growth from Microsoft, the only other software company on Earth on Google's level, I'd say Bing is here to stay.
One particular query that hit home for me - Googling "joe enos" has consistently provided my site as its #1 search result. However, some time recently, I've dropped down to #2, with some joker in California getting the top pick with his business's local Yahoo overview. Bing has me at #1, where I should be.
But don't take my word for it - try it for yourself. If you're using Internet Exploder, select Live Search as your search provider, and it will automatically use Bing, or go here for instructions on using Bing directly. If you're using a real browser like Firefox, you can add Bing to your search providers with the following plug-in: https://addons.mozilla.org/en-US/firefox/addon/12205. Google Chrome also has the option for Live Search, but you can select Bing directly by following the instructions found here. Safari on a Mac requires something called Glims, and it doesn't look like you can set it at all on a PC. Opera users can right-click on the search box at bing.com and add a search provider from there. Or of course, anyone can search from http://www.bing.com/.
For articles and blog entries about Bing, just Bing it (or Google it), and you'll find hundreds of people talking about it - some good, some bad, some neutral. Here's a few to get you started:
- Bing Survives the Search Engine Achilles Heel: Programmers - Bing.com Traffic Analysis (a.k.a. People Hate Bing) - To Bing or not to Bing - First of the Bing Commercials - Bing vs Google Bandwidth Comparison - Discover Bing - Bing: A Visual Tour of What's New (PC World) - Bing Helps Overcome Search Shortcomings, Still No Google-Killer - Bada-Bing! - Bing Is Only 'First Step' - How Useful Is Microsoft's New Search Offering? - Bing (Geek News Central)
|
Tags: searchengine microsoft tech
Comments:
Add Comment
Wednesday, May 27, 2009 22:43:58
Rate this entry:
Average Rating: 0.0
(0 votes)
Recently I've been looking at the Live Messenger API, the programming interface for Microsoft's instant messenger. It's a pretty interesting concept, and I plan on learning more about it in the near future. One of my goals is to display my current personal message on my site - I change it every few days, and always try to come up with something witty or creative (Today's is "Vai kads reali latviešu valodu?" - you can translate it here).
Until then, I've at least incorporated an in-browser messenger client on the left side of my site - it's the button that looks like this:

You can contact me via IM using this link whenever I'm online, even if you do not have a messenger client installed on your machine. Kind of a cool feature - I'm not sure how long it's been around, but it's new to me. |
Tags: microsoft social tech blog
Comments:
Add Comment
Monday, May 04, 2009 18:45:31
Rate this entry:
Average Rating: 0.0
(0 votes)
If you're unfamiliar with Refcardz by DZone, you should definitely check it out. It's a collection of cheat sheets for dozens of technologies, each with several pages of useful information.
The reference cards cover a wide variety of technologies, like ASP.NET, CSS, PowerShell, and JUnit and EasyMock. The content is heavily code-centric, with samples of all of the concepts discussed.
You can view the cards online using iPaper over Flash, or simple free registration is required to download them as PDFs. A new document comes out about once per week, and there's an RSS feed available to stay up to date. The Refcardz, as well as the rest of the DZone site, is highly recommended. |
Tags: tech reference
Comments:
Add Comment
Friday, April 17, 2009 20:41:25
Rate this entry:
Average Rating: 0.0
(0 votes)
As you may know, I'm not exactly active when it comes to online social networking. I only recently joined Twitter, and I still don't really get it - from what I've seen in the last few months, it's just a gigantic chat room with billions of discussions going on simultaneously - but maybe I'll catch on eventually. I don't use Facebook or MySpace, but I do stay up to date with LinkedIn.
But I finally set up an account with Delicious (formerly del.icio.us). And this is turning out to be an incredible tool. It's basically a centralized repository for all of your bookmarks, organized using tags (categories). It's designed for your links to be shared (hence the social networking) - part of the fun is finding other bookmarks out there, and finding out who is interested in them - if you share interests with people, there's a good chance that you'll find each other's bookmarks worth checking out, along with other people in their network, and their bookmarks, etc. etc. etc. But even if you don't want to share things, each favorite can be marked private if it's something that you don't want to share with the world.
Right away, it was easy to use online - the site is fast and user friendly. But the best way of using it is right in the browser - it allowed me to install a Firefox extension that gives me a Delicious toolbar and a sidebar, so my favorites look and feel much like they do normally inside the browser - but they stay with me regardless of which computer I'm using.
I know none of this is news to most of the web community, but I just thought I'd share my initial reaction, for those of you who haven't used Delicious before; I highly recommend it. It takes just a few minutes to get started, and then you'll never look back.
Please feel free to add me to your network. You can get to my public bookmarks on the left side of my blog, or by using the following link:
http://delicious.com/jtenos |
Tags: social tech
Comments:
Add Comment
Saturday, March 14, 2009 05:39:05
Rate this entry:
Average Rating: 4.3
(3 votes)
I've been trying out a product called NDepend (version 2.11), a .NET code analysis tool, for the past few weeks. NDepend was written by a Microsoft MVP named Patrick Smacchia, a software developer and author from France. NDepend provides dozens of useful features for reviewing and analyzing your .NET assemblies.
NDepend uses CQL (Code Query Language) as the backbone for its analysis. CQL is a query language based loosely on the SQL standard syntax, and is fairly easy to read and write, especially due to the similarities to SQL (SELECT, WHERE, ORDER BY, etc.).
Some samples of the CQL code:
SELECT TOP 10 METHODS WHERE NbLinesOfCode > 30 ORDER BY NbLinesOfCode DESC
SELECT TOP 10 METHODS WHERE MethodCa == 0 AND !IsPublic AND !IsEntryPoint AND !IsExplicitInterfaceImpl AND !IsClassConstructor AND !IsFinalizer
Out of the box, NDepend provides a significant number of useful queries, such as identifying unused members, improperly encapsulated objects, and code quality features like types or methods that are too big or complex. These queries are all customizable - for example, you can change the "Methods with too many parameters" query so that it only returns methods with more than 8 parameters, instead of the 5 that comes by default - or exclude the query altogether. Adding queries to the analysis is just as easy - just write a CQL query and add it to the project.
In addition to the CQL query results, NDepend provides a few visual representations of the projects. The dependency graph is a diagram that shows each of the assemblies in your project, along with their relationship to one another. The size of the boxes and thickness of the edges represent properties of each assembly, such as number of lines of code, or code complexity.

The metrics chart is a little more difficult to make sense of. It displays fields, methods, types, or namespaces as little boxes inside assemblies, with the sizes representing one of several metrics, like number of IL instructions or number of members. When dealing with large projects, the sheer number of types makes this collection difficult to look at. However, if there are any significantly large methods, types, etc. in your project, that may tend to jump out at you and give you the opportunity to review your code architecture.

Once your NDepend project is ready (or you select a quick project and go with the defaults), you can fire it up, and it takes all of your CQL queries and graphs, and writes them to an HTML report, complete with query results, warnings, and summary information. This report is a great starting point for improving your project and customizing your queries.
There are plenty of options out there when looking for a code analysis and verification tool. In my opinion, what makes NDepend unique is how truly customizable it is, based on the CQL specification. Other code analyzers may allow you to build your own rules, but they typically are all based on what the tool wants you to be able to check. With CQL inside of NDepend, you, as an architect, can decide what's important to you, and query for it, regardless of whether anyone else thinks it's important.
I would definitely recommend NDepend for anyone interested in analyzing and improving their codebase. |
Tags: review programming tech
Comments:
Add Comment
Friday, March 13, 2009 07:06:52
Rate this entry:
Average Rating: 2.7
(3 votes)
Last night I wrote another article for the Code Project, my third contribution to the site. This one describes a method to convert an object into a child type, a concept not normally used in object-oriented programming. It's definitely got a limited audience, but I feel that it's got some value.
The article can be found at:
http://www.codeproject.com/KB/cs/JTConvert.aspx |
Tags: programming tech
Comments:
Add Comment
Wednesday, March 11, 2009 07:33:18
Rate this entry:
Average Rating: 3.3
(3 votes)
I just published my second article to The Code Project, one of the top resources on the web for software developers. My first article was published in January, and provided alternate methods for sorting a collection. This time, I am publishing the code for a "Trictionary", which is like a Dictionary, except with two values for a given key instead of just one.
This was an interesting project, and can be a useful technique.
The article can be found at:
http://www.codeproject.com/KB/cs/Trictionary.aspx |
Tags: programming tech
Comments:
Add Comment
Saturday, March 07, 2009 10:06:03
Rate this entry:
Average Rating: 4.0
(1 vote)
The newest build of Windows 7 beta comes with the option to disable Internet Explorer 8. Although not confirmed by Microsoft, this is most likely due in part to some legal action in the European Union dealing with antitrust issues.
The whole thing seems kind of silly to me. Windows comes with a calculator, rich text editor, games, networking utilities, disk utilities, email client, media player, instant messenger, file manager, and dozens of other programs that have other third-party alternatives. It's only natural that Windows should come with a web browser. What's so special about a browser, other than it is used by a lot of people? Doesn't really seem like a legal precedent.
If you know me, you know I'm a huge Firefox fan, and a fan of the Linux operating system. I only use IE in very rare cirumstances where web developers were inconsiderate enough to use IE-only standards, that don't follow true web standards - aka "lazy development". However, I have no problem with the fact that IE exists, or that it's part of the Windows OS. Users are free to download whatever browser they want - Firefox, Safari, Chrome, Opera, and other less-popular alternatives are all out there, and there's nothing stopping anyone from using them.
In reality, people mostly buy computers that come pre-loaded with Windows, from their local electronics store, or direct from companies like Dell or Compaq. I find it very unlikely that these pre-loaded machines will have IE excluded. The other group of people are ones that install the operating system themselves, usually slightly more advanced users. These users have two choices: include IE in their installation, or exclude it, and be left without a browser (I doubt the Windows installation disk will include the option for an alternate browser to be installed). Of course, they will choose to install IE8. In either case, anyone who wants to use a different browser will likely download it from the web, which requires a browser. And once IE is installed, there's no reason to remove it - if you don't like it, just don't use it. |
Tags: microsoft browser tech
Comments:
Add Comment
Thursday, March 05, 2009 21:27:45
Rate this entry:
Average Rating: 0.0
(0 votes)
The new beta release for Apple's Safari web browser was recently released. Safari 4 offers several new features, some of which are pretty nice.
Top Sites: The new Top Sites feature gives the user the ability to see several of their favorite sites at the same time, even telling you which of these sites have changed since your last visit. Really a cool feature that looks like it could be useful for a lot of people.

3-D Previews: There are a few places where Safari allows you to view page previews exactly as they were last rendered, as large thumbnails in a 3-D flipbook. This appears to be much like the 3-D window switching in Windows Vista/7 Aero and in various Linux extensions. Not really something that will make or break a browser, but it's kind of a cool feature.

New Tab Handling: Someone on the Safari team apparently saw Chrome's tab style and decided to put this into Safari. Tabs have been moved to the title bar, which may look ok, but in my opinion isn't a good idea. I use my title bars as they were designed, to move and maximize/restore my windows, and having tabs up there just throws a wrench into a process I've been used to for 15 years. The other Chrome feature that was picked up was the ability to drag a tab off of the window to create a second instance of Safari. However, unlike Chrome, it does not create a new process. So I would expect an application crash to still destroy all instances, not just the one that crashed.

There are several other smaller features that Safari 4 is introducing. However, even with these features, Safari is still not on par with Firefox. Safari may look nice, and may be fine for the average user, but the latest release just isn't good enough for me. |
Tags: browser tech
Comments:
Add Comment
Saturday, January 31, 2009 11:50:55
Rate this entry:
Average Rating: 5.0
(1 vote)
This morning I published an article to The Code Project, a development site devoted to sharing code techniques and utilities. My article covers my JTCollections project that I built several months ago. JTCollections contains a class called CollectionSorter that provides alternate methods for sorting a generic List. Specifically, it can be useful for sorting a collection of objects by more than one property (the example I gave was sorting a list of Person objects by Age, then LastName). This type of sort is possible using standard framework techniques, but my method makes it easier for the developer to write and read code that accomplishes the sort.
The article can be found at:
http://www.codeproject.com/KB/cs/JTCollections.aspx |
Tags: programming tech
Comments:
Add Comment
Friday, January 30, 2009 21:36:01
Rate this entry:
Average Rating: 0.0
(0 votes)
Tags: programming tech
Comments:
Add Comment
Sunday, January 25, 2009 01:37:02
Rate this entry:
Average Rating: 0.0
(0 votes)
Just found a new Firefox extension called AQuikWiki. This is a cool plug-in that allows you to quickly look up a word or phrase without leaving your page. You just highlight it, right-click and select AQuikWiki, and it will give you a quick definition.
For example, suppose you are not up to speed on the awesomeness that is the Arizona Cardinals, and you check out the page on Yahoo! Sports. You come across the name Ken Whisenhunt, and want to know a little more about him.

Highlight the name, right-click, select AQuikWiki, and you'll get more information.

Click again, and the information expands. Click again, and a new tab opens with Wikipedia's entry.
Just one of the many thousands of Firefox Add-ons that make Firefox the most customizable and greatest browser in the market. |
Tags: browser tech
Comments:
Add Comment
Saturday, January 24, 2009 16:32:07
Rate this entry:
Average Rating: 0.0
(0 votes)
I've had a few weeks to look at Windows 7, and I just wanted to share a few newer opinions. In my first post, I listed a few postive comments, but had a generally negative overall opinion. Since it's been out for awhile now, I've had a chance to get used to a few things, and read some articles from some experts, clearing up some of the issues I had.
The best article I've read on the subject was found from a Microsoft director named Tim Sneath, who provided The Bumper List of Windows 7 Secrets. While I don't necessarily agree with all of his comments, I found much of the article very useful.
One of the coolest new features is the Problem Steps Recorder. This is a very easy-to-use application that allows a user to record the steps they took to perform an action, then save it to a file. That file can be given out as training material, given to technical support, or any of a number of uses. An example of the output, after only a few clicks, can be found here (It generates a MHT file, which can be viewed in IE easily - attached is a PDF printout of that MHT file).
Internet Explorer 8 has several new and exciting features, designed to compete with Firefox and other browsers, to maintain dominance in the browser market. There are add-ons like toolbars and extensions, accelerators, and InPrivate browsing. And IE8 provides a more Firefox-like search function, opening up a toolbar for searching instead of a popup window. Up to now, Firefox has managed to stay one step ahead of IE, and there's really no reason to think IE will beat it anytime soon - but IE is definitely improving on itself with each new version.
One of my biggest complaints was the loss of the Quick Launch toolbar. While it's not there by default, there are ways to get it back. But even without it, you can still be as productive as before, just a little differently. I was concerned that once you opened an instance of an app, you couldn't open a second one from the taskbar. I found out that you can open another instance by middle-clicking the icon (or right-clicking and selecting an item in the context menu, but that's one too many clicks for me when I'm in a hurry). Combine this with setting small taskbar icons, and you really don't lose any productivity.
So I'm warming up a little bit to Windows 7. When the final version is released in a year or two, I'd expect it to be very successful, unlike Vista. I don't think it will steal anyone away from the Apple or Linux communities, but I do believe it will finally get people to upgrade from XP. |
Tags: microsoft operatingsystem tech
Comments:
Add Comment
Thursday, January 22, 2009 21:18:07
Rate this entry:
Average Rating: 0.0
(0 votes)
There's a new programming language out there, called X# (X-Sharp). It's a programming language made up almost entirely of XML. Normally I'm a huge fan of XML - it is a single format for describing data, markup, configuration, and any of a dozen other purposes. But to use XML as a full programming language? That's a little absurd.
Here's a sample of what you can do with X#: <xsp:pi xmlns:xsp="http://www.xsharp.org/2008/xxxml"> <xsp:variable name="lang" type="string" select="'russian'"/> <library> <xsp:switch> <xsp:case test="$lang = 'english'"> <book name="English dictionary" price="45.50"/> </xsp:case> <xsp:case test="$lang = 'spanish'"> <book name="Aprenda Espanol en 1 manana" price="40.29"/> </xsp:case> <xsp:case test="$lang = 'russian'"> <book name="OANH R3BLK HEAOCTATOHHO" price="37.45"/> </xsp:case> </xsp:switch> </library> </xsp:pi>
I don't know about you, but I find real languages much easier to read - I couldn't imagine trying to write this nonsense.
Of course, X# is nowhere near the craziest progamming language out there. There are dozens of languages that people built for the sole purpose of being worthless and crazy languages. Some examples are:
- Whitespace: My personal favorite: A language composed entirely of whitespace (space, tab, newline).
- Java2K: A language whose functions only have a certain probability of doing what you intend it to.
- brainf*** (Reader discretion advised): A programming langauge made up entirely of punctuation.
- LOLCode: Written by an expert at the ridiculous "language" known as LOLSpeak.
- Var'aq: A Klingon programming language.
|
Tags: programming tech
Comments:
Add Comment
Saturday, January 10, 2009 16:16:42
Rate this entry:
Average Rating: 0.0
(0 votes)
Yesterday Microsoft released the first public beta of Windows 7, Microsoft's newest operating system. Being a technology fan, I jumped on the bandwagon and downloaded the beta this morning. Apparently the release was so popular that the servers were down most of the afternoon on Friday - they were back up this morning.
Windows 7 does seem to be faster than Vista, which is the one thing above all else that drove me away from Vista. Of course, if you have good up-to-date hardware, Vista runs just fine - but my Pentium D 2.8GHz with 2GB RAM (which runs XP and various Linux distros perfectly) performed miserably. I installed Windows 7 on a virtual machine using VirtualBox, and it seemed to be faster than Vista ran when it was installed full-time on this machine.
My first impressions include:
No Quick Launch Toolbar: In my opinion, this is the absolute worst thing they could have done. I click icons in the Quick Launch bar hundreds of times per day. In my XP desktop at work, I have about 21 icons (in 3 rows), ranging from drive shortcuts, to development applications, to utilities, to shortcuts to folders I need to go to a lot. Apparently there are workarounds to put it back, but nothing in the standard set of options.
Taskbar Pinning: In place of the Quick Launch bar, Windows 7 has the ability to "pin" shortcuts to the taskbar. This pinned icon serves double-duty - it starts out as a shortcut that starts the application. Once the app is started, the icon turns into the representation of the running program on the taskbar. Kind of an interesting concept in theory, but then you realize that the shortcut is gone - meaning you can't run a second instance of the app. In real life, I frequently open multiple instances of my most frequently used applications - things like Visual Studio, calculator, Excel, Notepad, and various Explorer shortcuts. This was an idea that might have been better off on the cutting room floor.
Action Center: The new Action Center feature seems to be a decent improvement. It's a combination of the Security Center with features like troubleshooting and maintenance. It includes pretty good messages to the user when actions are required.
Ridiculous Window Management: They added some totally unnecessary window management features that don't seem to serve any real purpose. For example, if you drag your window to the top of the screen, it will decide that you wanted to maximize the window. As opposed to normal people, who can simply double-click the title bar to maximize windows (or click the old-fashioned maximize button). Also, if you move your window to the left or right side of the screen, it will fill up that side of the screen. I'm sure these behaviors are configurable, so I'll absolutely be disabling them. Sometimes you just want to move windows out of the way, and I believe this new behavior will frustrate more people than it will help.
Tray Customization: The taskbar tray is more customizable that in previous versions of Windows. You can decide how each individual icon behaves, so you have more control over your display. You don't have to choose between showing everything (which can get pretty big and have a lot of unnecessary stuff) and hiding what Windows thinks is important.
Various Quirky Bugs: This is a beta, specifically an early beta, which means they've still got some bugs to work out. So I can forgive some buggy behavior, like Windows Defender refusing to run, and the "Run" command freezing up. I'm sure things like this will be fixed with no problem.
Overall, I'd say that Windows 7 is probably an improvement over Vista, but I'm not expecting it to be Microsoft's savior, the way people have hoped. It contains many changes that are implemented just for the sake of change, something that drives me crazy. In my opinion, Microsoft needs to focus more on performance and security instead of flashiness. New features are fine, but not when they destroy features that people have known and used religiously for years. I'll likely continue to use Windows XP at work, and as my Microsoft development environment at home, and Ubuntu Linux as my personal operating system. |
Tags: microsoft operatingsystem tech
Comments:
Add Comment
Sunday, December 21, 2008 10:37:56
Rate this entry:
Average Rating: 0.0
(0 votes)
I just started looking into HTML 5, the new version of the HTML specifications. This is the first change to the specs since version 4 in 1999. The goal of version 5 is to introduce new elements to streamline modern web development.
The designers wanted to make it easier to build web pages that are prevalent in today's web culture - blogs, multimedia, and things of that nature. To that end, they wanted to get rid of the majority of the "div" elements that make up the majority of most web pages, and replace them with more common-sense names, like "section", "article", and "nav". They also wanted to include a "video" and "audio" tag, to standardize the many different multimedia tags that currently exist. These changes are supposed to make it easier for web designers and developers, and easier for all kinds of standard and mobile browsers to display the content.
Frankly, I'm skeptical about many of these changes. There's a reason HTML 4 has been around so long - it works. Nested divs may not be pretty, but they are definitely well-known by web developers and programming frameworks, and they function in a predictable and consistent way. I worry that a totally new way of writing web pages will introduce a new wave of conformance and compliance issues - we're finally at the point where the majority of websites will function in all major browsers and operating systems, and all of these changes may just start the problem over again. With any luck, the major browsers (IE, Firefox, Safari, Chrome, Konqueror, Opera, and the various mobile browsers) will all release new versions in all operating systems that handle the changes in a consistent manner, but based on what we've seen in the past, I wouldn't count on it. I'm expecting a new generation of "must be viewed in Internet Explorer" websites, which would be tragic for the open nature of the web.
HTML 5 is still just a draft, so I'm sure there will be plenty of changes before it's released. But it looks like it is an inevitable change, so we need to be prepared. With any luck, the major players in the web industry will work together to make this transition as smooth as possible.
Some links regarding HTML 5:
http://www.ibm.com/developerworks/library/x-html5/
http://www.w3.org/TR/html5-diff/ |
Tags: browser tech
Comments:
Add Comment
Sunday, December 14, 2008 09:40:27
Rate this entry:
Average Rating: 0.0
(0 votes)
I've decided to give Twitter a try. It's kind of a giant social message board, where anyone can post, follow other people's posts, and communicate back and forth with each other using tiny (up to 140 character) messages. The site's introductory video talks about it as a place where you can post little "what I'm doing right now" bits, things that may be kind of fun for people to know about, but not important enough to blog about or to email people about. People seem to be using it for a variety of reasons, from simply what they're doing, to fun web links, to pseudo-chatting. For me, you can expect to see mostly fun links, to video clips, news articles, Onion entries, or other funny or interesting stuff that I come across each day.
If you'd like to follow my posts, here are some links for you:
http://twitter.com/jtenos
RSS (for your favorite RSS reader - GoogleReader, MyYahoo, etc.): http://twitter.com/statuses/user_timeline/18099839.rss
On that same note, if you ever wondered what I follow, you can check out the following links - these are the RSS feeds and Twitter entries that I'm currently following using Google Reader: http://www.google.com/reader/shared/user/11238789519108942872/label/Subscriptions http://www.google.com/reader/shared/user/11238789519108942872/label/Twitter |
Tags: social tech
Comments:
Add Comment
Saturday, December 13, 2008 20:12:55
Rate this entry:
Average Rating: 0.0
(0 votes)
Tags: microsoft operatingsystem tech
Comments:
Add Comment
Saturday, December 13, 2008 17:03:38
Rate this entry:
Average Rating: 0.0
(0 votes)
This week I completed my Linux class at Mesa Community College (see my previous post for more details). The class was kind of a waste of time - it never got much past basic terminal commands and a brief introduction to things like networking, disk partitioning, and boot processes. But it did provide some useful insight into the open source industry and the different distributions of Linux.
The class used CentOS as the distribution of choice. CentOS is derived from Red Hat Enterprise Linux, which is one of the more popular and powerful distributions used for business - CentOS is basically the zero-cost version, which provides the same OS as RHEL, with some minor differences and no support from RedHat. It is a very good distribution, and is well suited for classroom purposes.
Personally, I prefer Ubuntu, which is one of the more popular flavors of Linux among personal users. There's a lot of support out there for Ubuntu, which makes it perfect for novice users. I'm using it at home now, and it's worked out really well so far. Of course, since I'm a Microsoft developer by trade, I've also got Windows set up, which I use for my personal programming projects. But other than Visual Studio and SQL Server, there's not much on Windows that I can't get with Linux. |
Tags: operatingsystem tech
Comments:
Add Comment
Saturday, December 06, 2008 13:28:06
Rate this entry:
Average Rating: 0.0
(0 votes)
This week I attended a 3-day training class from Interface Technical Training on Windows Communication Foundation (WCF). It was an excellent training class, led by Dan Wahlin, following Microsoft's official training modules, starting from the beginning, and including all major aspects of the technology, including basic setup, configuration, usage, debugging, security, transactions, and more.
If you're unfamiliar with WCF, it's a .NET technology that is designed to basically replace .NET remoting and web services. It uses a consistent API to build and consume services that can be exposed through TCP or HTTP, over an intranet, an extranet, or the public internet, or even over the same machine using named pipes. The services are defined in the code one time, and can be exposed using these different techniques simply by modifying the endpoints in the application configuration file. The services can easily be hosted in IIS or with a Windows service, and can be consumed very easily by using Visual Studio 2008, or with a little extra work using .NET command line commands.
The technology is very interesting, and looks like it will soon be the Microsoft standard for communication. Included out-of-the-box are features like encryption, detailed logging, and Reliable Messaging. WCF can also be backward-compatible with standard web services, with a simple configuration setting - of course, some of the more advanced features like decryption are unavailable using this technique, but it's a major part of what makes WCF such an exciting technology. |
Tags: programming tech
Comments:
Add Comment
Sunday, October 19, 2008 17:05:14
Rate this entry:
Average Rating: 0.0
(0 votes)
I came across an issue not too long ago that caught my attention - using javascript to access elements behaves differently in IE and Firefox/Safari/Chrome. IE accepts casing differences - Firefox, Safari, and Chrome (let's call them the "good browsers") do not. For example: <span id="span1"></span> <input type="button" onclick="clk();" value="clickme" /> <script type="text/javascript"> function clk() { document.getElementById("Span1").innerHTML = "Text"; } </script> Clicking the button in IE populates the span - in the good browsers, it does not, because it does not find an element with that ID. In my opinion, the good browsers are "right" - elements should be properly cased. Your opinion may vary - please tell me if you disagree - I'd be happy to hear an argument in IE's favor. In any case, this is just another reason to test in at least Firefox in addition to IE. A few extra minutes of testing can greatly reduce headaches in the future. |
Tags: programming browser tech
Comments:
Add Comment
Thursday, September 25, 2008 22:02:15
Rate this entry:
Average Rating: 0.0
(0 votes)
I recently finished reading On the Way to the Web: The Secret History of the Internet and its Founders, by Michael A. Banks. The book deals with the years leading up to the internet revolution, and all the technologies that eventually came together to become what is now the World Wide Web.
My own personal experience with online services began in the mid 90's, so I missed out on quite a bit of the excitement. I used Prodigy, and had heard of America Online and CompuServe, but really didn't understand the events leading up to the information superhighway. My goal in reading this book was to understand some of the things I missed out on, and to get a better picture of how the web really got started.
The book is arranged reasonably chronologically - chapter one takes place mostly in the 1960's; until reading this, I never even considered the possibility that computers could do anything that long ago, let alone do any networking. As the chapters go by, we see the growth of networks, online services, bulletin boards, and email. We see CompuServe, Prodigy, AOL, and The Source, as well as several other unsuccessful products and companies. They even throw a few screen shots from some of these services back in the 80's - ridiculously lame by today's standards, but they were all the rage back then.
The book ends in the mid-1990's, when the one single web really replaced all of the individual online services. In addition, there's a summarized timeline from 1945-1994, showing each of the major advances leading up to the web.
I really enjoyed this book. It provided a lot of information that I never knew about how online services evolved throughout the past several decades, and gave me a better understanding of why some things are the way they are. The tone of the book is mostly dry facts and stories, but with a little humor and light-hearted fun thrown in on occasion to keep it entertaining as well as informative. And I don't believe Al Gore's name was mentioned once. Maybe he didn't invent the internet after all...
Highly recommended if you are interested in the topic...or if you were around for this stuff, and are just looking for some nostalgia. |
Tags: review books tech
Comments:
Add Comment
Monday, September 08, 2008 23:46:51
Rate this entry:
Average Rating: 0.0
(0 votes)
I've been experimenting with different web browsers lately, and just downloaded Chrome, the recently released browser from Google. It's still in beta, so I'm not expecting it to be perfect, but from what I've seen so far, I'm very impressed. Chrome is open source, which pretty much guarantees that it will be better than Internet Explorer, since it's built on open standards, and will be improved by people who are passionate about their work, not just money. I've been a big Firefox fan for a long time - they've always been one step ahead of Microsoft, and just provides a better browsing experience than IE. But it's starting to look like Google may just have a winner here. Google has the best search engine, free email, and maps, and has an impressive array of other stuff - so it makes sense that they'd build a great browser as well. You can check out some of the features at http://www.google.com/chrome/intl/en/features.html. Some of the features are very nice, like dynamic tabs, crash control, and their new javascript engine, which is supposed to be significantly faster than any others out there. |
Tags: browser tech
Comments:
Add Comment
Monday, September 01, 2008 03:01:23
Rate this entry:
Average Rating: 0.0
(0 votes)
Some blockhead at PC Magazine wrote an article called 21 Great Technologies That Failed. It gives 10 Microsoft and 11 Apple examples of "failures". Most of the stuff is reasonable, like WebTV and Mac G4 Cube - but they somehow slipped .NET into the list, saying everyone went to Java, and that .NET "has nowhere near the scope that MS had envisioned back in 2002". What an incredibly stupid thing to say! .NET not only caught up with Java, it surpassed it years ago as the dominant development technology. While there is still plenty of debate as to which is "better" (.NET gets my vote for most, but not necessarily all, situations), there is absolutely no doubt that .NET is nothing short of a tremendous success. Jeremy A. Kaplan and Sascha Segan (the writers of the article), and the PC Magazine editors who allowed this nonsense to be published, should all be fired immediately. |
Tags: rant programming tech
Comments:
Add Comment
Sunday, August 31, 2008 00:09:30
Rate this entry:
Average Rating: 0.0
(0 votes)
I've been working on learning a new keyboard layout, the Dvorak Simplified Keyboard. This is supposed to provide an alternative to the standard QWERTY layout, making it easier to move from key to key, thus increasing speed and reducing strain on the wrist and fingers. I bought stickers to put on one of my keyboards, which helped to get me started. After just a day, I memorized the layout, and switched back to my regular keyboard. Now it's just a matter of getting used to it, and improving on my speed. So far, after 3 days, I'm up to about 10 words per minute, compared to my current 90 on a QWERTY. My goal is to get to 100 WPM on the Dvorak - if it really is a more efficient keyboard, I should be able to do it. You may be wondering why I'd do this - I already type fast, and I've never had any complaints of hand strain. I guess I don't have a good reason, other than "Why not?". Kind of like learning an obscure foreign language - doesn't really provide a useful skill, but it's fun to know something that most people have never heard of. FYI: I typed this entry on a Dvorak layout - only took about 10 times as long as normal. |
Tags: tech
Comments:
Add Comment
Sunday, August 17, 2008 14:01:27
Rate this entry:
Average Rating: 0.0
(0 votes)
I apologize for not posting anything for a couple of weeks - I've been incredibly busy with work, and with a personal project which I hope to release within the next couple of weeks. I'm designing an "RSS feeder", which will allow users to view their favorite RSS feeds (blogs, news articles, etc.) in one centralized location. Once it's ready for initial beta release, I'll post an entry with more details on that product. For now, I'd like to follow up on one of the new C# 3.0 features, Extension Methods. Basically, extension methods allow you to add methods to existing classes, even classes inside the .NET framework, by using a special syntax inside of a static class. A simple example follows: // The following adds a method to System.String, which allows you to count the number of a particular character in that string. public static class ExtensionMethods { Â Â Â Â public static int CountChars(this string s, char c) Â Â Â Â { Â Â Â Â Â Â Â Â int counter = 0; Â Â Â Â Â Â Â Â foreach (char currentChar in s) Â Â Â Â Â Â Â Â { Â Â Â Â Â Â Â Â Â Â Â Â if (currentChar == c) Â Â Â Â Â Â Â Â Â Â Â Â { Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â counter++; Â Â Â Â Â Â Â Â Â Â Â Â } Â Â Â Â Â Â Â Â } Â Â Â Â Â Â Â Â return counter; Â Â Â Â } } // You can call this code by simply using the dot notation on a string: string textLine = "This is my string."; int numberOfIs = textLine.CountChars('i'); Of course, you can do this the old fashioned way by calling: int numberOfIs = ExtensionMethods.CountChars(textLine, 'i'); But the new way has a syntax like regular string methods, which makes it nicer to read, and more clear what you are accomplishing. In addition, with Visual Studio, the Intelli-Sense picks up this method when you type the dot after the string, so you don't have to think about where that method lives - all you need to do is find it in the Intelli-Sense list. In ASP.NET web applications, I've found an additional use that is pretty nice. With most web apps, it's a given that you'll be using Session variables, Application variables, cookies, and other state variables. Extension methods can be very helpful in this aspect, allowing you to call individual variables with compiled code, instead of forcing the developer to handle proper casting and calling appropriate keys inside page logic. For example: // Old way: // In Global: public const string APP_USER_KEY = "APP_USER_KEY"; // In page code: AppUser currentUser = (AppUser)Session[Global.APP_USER_KEY]; // or AppUser currentUser = {fill in the blank}; Session[Global.APP_USER_KEY] = currentUser; // New way: // In ExtensionMethods.cs (or any static class): private const string APP_USER_KEY = "APP_USER_KEY"; public AppUser GetCurrentUser(this HttpSessionState Session) { Â Â Â Â return Session[APP_USER_KEY] as AppUser; } public void SetCurrentUser(this HttpSessionState Session, AppUser appUser) { Â Â Â Â Session[APP_USER_KEY] = appUser; } // In page code: AppUser currentUser = Session.GetCurrentUser(); // or AppUser currentUser = {fill in the blank}; Session.SetCurrentUser(currentUser); There is a little more code involved when you do it this way, but it is much safer. You control the type of variable getting assigned to the session variable. You can define custom exceptions when setting or getting this variable - for example, if you get a session variable the old fasioned way, and it's null, your page code just gets a null, and you have to handle it in your page. Using extension methods, you can throw a custom NoUserLoggedInException if it's null, and let it get handled by shared code. Also, you can assign events to the Get or Set methods, so that your application can track when those variables are assigned or read. Or any other number of custom logic you can think of. The same technique can be used for Application or Cache variables, and also with cookies, by working with the Request or Response objects. I've started incorporating this technique in my web applications, and it's worked really well so far. The only downside to this technique is that you need two methods, a getter and a setter - this is the "Java" way of accessing variables. With normal variables, I'd use properties with a get and a set section to accomplish the same thing. It wouldn't surprise me if C# 4.0 introduced something like this, but I haven't heard anything about that. |
Tags: programming tech
Comments:
Add Comment
Tuesday, July 29, 2008 19:13:53
Rate this entry:
Average Rating: 0.0
(0 votes)
There's a new search engine out there, supposedly a "Google killer", named Cuil (pronounced "cool"). I don't know a lot about it, other than that it was built by a lot of former Google employees, and that it crashed on its first day. You'll find thousands of blogs out there already talking about this search engine, most of them more knowledgeable than I am. I just wanted to give a few examples of some basic searches I've done to test it out - I tried the same tests on Google, and received much better results. Searched for: cuil Result: Didn't even provide itself or anything related to it as a search result. Expected Result: #1 should be Cuil.com itself, followed by blogs, news articles, etc., related to the site. Searched for: cuil search engine Result: Only 3 results, and none of them related to cuil.com Expected Result: Practically identical to just searching for cuil Searched for: cuil.com Result: Search results contained information regarding the domain, such as the Whois information, but nothing related to the search engine. Expected Result: Practically identical to just searching for cuil Searched for: joe enos Result: My homepage was not even on the first page of the results Expected Result: My homepage should be the #1 result. Searched for: "joe enos" Result: My homepage was #10 on the list, behind pages that simply had that name somewhere in the page, and some that didn't even have my name anywhere Expected Result: My homepage should be the #1 result. Searched for: "joe enos" blog Result: My homepage was the #1 result, but my blog was not in the search results at all. Expected Result: My blog should be the #1 result. Searched for: microsoft Result: office.microsoft.com was the #1 result. www.microsoft.com was the #2 result, but the title of the result was "QuickBASIC". www.terraserver.com was the #3 result. Expected Result: www.microsoft.com should be #1 result, and it should be named properly. TerraServer should not be anywhere near the first page of the search results. Searched for: ipod Result: www.apple.com was the #1 result. IPod-related pages started in result #2. Expected Result: IPod specific pages should be the #1 result. I will say that Cuil has a decent looking user interface, and responds pretty quickly to requests. But before it can even think about competing with Google, Yahoo, or even Live, it will need to significantly improve its search results. In addition, Google, Yahoo, and Live all have additional features that fit nicely into their product, like news, sports, stocks, weather, and hundreds of other things that Cuil doesn't. Personally, I've found that Google works the best by far for providing search results, and I don't think I'll be switching anytime soon. I use Yahoo for things like news, RSS feeds, and finance. They're the best at what they do, and I think Cuil is in way over their head. In addition, just my opinion, but Cuil is kind of a stupid name. If you do go to that site, make sure you spell cuil correctly - if the i and l are switched, apparently you'll be sent to a site that isn't exactly family friendly - yet another reason to dislike that name. |
Tags: searchengine tech
Comments:
Add Comment
Monday, July 21, 2008 20:37:19
Rate this entry:
Average Rating: 0.0
(0 votes)
I just added a new version of JTCollections, version 1.1, to my downloads page. This contains a new method in the CollectionSorter class, utilizing a params array of generic Comparison delegates. This will allow easy sorting by multiple properties, without the need for reflection (Version 1.0 was all reflection - those methods are still here, but a new one is added). This will significantly increase speed while sorting, with an easy to use syntax. The fastest way to use this function is by using lambda expressions, as a shorthand syntax for defining Comparison delegates. An example follows, that will sort a list of strings first by length, then alphabetically. CollectionSorter.SortList(myStrings, Â Â Â Â (s1, s2) => s1.Length.CompareTo(s2.Length), Â Â Â Â (s1, s2) => string.Compare(s1, s2) ); Using the standard framework sort routines, you would have to put more effort into this. If you define a custom Comparison delegate or a Comparer object, you would have to run the first comparison (length), then check if that was nonzero, then if necessary, run the second comparison (alpha), and return the result. The more levels of sort, the more complex your code becomes. However, with the new technique in JTCollections, each additional layer is just one extra lambda expression, since you don't have to deal with the nonzero checks. The CollectionSorter code is not complex at all, but it can save a significant amount of coding, without sacrificing performance. |
Tags: programming tech
Comments:
Add Comment
Saturday, July 12, 2008 21:24:52
Rate this entry:
Average Rating: 0.0
(0 votes)
There are a million and one articles and blog entries out there devoted to .NET 3.0 and/or 3.5. But I'm running out of interesting topics, so I'll put my two cents in. I realize I'm a little late, but I recently started using Visual Studio 2008 and the .NET 3.5 Framework. So far, it's very impressive. I will discuss the features I have personally used and appreciate. Since I jumped directly from 2.0 to 3.5, I am not sure which of these came with 3.0 and which with 3.5. LINQ Probably the most talked about feature of the new framework is LINQ, Language INtegrated Query. This technology allows you to access data consistently, regardless of the source of that data. That source may be a SQL Server database, Oracle database, text file, XML file, or anything else you can think of. Once the data source is connected, the actual code to retrieve, update, or delete that data is the same. You don't need to write custom SQL statements, stored procedures, or complicated data management routines to access the data - all of that is handled for you. I began using LINQ in my own applications a few months ago. Originally, my JTodo application used my own personal data management solution, JTDataManagement, which allowed retrieval and update of data in a standardized format. However, it required you to write your own get, save, and update stored procedures in a SQL or Oracle database. It worked very well, and made programming my applications much easier, but it wasn't perfect. I and created a new version of JTDataManagement that works with LINQ, by replacing my stored proc calls with LINQ calls, and replaced my database parameters with lambda expressions. Anonymous Types The first time I saw the keyword "var" in C#, I was worried that maybe it would be used improperly by lazy programmers who don't want to give variables strong types. That possibility exists, but as long as you use it for good, instead of evil, this technique can be very beneficial. So far, I have used it to generate data for display on a grid - you can create an anonymous type that defines a datarow without having to define a class to represent that object. That can save significant time when you just want to bind simple data. AutoProperties This is the most time and space saving feature I've seen with these releases. Traditional object-oriented .NET programming uses fields and properties (or methods) to access those fields. For simple objects, such as those that represent data tables, a class may contain a private field and a public property, something like: private int _id; public int Id { get { return _id; } set { _id = value; } } This is necessary for every field in the class. The technique is common, and is the same as defining a public field - however, proper procedure dictates that fields are never public, so this was the only other way. With AutoProperties, there's a new way: public int Id { get; set; } is now equivalent to the previous code. At compile-time, this code is converted into something similar to the original - a private field and public property are generated, so the end result is the same. In the end, this can save a lot of work and a lot of code. Type Initializers This is kind of handy. It allows you to set the values of public members of a class at the same time as you create it. I haven't used it much, but it is an interesting concept, and has the potential for saving some time and code. Person p = new Person() { FirstName = "John", LastName = "Doe" }; Extension Methods This is incredibly cool. It allows you to add new methods to existing classes, even classes inside the Framework. If you need functions added to the String class, you can do it. In the past, you would have to utilize utility classes with static methods that accept these objects as a parameter. I haven't used it yet, but I am definitely looking forward to it. I'm hoping to stay up to date with new technologies as they come out. I'm currently learning all I can about the ASP.NET AJAX standards, and I'd like to get to know Silverlight better over the next year or so. Hopefully, when the next version of the framework is released, I'll be up to date, and ready to start using it right away. Maybe then, I'll be in the first wave of bloggers. |
Tags: microsoft programming tech
Comments:
Add Comment
Tuesday, July 01, 2008 21:55:35
Rate this entry:
Average Rating: 0.0
(0 votes)
I just bought a new cell phone, after my "new every two" from Verizon Wireless elapsed. I've wanted a smart phone for awhile, and decided it was time to go for it. I decided to go with a Verizon XV 6800. So far, I'm very happy with it. I have 4 of my email accounts linked to this phone, so I can always stay current on my emails. The web browser works pretty well, even though it doesn't seem to display Flash or other fancier web stuff very well. However, some of the stuff I really may need on the go, like maps, phone books, movie schedules, traffic, and gas prices, work just fine. The device comes with Windows Mobile 6, which is the main reason I decided to go with this type of phone as opposed to a BlackBerry or Palm. From what I've seen and heard, both of these are fine products, but I wanted to stick with Windows. As a .NET developer, I'm looking forward to writing applications with the .NET compact framework and designing mobile ASP.NET websites. I found a good site, http://www.bwone.com/, which gives descriptions and reviews of various new technologies and products. Below is a movie from that site where the phone is introduced, along with links to continuations where the phone is demonstrated in more depth. http://www.bwone.com/2007/11/30/verizon-wireless-xv6800-first-impressions/ http://www.bwone.com/2007/12/06/xv6800-final-review/ http://www.bwone.com/2007/12/06/xv6800-final-review-part-2/ |
Tags: tech mobile
Comments:
Add Comment
Thursday, June 19, 2008 22:00:03
Rate this entry:
Average Rating: 0.0
(0 votes)
I've come across an interesting phenomenon with regard to database queries. It's not a bug or flaw, but rather just an unexpected behavior (at least to me). If you have a query that filters records by a "WHERE ... NOT IN ()" clause, your query will return zero records if any of those results are null. For example: SELECT 'TRUE' WHERE 'A' NOT IN ('X','Y','Z') returns one record with the word 'TRUE', but: SELECT 'TRUE' WHERE 'A' NOT IN ('X','Y','Z',NULL) returns zero records. I would have expected it to be the same as the first, since 'A' is not null, and not one of X, Y, or Z. However, due to the way databases treat null values (or more accurately, lack of values), a match is not found. Adding to the confusion is the fact that calling "IN" instead of "NOT IN" works just fine when you thrown in a null. For example: SELECT 'TRUE' WHERE 'A' IN ('A','B','C') SELECT 'TRUE' WHERE 'A' IN ('A','B','C',NULL) both return one record. This behavior can be explained, and actually makes sense once you read why it occurs. However, until I discovered this, it caused me some confusion while debugging a complex query. A simple example follows - suppose you have a BOOKS and AUTHORS table, and want to find all authors who do not have any books attached to them, and not all books have authors. The following query: SELECT * FROM AUTHORS WHERE AUTHOR NOT IN (SELECT AUTHOR FROM BOOKS) returns zero records. There are several alternatives, such as: SELECT * FROM AUTHORS A WHERE A.AUTHOR NOT IN (SELECT B.AUTHOR FROM BOOKS B WHERE AUTHOR IS NOT NULL) SELECT * FROM AUTHORS A WHERE NOT EXISTS (SELECT B.AUTHOR FROM BOOKS B WHERE B.AUTHOR = A.AUTHOR) SELECT A.* FROM AUTHORS A LEFT JOIN BOOKS B ON A.AUTHOR = B.AUTHOR WHERE B.AUTHOR IS NULL The first of the three is probably the best, and the third is definitely the worst. But there are probably a dozen other ways of accomplishing the same thing. These behaviors hold true for both SQL Server and Oracle, so my guess is that it's the same for all other major databases. For more information on why this happens, you can read the following, or just google it. SQL Server: http://technet.microsoft.com/en-us/library/ms177682.aspx Oracle: http://articles.techrepublic.com.com/5100-22_11-5319615.html |
Tags: programming tech
Comments:
Add Comment
Monday, June 16, 2008 21:02:06
Rate this entry:
Average Rating: 0.0
(0 votes)
Internet Explorer dominates the browser industry - it comes with Windows, which is by far the most popular family of operating systems. However, just because it's the biggest, doesn't mean it's the best. Mozilla's browser, Firefox is superior to IE in many ways. It's more secure, HTML compliant, customizable, and just a better browsing experience. TheBetterBrowser.com is one of many sites out there devoted to Firefox - users submit their own reasons for preferring Firefox over IE. One of the most common reasons is Firefox's wide assortment of extensions - add-ons available to add to your browsing experience - from standard plugins to download management to feed management. The Firefox Community Marketing group is pushing for a world record of the most software downloaded in a 24 hour period, with the new Version 3 being released. I fully support the Mozilla project, and will begin downloading and using this browser immediately upon its release (release date coming soon, but exact date not yet announced). I highly recommend Firefox, as well as the Thunderbird email client. If you'd like to be involved in the world record, visit the link below.
 |
Tags: browser tech
Comments:
Add Comment
Friday, May 30, 2008 12:29:03
Rate this entry:
Average Rating: 0.0
(0 votes)
There are two very distinct ways to build ASP.NET web applications in Visual Studio 2005 or 2008: Web Application projects, and WebSites. There are advantages and disadvantages to each type - I will discuss my personal experience with both of them - there are more differences, but these are what I have come across. Option 1: WebSite This is the new way of building a web application beginning with Visual Studio 2005. A page consists of an .aspx file and a single .cs/vb file. You never see the designer file. The compiler builds a designer file at compile-time, and includes that in the DLLs that it creates. Advantages:
- You can work on projects locally, over FTP, or even over HTTP with the appropriate setup.
- You have fewer code files - you don't have to worry about the .designer file.
- You can work on a website that's not even related to ASP.NET - using the IDE, you just select a folder, call it a website, and it gives you the Visual Studio experience for the files inside that folder.
Disadvantages:
- You get multiple, randomly-named DLLs - as many as one per page. You have to either publish all of these DLLs, or combine them manually prior to publishing.
- Your .aspx files are modified by Visual Studio to point to these randomly named DLLs, so what you have in source code is slightly different from what's actually published.
- Debugging will occasionally throw you for a loop - there are various bugs that occur sometimes, because ASP.NET is handling your DLLs internally in temp folders rather than just using what you have.
Option 2: Web Application Project This is the "classic" way of building a web application in Visual Studio - it is a "real" .NET project, where all of your .cs/.vb files get compiled into a single DLL, containing a class for each page, and any additional classes you include in your project are combined in the same DLL. Advantages:
- You end up with a single consistent DLL name.
- Your .aspx files that are published are identical to what's in source control.
- Visual Studio still does all of the grunt work (declaring control variables, attaching events, etc.).
Disadvantages:
- You have twice as many code files (one .cs/.vb file and one .designer file for each page).
- With Visual Studio, since it is treated as a regular project, you have to work on it locally and compile and publish yourself.
Given the major disadvantages of the WebSite type, I definitely recommend using the old-fashioned Web Application project. There are ways to convert the randomly-named DLLs into a single, consistent DLL, but it still isn't enough to make the process worthwhile. Please feel free to disagree with me - I'd be interested in hearing any comments from people who prefer the WebSite style, and how they compile and publish their site. FYI: If you're interested, here's the NAnt function I have used that merge DLL's together: <exec program="${dotnet}/aspnet_compiler.exe" commandline="-p ${source} -v / ${target} -fixednames -u -f" /> <exec program="${webdeploy}/aspnet_merge.exe" commandline="${target} -o ${dllname}" /> aspnet_merge is available as part of the Visual Studio Web Deployment Projects, which you can download from Microsoft for free. |
Tags: programming tech
Comments:
Add Comment
Sunday, May 25, 2008 11:19:49
Rate this entry:
Average Rating: 0.0
(0 votes)
I've been using a product called ReSharper, from JetBrains, for several months. The product is a plug-in to Visual Studio, and is designed to help refactor code, provide additional shortcuts, formatting, and other code maintenance services. I use several of the functions on a regular basis, and have experimented a little with the rest of the features.
My review follows:
The good: - As a plug-in to Visual Studio, all of the hints and shortcuts are right at your fingertips, as opposed to tools like FxCop, which checks your assembly and forces you to go find your problems before you can deal with them.
- ReSharper informs you if you have any unused local variables or private members. It also tells you if a value assigned to a variable is not used in any execution path. This allows you to cut out unnecessary parts of your code, with no worries about breaking anything else.
- It auto-generates your "using" statements at the top of your codefile, so you don't have to remember or look up namespaces that you don't use frequently.
For example, if you add the following line of code: FileInfo fi; It will add a "using System.IO;" line to the top of your codefile, after confirming with you that this is the namespace you want to add - if there are multiple possibilities (for example, if you have a different FileInfo class in another referenced assembly), it will display both, and let you select which one you want to add to your codefile. In addition, if you have "using" statements that are not referenced in your code, it will tell you, giving you the opportunity to clean that up without any trial and error. - It tells you if a method can be made static, which gives you the opportunity to reduce the instance-level members of your class.
- It provides a testing interface for use with nUnit, so you can run or debug tests directly from the IDE instead of a separate application.
The bad: - Ever since I've started using this, performance inside Visual Studio has been inconsistent - definitely worse than normal, sometimes much worse. It takes extra time to load projects, and occasionally locks up the IDE for 5-10 seconds for no apparent reason.
- One of the default code refactorings it suggests is eliminating redundant "ToString()" calls. While this is fine in most cases, it sometimes is not appropriate. The idea behind the refactoring is to provide EXACTLY the same output with the same or better performance. Here's the classic example:
int i = 4; string s = string.Format("I ate {0} pizzas", i.ToString()); ReSharper will tell you to remove the ".ToString()" - which will provide the exact same result, since string.Format by default calls the .ToString() method on all objects. However, if you call ToString() yourself before passing to the method, you're passing a reference to a string. If you pass the int, it will box it to an object, pass that object in, and will unbox it back to an int before it can call ToString(), which is additional processing. Granted, it's a tiny amount, but anything that changes the flow of the program should not be done during refactoring. - While ReSharper provides very good support for basic nUnit cases, it does not handle certain situations. If you have two classes within the same namespace, where one is the SetUpFixture, and the other is the TestFixture, nUnit will run the SetUpFixture once prior to starting the testing process. ReSharper ignores the SetUpFixture, so those tests will not run properly, and must be run directly from nUnit.
- It doesn't appear to function quite right for ASP.NET. VS2005 provides several ways to build a web application - you can build a "WebSite", or a Web Application project, which allows you to either work with partial classes much like Windows apps, or the old fashioned way, where all of your server controls and events are declared on a single codefile. ReSharper gets confused sometimes, depending on which model you are using.
- One of the features is auto-generating parenthesis, braces, brackets, etc. While some people may find this handy, I don't, and I've turned this feature off. However, in some situations, they still come up without my approval, and usually just slow me down, since I have to correct them.
Overall opinion I believe ReSharper has some great features, most notably the nUnit integration and the code optimization. However, for the amount of additional overhead it brings (processing time, money, and "undocumented features"), I don't believe it's worth it. I'd like to see a "light" version of ReSharper, or an open-source alternative, but that doesn't seem likely anytime soon. My only alternative is to build one of my own - keep an eye out on my downloads page over the next year or so, and I may just have something. |
Tags: review programming tech
Comments:
Add Comment
Thursday, May 22, 2008 20:14:56
Rate this entry:
Average Rating: 0.0
(0 votes)
There are plenty of opinions out there about Windows, Mac, Linux, Unix, and Solaris. Everyone knows that Windows is by far the most dominant OS for both business and personal use. It's what I use for business, and my own personal development. In my opinion, Windows XP is the best operating system out there.
Many Microsoft users are totally 100% pro-Windows, and scoff at the very mention of Macs or Unix/Linux. I used to feel this way, until I started learning more and more about the open-source world. Developers from around the world have built everything from simple file utilities to full operating systems - specifically Linux. Although there are dozens, maybe even hundreds, of flavors of Linux, they all are based around the same concept - an open source alternative to Windows.
A significant number of people out there use computers for only a few basic tasks - web browsing, email, looking at pictures, listening to music, working on office documents. etc. All of these tasks are available and easy to do with Linux, for absolutely free. Linux costs nothing to the user, along with several browsers (specifically Firefox), office software (specifically OpenOffice), email (specifically Thunderbird), and a huge number of utilities, all of which are free. For these people, once the OS is installed and set up, they'd never know the difference.
I'll be the first to admit that Linux isn't the easiest operating system to use. I have tried and failed several times to make it work - it's just not as friendly a user experience as Windows. Something as simple as installing a program downloaded from the internet consists of several command-line commands. Once you learn how they work, it gets better, but as a beginner to Linux, it's not a lot of fun to have to type those commands. With Windows, just about everything is designed to be one-click, then a Next-Next-Next-Finish wizard. In addition, there are several websites out there that don't function properly outside of Internet Explorer - it's Microsoft's fault, not Firefox's, but it's just reality. So Linux is definitely not for everyone.
Solaris is a name you don't hear every day - it's a Unix-based operating system, from Sun Microsystems. I've installed it a couple times, and found it very similar to Linux, at least from a very superficial point of view. From what I've seen, Solaris is primarily a business/server operating system, and seems to be designed for specific hardware built by Sun. I've heard lots of good things about its stability in this role, as a database server or other business need, but I couldn't really find any advantanges of using it as a personal operating system. If you're going to go with a non-Windows, non-Mac, operating system, I'd pick a nice stable Linux like Fedora or Ubuntu, instead of Solaris.
I don't have a lot of experience with Macs - the last time I used one regularly was in college, when I spent a grand total of probably no more than 100 hours working on Macs in the various computer labs. Never anything exciting like graphics - just regular documents, browsing, and email. All I've seen lately is demos in retail stores - it looks very good, but I just can't get over the 1-button mouse. If you already are comfortable with Windows, I can't see any reason for switching to a Mac. But if you're brand new to the game, or if you're into some of the graphic design stuff that Macs are famous for, then I don't see any reason not to give Mac a try.
So I guess my whole point is to say that Linux and Mac have their audiences. I've actually signed up for a college course this fall to learn more about Linux. As a techie, I feel it's my responsibility to have at least some competence in as many technologies as I can. I doubt it will ever overtake Windows, or even Mac, but I wouldn't be surprised if a lot of people get tired of paying $300 for a buggy operating system (a.k.a. Vista), and make the switch. |
Tags: operatingsystem tech
Comments:
Add Comment
|
|
 |
 |
|