Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

I use Skype frequently but almost never for video so I consider it a coonvenience rather than the devil's handiwork. I would say that 90% of the time I use it for interactive messaging and the other 10% to save on long distance charges to talk to my older son. The video never works that well anyway.

Incidentally, did anyone see episode 5 of Silicon Valley where the head of the Google clone is trying to use the latest tech to communicate with an employee? It's priceless. First he tries holography (a technology purchased for 2 billion from a startup). This fails miserably. Then he tries Skype which also cuts out followed by the same thing over cell phone. It's a great example of how often the technology fails to live up to the hype.

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

Who is to say how technology will impact your career. For example, I was a real-time programmer for a major electric utility (generation, transmission and distribution). You may recall a few years back when they had that cold fusion fiasco. As unlikely as it was to be real, had it been real it would likely have bankrupted my company. Even though the distribution network would still be needed, how do you pay off the massive debt incurred by building hydroelectric dams that are no longer needed? The product your company makes today could be made as obsolete as buggy whips by the most unforeseen tech change.

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

According to your earlier post, 62 should translate to ba. My point is that once you have ba how do you know if it should translate back to 62 or 1 (b) and 0 (a)?

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

In true Microsoft fashion they have made the download process so counterintuitive that your chances of getting what you want is near impossible. Fortunately someone has created a "simple" 12 step process. For yuks, see also here.

And to see how little things have improved see Bill Gates Chews Out Microsoft Over Windows XP

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

“The worst illiterate is the political illiterate, he doesn’t hear, doesn’t speak, nor participates in the political events. He doesn’t know the cost of life, the price of the bean, of the fish, of the flour, of the rent, of the shoes and of the medicine, all depends on political decisions. The political illiterate is so stupid that he is proud and swells his chest saying that he hates politics. The imbecile doesn’t know that, from his political ignorance is born the prostitute, the abandoned child, and the worst thieves of all, the bad politician, corrupted and flunky of the national and multinational companies.”

Bertolt Brecht

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

It will take less space than creating code for each special case. Your mapping is not reversible. For example, how will you determine if the string "aba" should be grouped as "a", "b", "a", or "a", "ba"?

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

You've never heard of Google?

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

That's not what I asked for and your explanation still does not make sense (I'll assume language diffferences). I asked for sample input and sample output but perhaps we can work with this. What you have is a straight mapping of a continuous set of integers to string. I can't see any obvious way of generating the mapping via code other than creating an array of integers and just indexing to get the resulting string. For example, if you take your list and create a file with one line per entry as in

Map.txt
=======
a
b
c
d
e
.
.
.
arM
arN
arO

then you can define

Private map() As String = = System.IO.File.ReadAllLines("map.txt")

To convert an integer to its corresponding string you just do

If num >= 0 and num <= Ubound(map) Then
    str = Map(num)
Else
    str = "?"
End If

I have no idea how this relates to

(b(a(a to 9) to 9(a to 9)) To 9(a(a to 9) to 9(a to 9))
Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

You can replace text by setting the properties SelectionStart and SelectionLength then replacinig the selected text by assigning the replacement string to SelectedText. If you set SelectionLength to 0 then the text is inserted at the given point. For example, to insert a string at position 20, do

RichTextBox1.SelectionStart = 20
RichTextBox1.SelectionLength = 0
RichTextBox1.SelectedText = "inserted string"
Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

Somehow I think we are getting lost in the explanation which is unclear. I can't make heads or tails out of your description. Can you perhaps just give us some sample input and what output you expect to get? I suggest you avoid terms such as "like" because what I am looking for is exact input and exact output.

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

Sometimes you want to add a little functionality to an existing class but you don't want to go to the trouble of sub-classing. A technique that you can use is known as Extending. For example, I frequently use regular expressions when working with strings. Wouldn't it be nice if strings supported regular expressions directly, but because they don't I have three choices:

  1. sub-class the string class and add the functionality
  2. write a separate function that takes a string and a regular expression as parameters
  3. Extend the string class

Extending can only be done within a module so to extend the string class create a module and call it StringPlus. Replace the module code with

Imports System.Runtime.CompilerServices
Imports System.Text.RegularExpressions

Module StringPlus

    <Extension()> Public Function MatchesRegexp(str As String, strexp As String) As Boolean

        Dim rexp As New Regex(strexp)
        Return rexp.IsMatch(str)

    End Function

End Module

Note that vb knows that you are extending String because the first parameter of your sub is of type String. When you invoke this method, the string will not be included as a parameter (see example below).

Now in the rest of your project you can use MatchesRegExp just like any other string method. For example

Dim pn As String = "633-0828"

If pn.MatchesRegexp("^[2-9]\d{2}-\d{4}$") Then
    MsgBox("is phone number")
Else
    MsgBox("is not phone number")
End If

While coding, your extension methods will appear in the intellisense pop-up lists.

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

That's why I said "strictly speaking". Technically the war has not ended. North and South Korea are currently in a cease fire so the war is still ongoing. They just aren't shooting at each other at the moment. That's not a win. That's a stalemate.

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

I think they'd like to forget most of them. They didn't win in Viet Nam. They didn't win in Korea. They didn't win in Iraq or Afghanistan. True, they got Hussein but look at the aftermath. Is Iraq peaceful and stable after "liberation"? Has the Taliban been crushed in Afghanistan? Both countries are in total disarray more than a decade after American troops went in. Has America won the war on terror? Al Quaeda is better organized and has grown steadily since 9/11. Every action the US has taken in the middle east has only guaranteed ever increasing recruits for the terrorists and US citizens are gradually giving up all their rights as government repeatedly cries "it's for your own good". Doesn't sound like "winning" to me.

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

Even though it is unmaintained, why should you stop using it? I am currently using version 7.1a. It does everything I require so even if there are no further versions I will continue to use it as is and be quite satisfied.

But...

This article states that Truecrypt is alive and well and living in Switzerland. While the original authors are no longer maintaining TrueCrypt, perhaps the project has found a new home.

Hiroshe commented: hope the project lives on +0
Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

Go to Organize, then Folder and Search Options. In the Folder Options dialog box, select the View tab. Scroll to the bottom and you will see

When Typing into list view
    o Automatically type into the Search Box
    o Select the typed item in the view

Make sure you have the second option selected. I suspect you are using the first option. Make sure you click Apply to Folders after you click Apply.

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

It is possible to portray higher dimensional objects in lower dimiensions but the result always contains distortions. Just look at maps. Most maps (in the projection which is most commonly used) show Greenland as inordinately large.

In the same way we can portray a cube in two dimensions

cbd01b4660a6ec4ebad71de589f69069

and a tesseract (hypercube or four-dimensional cube) in three dimensions (putty and straws work well), or even two dimensions.

96be8ebd9e9223c99aa3846a1f01d57a

It is also possible that we cannot perceive other dimensions because of scale. When standing on the prairies we perceive the world as flat, not spherical, but from space the actual shape is apparent. If you were reduced to the size of an ant and were standing on a soda straw you could berceive the surface as cyllindrical, but if you were the size of a microbe your perception would be substantially different.

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

When I was a little boy (many moons ago), an hour long TV show had almost an hour of show. For example, Adventures in Paradise (not a porn movie but a drama/adventure show from the early 60s) was around 52 minutes including 2 minutes of teaser and opening credits and 1 minute of closing credits. That left only 8 minutes for commercials. A recent episode of Castle, meanwhile, was about 43 1/2 minutes with 30 seconds of closing credits. Aside from the extra commercials (which now seem to happen every 6 minutes or so instead of every 15) I now have to put up with opening credits being splashed across the screen for the first 10-12 minutes of the show (who gives a rat's a$$ who the third assistant producer is) as well as the annoying ads that are continuously popping up from the bottom of the screen. I don't care what show is "coming up next". I'm interested in what's on right now. A lot of these shows rely on willing suspension of disbelief in which you are supposed to become immersed in the fantasy of the show. This is difficult when the credits, pop up ads and commercial breaks continuously pull you out of the fantasy.

And the networks' brilliant response to declining viewer numbers caused by excessive commercials is to add yet more commercials to make up for lost revenue. If they add any more commercials to The Big Bang Theory what we will be left with …

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

I've been programming since the 70s and I still haven't created one.

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

One huge mistake I see here too often is asking others to do your homework for you. Ask for help if you need it but make the effort yourself first. And don't wait until the last minute to get started. The rule of thumb is the first 90% of a project takes the first 90% of the time. The last 10% takes the other 90% of the time.

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

vb.net 2010
Windows Pro 7

Create a Video Library with an Embedded Windows Media Player

I have close to 400 video clips in my home movie library. In order to quickly locate any given video I have added certain words into the file names. Even so, locating specific files is clumsy from the Explorer window and playing a clip requires starting an external application and flipping back and forth between Explorer and the media player. That's why I decided to embed the media player directly in the application.

Given a choice, I would have preferred to embed vlc Media Player, however, extensive searching on a procedure to do this proved fruitless. I followed the youtube videos to the letter and got only errors when trying to add the vlc control to my form. As such I was reduced to using Windows Media Player (which supports fewer formats).

I am going to present my application in four parts

  1. Introduction to Alternate Data Streams
  2. Comment text interface code
  3. Embedding Windows Media Player
  4. Adding the functionality

You can only store so much information in a file name before it becomes unwieldy. A better approach would be to store a few useful tags such as date/time, location and names in the file name, then store more descriptive text in a file comment. While Windows provides the capability of adding comments to files, this is available for only certain file types, and the comments cannot be manipulated via code. This is …

ddanbe commented: Great! +15
Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

The Amiga booted into an actual operating system, not an mmos.

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

My first personal computer was a Commodore 64, followed ASAP by an Amiga 1000. The first computer I ran a program on was an IBM 1620.

Stuugie commented: The 64 was my first experience with a pc. +0
Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

Try downloading a linux livecd and booting off that. Copy the files to another folder/device then delete the bad folders.

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

My nephew had a tattoo done in 2009 that he said was extremely painful. The artist got halfway through and asked if he wanted to wait until the next day to complete it. The response was "If I get out of this chair there is no way you'll ever get me back into it."

31d99f70c037d387cbe8be6914a3aa2b

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

The one thing about most languages is even if you lose the indentation you can always recreate it. In Python, if you lose the indentation you are pretty much screwed.

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

You should be able to figure that out from the code. You can take

sheet.Cells(row, col) = item.SubItems(i).Text

and put headers/text in any cell you want. Just change the values for row and col to select a specific cell and replace

item.SubItems(i).Text

with the string you want in the header cell.

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

The outdoor set for the Star Trek episode, "Miri", is the same set used for Main Street, Mayberry in "The Andy Griffith Show" but with garbage and debris added.

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

Regardless. You are still asking for someone to do your homework for you. You haven't shown us that you have put in any effort.

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

You don't need a datareader. All you need to know is if you have a record that matches the username and password.

cmd.CommandText = "SELECT COUNT(*) FROM userinfo" &
                  " WHERE usname =     '" & textbox1.Text & "'" &
                  "   AND [password] = '" & textbox2.Text & "'"

If cmd.ExecuteScalar <> 0 Then
    'user is valid
Else
    'user is not valid
End If

But you should really use parameterized queries

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

The reason is that

Me.Controls("CheckBox" & i)

evaluates to a generic control and while a generic control has a Visible property, it does not have a Checked property. That is why you have to cast it to the correct control type first. You could also use a more specific for loop which enumerates only CheckBox controls.

For Each cbx As CheckBox In Me.Controls.OfType(Of CheckBox)()
    cbx.Checked = False
Next
Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

Then you can get the next available ID number by

SELECT nextID=MAX(ID)+1 FROM mytable

Just remember not to specify ID when you save the record or you will get an error.

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

The good part is there is never a problem making decisions (and you can still get advice from other people - you just don't have to take it). The bad part is there is no one else to blame when things go into the toilet. Here's a quote from the workplace...

I didn't say it was your fault. I just said I was blaming you.

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

This is just too good not to share with everyone.

The only reason coders' computers work better than non-coders' computers is coders know computers are schizophrenic little children with auto-immune diseases and we don't beat them when they're bad.

From Programming Sucks. A must-read.

pritaeas commented: Brilliant +0
Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

In the last week or so I posted a new tutorial on creating and managing background threads. You can find it here.

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

Not to mention idioms. How do you translate "have a ball" into another language and have it mean the same thing? There's a big difference between knowing the words, knowing the language and knowing the culture. There's an old Dutch (according to my dad) expression, "he landed with his a$$ in the butter". I would guess this is untranslatable (at least so that it makes sense) by any software.

ddanbe commented: LOL :) +15
Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

You can also see from the *.Designer.vb file that there are other properties that you may want to set. You will also have to add event handlers at runtime. You can see how to do that here.

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

I find the easiest way to figure this out is to place the controls in the IDE then look at the <form>.Designer.vb file that is created when you save. If you do that the sequence becomes (with a little rearranging for personal taste)

  1. Create the tab control and add it to the form
  2. Create the tab pages and add them to the tab control
  3. Create controls for the individual tab pages and add them to that page

Here is some sample code to use on a blank form

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

    'Create the tab control and add it to the main form

    Dim tbc As New System.Windows.Forms.TabControl()
    tbc.Location = New Point(10, 50)
    tbc.Name = "tbcMyTab"
    Me.Controls.Add(tbc)

    'Create three tab pages and add them to the tab control

    For i As Integer = 0 To 2
        Dim tbp As New System.Windows.Forms.TabPage()
        tbp.Text = "Page " & i
        tbc.Controls.Add(tbp)
    Next

    'Create a text control and add it to the last tab page

    Dim txt As New TextBox
    txt.Text = "default text"
    tbc.TabPages(2).Controls.Add(txt)

End Sub

Keep in mind that unless you declare tbc at the class level you will have to refer to the control in other subs/functions as

Dim tbc As TabControl = Me.Controls("tbcMyTab")
tbc.TabPages ... etc

The same thing applies to any other controls you add to the tab pages.

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

We have an elderly friend who takes medication for a heart problem. Unfortunately, she believes all the nonsense spouted by the modern snake oil peddlars so whenever something new comes along (the most recent was the blue-algae pills) she stops taking her meds and starts taking the new stuff. Every time this happens she eventually ends up in the hospital where she gets put back on her meds until she is stable. This has been the case for magnet therapy, honey, birch water, oxygenated water and who knows what else. Hospitalized every time. All these bullshit treatments come at a ridiculous price.

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

Sometimes there are functions you want your program to perform in the background while you are busy doing other things. For example, if you are building a picture viewer application you may not want to wait until thumbnails are generated before getting on with the business of viewing the pictures. If you have ever used the FastStone Image Viewer you will have noticed the progress bar at the bottom of the screen when browsing to a new folder. That bar shows the progress of a background thread which is busy scanning the current folder. If you try to change the sort order of files during the scan you will get the message Background thread is busy scanning the current folder. Try again later.

Implementing background threads can be easily done (but with a couple of gotchas). I hope this tutorial will be enough to get you started.

Development Environment: vb.net 2010
Development Platform: Windows 7 Pro (32 bit)

The following form will be used in the tutorial:

The objects are as follows:

frmBGTest   the main form

    .Text = "BG Test"

btnStart    Button

    .Text = "Start"
    .Enabled = True

btnStop     Button

    .Text = "Stop"
    .Enabled = False

Label1      Label

    .Text = "Foreground"

Label2      Label

    .Text = "Background"

lblFGStat   Label

lblBGStat   Label

bgwThread   BackgroundWorker

prgThread   ProgressBar

    .Dock = Bottom

This example will run a background thread for 30 seconds. Progress of the thread will be shown by three different indicators. A progress …

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

Try just

sqlCmd.Parameters.AddWithValue("@teamMemberEmpID", teamMemberEmpID)
sqlCmd.Parameters.AddWithValue("@start", start)
sqlCmd.Parameters.AddWithValue("@finish", finish)
Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

There's always ReactOS

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

Who wants to be seen by clients discussing grey hat matters on bing?

For that matter, who wants to be seen on Bing?

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

Once again I missed a chat. At 16:27 I noticed Chat (1) at the bottom of the screen. When I checked the shoutbox I saw that Learner10 had posted more then three hours earlier. Could it at least be an option in the profile to enable a popup if a Chat post is made when the shoutbox is closed? If not a popup then something more obvious than Chat (1)? I know it goes against "everything you learned about UI design" but I am reminded of an episode of The Simpsons where Bart pretends to fall down a well (using a walkie-talkie). In the end, Willy "fixes" the problem by putting up a small sign saying "caution well" 100 feet from the well. A notification that does not catch the eye is of no use to anyone and that goes against everything I ever learned about notifications.

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

A security audit of the free and Open Source encryption utility, TrueCrypt

"found no evidence of backdoors or otherwise intentionally malicious code in the assessed areas," and that the found vulnerabilities "all appear to be unintentional, introduced as the result of bugs rather than malice."

A summary of the results can be found here.

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

If you use BigInteger as in

Private Sub FibWrite()

    Dim sw As New System.IO.StreamWriter("d:\temp\fib.txt")

    Dim n0 As BigInteger = 0
    Dim n1 As BigInteger = 1

    Try
        For i = 1 To 1000
            Dim iTemp As BigInteger = n1
            n1 = n1 + n0
            n0 = iTemp
            sw.WriteLine(n1)
        Next
    Catch ex As Exception
        Debug.WriteLine(ex.Message)
        sw.Close()
    End Try

    sw.Close()

End Sub

The 1000th number in the sequence is

70330367711422815821835254877183549770181269836358732742604905087154537118196933579742249494562611733487750449241765991088186363265450223647106012053374121273867339111198139373125598767690091902245245323403501

And the 10000th number is

54438373113565281338734260993750380135389184554695967026247715841208582865622349017083051547938960541173822675978026317384359584751116241439174702642959169925586334117906063048089793531476108466259072759367899150677960088306597966641965824937721800381441158841042480997984696487375337180028163763317781927941101369262750979509800713596718023814710669912644214775254478587674568963808002962265133111359929762726679441400101575800043510777465935805362502461707918059226414679005690752321895868142367849593880756423483754386342639635970733756260098962462668746112041739819404875062443709868654315626847186195620146126642232711815040367018825205314845875817193533529827837800351902529239517836689467661917953884712441028463935449484614450778762529520961887597272889220768537396475869543159172434537193611263743926337313005896167248051737986306368115003088396749587102619524631352447499505204198305187168321623283859794627245919771454628218399695789223798912199431775469705216131081096559950638297261253848242007897109054754028438149611930465061866170122983288964352733750792786069444761853525144421077928045979904561298129423809156055033032338919609162236698759922782923191896688017718575555520994653320128446502371153715141749290913104897203455577507196645425232862022019506091483585223882711016708433051169942115775151255510251655931888164048344129557038825477521111577395780115868397072602565614824956460538700280331311861485399805397031555727529693399586079850381581446276433858828529535803424850845426446471681531001533180479567436396815653326152509571127480411928196022148849148284389124178520174507305538928717857923509417743383331506898239354421988805429332440371194867215543576548565499134519271098919802665184564927827827212957649240235507595558205647569365394873317659000206373126570643509709482649710038733517477713403319028105575667931789470024118803094604034362953471997461392274791549730356412633074230824051999996101549784667340458326852960388301120765629245998136251652347093963049734046445106365304163630823669242257761468288461791843224793434406079917883360676846711185597501
Begginnerdev commented: Very nice :D +9
Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

In my pre-retirement job, mistakes were tolerated (everyone makes one from time to time) but it was a given that if a mistake was made that it would be corrected. My calling Microsoft's decision boneheaded is not intolerance. It's an opinion. And judging from Microsoft's reaction, it is an opinion that is widely shared. Microsoft took a big hit to their credibility with Vista and they responded with Windows 7. Presumably Windows 9 will be to Windows 8.x what Windows 7 was to Vista.

Yes, Win95 was worse but if you consider the evolution from DOS, then Windows 3.x, successive versions of Windows have tried to improve on previous versions with a few stumbles along the way.

But WinMe was just crap.

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

Speaking of the commend shell, why is it I still have to use context menus to copy/paste when just about every other app uses CTRL-C and CTRL-V?

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

they likely also wanted something new and shiny to justify selling a new OS

I definitely agree. Ooooh. Shiny. Must have.

Supporting tablets is worthwhile but forcing a touch-based interface (Metro) on laptop/desktop users was a big whoops. My former place of work has a few thousand computers and I can see the Metro interface being useful for only a very few employees.

Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

What I would like to see out of Microsoft is some centralized planning. Back in the days of the Amiga, the entire OS was designed from the ground up as a hierarchy of objects. There was little, if any duplication. Every system function was well documented (I think I still have the manuals somewhere) and made publicly available to all. As a result, applications could make use of a robust software architecture.

Microsoft, on the other hand, is run as a collection of "empires". When some functionality was needed, each group (either because of lack of communication or central planning, or the mindset that "we can make a superior module") rolled their own. The result was massive code bloat. The entire Amiga OS (graphical interface, full multitasking, multiprocessing and messaging) fit on one 720K floppy.

And let's not forget the many instances of undocumented system calls that were kept secret (for the most part) to give Microsoft apps that little edge in performance and features.

Tcll commented: so there lies the start of MS shoving their heads up their A's +2
Reverend Jim 5,225 Hi, I'm Jim, one of DaniWeb's moderators. Moderator Featured Poster

I hear it's 100x more secure than XP

How would you even measure that? That sounds like a blanket statement made by someone who is just pulling numbers out of his a$$.

Because MS plans to implement updates designed to turn Win 7 into what he called 'Win 8 lite'

That will never happen because Microsoft would face massive lawsuits from millions of corporate users.