hollow text or outline text, texture outline path as texturebrush
Just some text outlining code samples toward something I'm preparing for the List(of T) thread.
Neither of these samples were available anywhere else on the internet that I could find..
The pen used on the hollow text sample is actually a black pen alpha-adjusted
(which means that although faint here, could be adjusted to any level of visibility at runtime):
Code:
e.Graphics.SmoothingMode = SmoothingMode.AntiAlias
e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic
e.Graphics.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias
Dim path As New GraphicsPath(FillMode.Alternate)
Using font_family As New FontFamily("Times New Roman")
Using sf As New StringFormat()
'Set alignment near left
sf.Alignment = StringAlignment.Near
'Set alignment near top
sf.LineAlignment = StringAlignment.Near
'Add string to path (or shape path to text string)
path.AddString("Hollow Text", font_family, _
CInt(FontStyle.Bold), 72, Me.ClientRectangle, sf)
End Using
End Using
Using pen As New Pen((Color.FromArgb(85, 0, 0, 0)), 1) 'Alpha pen
e.Graphics.DrawPath(pen, path)
End Using
To sequentially add rows of alpha pen outline text onto a bitmap backbuffer,
and yet have the backbuffer's fill color become transparent,
one way is to use the Bitmap.MakeTransparent method.
Most of the examples out there work with images, pictures from a file, not graphics created at runtime.
Of course there were no examples that used alpha pen outlining or alpha fill colors.
I did find some MakeTransparent code from this post.
Unfortunate I don't like A-Dams' use of:
Code:
gForm = Me.CreateGraphics
So I rewrote things as a Replace(e) sub callable from the Form's Paint event.
His png file also had some anti-aliasing issues so I recreated it as
a non-aliased bmp file and tucked it into the project as a My.Resource.
There was also some alternate color substitution code in this post.
These were the lines of code that interested me
(because I have never really worked much with any of these GDI+ structures):
Code:
Dim cmap(0) As Imaging.ColorMap
Dim ia As New Drawing.Imaging.ImageAttributes
ia.SetRemapTable(cmap)
..so I included the code as a ReplaceColor(e) sub.
It may prove useful in the future for for text outline alpha fill color substitution.
I also found this Chris Ara post that used MakeTransparent with a bmp backbuffer and used it to create a
DrawText_From_BmpBackbuffer(e) Sub.
Finally I created DrawOutlineText(e) Sub that used an alpha pen outline with an alphafill brush to floodfill the interior of the GraphicsPath created with AddString.
Here's the "gotcha" if you use this approach - the alpha fill brush will be affected by the clear color fill call on the backbuffer.
So I left it commented out in the code
(you don't see the fill in the attached screenshot),
but if you want to play around with it just uncomment the line:
Code:
'g2.FillPath(AlphaFillBrush, path)
There may be other ways around this using
FillRectangle with an alpha brush for filling the bmp backcolor
with a MakeTransparent color (instead of Graphics.Clear),
but the examples below are good enough to work with for now,
and try to get out the next revision of the List_of_DrawObjects_test code attached to this post.
Way back in post#48 of this thread I "taunted" followers of this thread with a screenshot of a 3D cube
that had one of the faces filled with texturebrushing a smiley face tiled image.
The issue: the texturebrush tiling wasn't at the same angle as the edges of the cube faces as it was rotating.
I didn't want to post the code until I had some potential solution to this issue.
Right now this is being worked using some special 3 point to 4 point DrawImage warping code in this new thread.
So I feel confident enough to post below the code for the "intermediate step" of 3D texturemapping using texturebrushing.
I spent most of the day searching for a way to "spherize" an image.
That's a Photoshop filter term, but basically it's performing a spherical warp distortion.
I didn't find much, but I cam across an interesting Jack Xu article on CodeProject;
"Spherical Coordinates in C#"
I thought - that's a neat screenshot, I should be able to translate the C#.Net code
and try to get something like that running in VB.Net.
However if you read the comments you'll see that the necessary DrawSphere C# code is "left as an exercise".
Drat!
Some screenshot and probably someone converted the code over to VB.Net.
Score!
However, not so fast.
Even after logging in I could not get the example.zip to download.
The link comes up to a page that says:
Quote:
We have recently made changes to the site and resource you are looking for may have moved.
Please try our search by typing your keyword in search at top and click Go. Again, sorry for inconvenience.
Pf course "example.zip" doesn't come up when you search.
Double Drat!
Dug around a little more and found a place to download chapter 5 of the book which had the pdf text version of the C#.Net code.
Could find any C# source code download link for the book.
So tediously I extract the C# code from different parts of chapter 5 explanatory text.
Then even more tediously I ran the C#.Net code through 3 different C# to VB.Net online convertors.
Errors galore when I tried to paste different version of the converted code into a new VB.Net project.
It took a while but I managed to "melange" the code sets into an error-free state.
This is about my 5th C# to Vb.net conversion so I had an idea of where the translators usually fail
and having done the 3D rotating color cube demo conversion posted above
I sort of knew what the Matrix3D and Point3D class code should look like,
so that just left the Axonometric function, the Spherical function, the DrawIsometricView sub and (last but not least) the DrawSphere sub.
As mentioned in post #14 of the recently resolved Imagewarper thread,
I've been working on a special perlin noise class to provide some background "interest" to those ho-hum VB.Net apps that might benefit from adding a
procedure texture background element.
It's based on one of the hundreds VB.net perlin noise code samples.
Actually there is only one open source VB.Net perlin noise demo in existence, attached to this thread.
I'm also going to included a perlin noise color matrix adjustor app I developed to explore the different settings the PNoiz class might use.
I'm hoping that this IDisposable class can be expanded to a more generic Background PT class (PT = procedure texture generation).
You might ask why the class isn't initialized via a form declare instead of:
Code:
Public Class Form1
Private PNoizDrawer As New PNoiz
Private Sub Form1_Activated(sender As Object, e As System.EventArgs) Handles Me.Activated
PNoizDrawer.Render()
Me.BackgroundImage = PNoizDrawer.PNoizBmp
End Sub
Private Sub Form1_Click(sender As Object, e As System.EventArgs) Handles Me.Click
PNoizDrawer.Render()
Me.BackgroundImage = PNoizDrawer.PNoizBmp
End Sub
End Class
..there's a reason..
Hint:
If you set a form's size to be (600,600) at design time, then at runtime,
what is it's size before the Form Load event completes?
I have been working at making the PNoiz from last post more "developer friendly",
so that instead of commenting and uncommenting code to get different effects you can just use presets.
The blue sky cloud preset took a long time to develop (and is entirely new to this most recent PNoiz2 class version).
In doing so I had a need to use Lockbits marshaling to check various color thresholds on a per pixel basis.
I thought I would be able to use boops boops FastPix library library to do this.
But after working with it to mesh based graphic image deformations in the ImageWarper thread,
I came to the conclusion it would take just as long to extend the PNoiz class
as it would to modify the FastPix class to do what I needed.
Plus there is the advantage of having everything in one class, all "neat and tidy".
No disrespect to the FastPix code - it works great as a simple uncomplicated wrapper
for GetPixel/SetPixel (which is exactly what it was designed to do).
The new ChangePixels sub code is quite flexible.
You feed it a bitmap as the sole parameter and it modifies the colors of individual pixels
by loading them into an separate color array (away from the weird scan0/stride data array that LockBits uses).
I can also see it being able to create procedural texture patterns by using
matrix transform rotation overlays of images generated by fractal code.
Such a sub also facilitates integrating some TPL-basedParallel.For coding in a possible future enhancement..
Of course right now I'm thorough disgusted with the idea of going any deeper into using multi-threading,
based on what went on in the Sprite-as-what? thread.
I had to take a break..and that's why I why I decided to spend several hours today
working on PNoiz2 for to see if I could get some "post-able".
The attachment to post #65 hasn't gotten many "views" (downloads) thus far,
so maybe I'm just wasting my time, but my time has very little value anyway (),
and hopefully the presets version will be greeted better (maybe a couple downloads over the next few years).
Here's the form code that has all the presets so far:
Quote:
Public Class Form1
Private PNoizDrawer As New PNoiz2
Private strPresetString As String
Private Sub Form1_Activated(sender As Object, e As System.EventArgs) Handles Me.Activated
PNoizDrawer.Render(strPresetString)
Me.BackgroundImage = PNoizDrawer.PNoizBmp
End Sub
Private Sub Form1_Click(sender As Object, e As System.EventArgs) Handles Me.Click
PNoizDrawer.Render(strPresetString)
Me.BackgroundImage = PNoizDrawer.PNoizBmp
End Sub
Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
'strPresetString = "1" 'Default light grey perlin
'strPresetString = "2" 'Default light bluish-purplish perlin
'strPresetString = "3" 'Default light red perlin
'strPresetString = "4" 'Default light green tinted perlin noise
'strPresetString = "5" 'Default medium grey perlin noise
'strPresetString = "6" 'Default medium blu-ish purple tinted perlin noise
'strPresetString = "7" 'Default medium red tinted perlin noise
'strPresetString = "8" 'Default medium green tinted perlin noise
'strPresetString = "9" 'Default medium magenta tinted perlin noise
'strPresetString = "10" 'Default medium yellow tinted perlin noise
'strPresetString = "11" 'Default medium cyan tinted perlin noise
'strPresetString = "12" 'Default medium orangish-brown tinted perlin noise
'strPresetString = "13" 'Default dark grey perlin noise
'strPresetString = "14" 'Default dark blue tinted perlin noise
'strPresetString = "15" 'Default dark red tinted perlin noise
'strPresetString = "16" 'Default dark green tinted perlin noise
'strPresetString = "17" 'Default dark magenta tinted perlin noise
'strPresetString = "18" 'Default dark orangish-brown tinted perlin noise
'strPresetString = "19" 'Default dark cyan tinted perlin noise
'strPresetString = "20" 'Default dark yellow tinted perlin noise
'strPresetString = "21" 'Default/preset for perlin noise shaped into blue sky
strPresetString = "Sampler" 'Default to show all samples of all presets
End Sub
End Class
Note: Depending on the perlin noise tinting scheme used,
the texturebrush style hollow outline text from post #61 above can
sometimes provide more of a stand-out contrast than outputting text as a mere DrawString.
I would also recommend using the boops boops' "Demo2.txt" code,
(for doing single point perspective 3D shadowed text) attached to here.
capsule shaped buttons with alpha glow rollover animation effect
Well its been about a month since the last post...
Don't think I've forgotten about this thread or have been on
cruise control (basking in the admiration and acolates of my PNoiz2 module).
No I've been busy setting up a new Windows server for a client,
transfering data from a MySQL Linux database by translating it into a
series of T-SQL (Transact SQL) commands that could be uploaded
via the hoster's web admin Query Analyzer tool.
Then I had to write a VB.net app as a user interface to this data.
It's a very tedious developing the part of the program that uses SQL database code to access and edit the data (via a DataGridView control):
Quote:
Code:
Imports System.Data
Imports System.Data.SqlClient
Public Class frmDGV
Dim sCommand As SqlCommand
Dim sAdapter As SqlDataAdapter
Dim sBuilder As SqlCommandBuilder
Dim sDs As DataSet
Dim sTable As DataTable
Private Sub load_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles load_btn.Click
'substituting the actual real connection string for the fake one below
Dim connectionString As String = _
"Data Source=xxxxxxxx.db.9999999.hostedresource.com;Initial Catalog=xxxxxxxx;User ID=xxxxxxxx;Password=xxxxxxxx;"
Dim sql As String = "SELECT * FROM dbo.Inventory"
Dim connection As New SqlConnection(connectionString)
connection.Open()
sCommand = New SqlCommand(sql, connection)
sAdapter = New SqlDataAdapter(sCommand)
sBuilder = New SqlCommandBuilder(sAdapter)
sDs = New DataSet()
sAdapter.Fill(sDs, "Inventory")
sTable = sDs.Tables("Inventory")
connection.Close()
With Me.DataGridView1
.EnableHeadersVisualStyles = False
.RowsDefaultCellStyle.BackColor = Color.Cornsilk
.AlternatingRowsDefaultCellStyle.BackColor = Color.AliceBlue
End With
With DataGridView1.ColumnHeadersDefaultCellStyle
.Alignment = DataGridViewContentAlignment.MiddleCenter
.BackColor = Color.Navy
.ForeColor = Color.White
.Font = New Font(.Font.FontFamily, .Font.Size, _
.Font.Style Or FontStyle.Bold, GraphicsUnit.Point)
End With
DataGridView1.DataSource = sDs.Tables("Inventory")
DataGridView1.ReadOnly = True
save_btn.Enabled = False
DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
End Sub
Private Sub frmDGV_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.Visible = False
Me.Hide()
load_btn_Click(Me, e)
End Sub
Yes you've seen it all before so let's move past all that boring stuff.
For the UI I wanted some nice capsule buttons with an alpha glow rollover animation effect.
I found this Codeproject that was close.
I had to do a little re-shaping of the graphics to get the capsule button shape I wanted.
Then I had to extended the code example to do multiple buttons.
I figured I would try to add a little uniqueness to each button
by creating the text label of the button at runtime via a a DrawString Command that would have a different rollover color for each button.
Anyway the code and a screenshot is attached below.
Of course this is just a crude starting point.
Personally I would eventually want to get rid of the Picturebox controls, containing the button images, and draw them directly on the form using
multiple rects.
Then you can use rects.contains and GetPixel transparency testing for rollover detection (see the sprite_as_what thread referenced below for examples of this).
However if you do actually want to keep the picturebox controls,
I probably would use an array/collection/List of picturebox controls,
but it's very tedious/involved to do in .Net
(as much as it was easy to do in picbox control arrays in VB6).
Note: You could create a class to help simulate (somewhat) the VB6 way of doing controls arrays with VB.Net code -- similar to the "Public Class ControlArrayUtils" that Patrick Krawec devloped for the "ControlArray.zip" demo (downloadable from this page).
As far as the animation goes you have other options besides just using a timer controls.
The next question is: How many timers do you really need?
For instance it is doubtful you could rollover 3 buttons at once (or within a fraction of a second),
so could you "recycle" some timers so it dfoesn't have to be one per button.
I have to play around with that.
The other option (to use multiple timer threads) is something I would shudder to explore usng the poor multi-thread debugging in the Vb.Net Express version.
I regret I can't upload the .psd (Photoshop file) for the Antigue Gold background with the alpha masking intact
(even zipped, the file is over 3MB - too big to upload with the
forums upload restrictions in place),
but I saved a couple of layers as pngs and attached the..figuring that might help.
The 2 no-text-included capsule button images are in the Resources folder as well as embedded as resources inside the project.
The attached sample also uses my Render.vb module from the sprite as what thread.
I hope this proves it is not just for games.
Recticulation filter, pos interface statusbar versus statusstrip controls
First off - I started a separate thread in case someone had some ideas
about how to simulate Photoshop's Reticulation filter in VB.Net code.
So far no takers, but it is a high end proprietary commericla product, so it was basically a stab in the dark..
Secondly I finally found a nice template that shows how to setup all the functionailty I need potentially in a single page (except for the login screen,
which has to assign the "role" needed to config the main screen for what
is going to be available to do on a per user basis). (see screenshot below).
You'll notice it has a bit of a "VB6-ish" feel to it.
A bit old fashioned, but I like that.
The most difficult part of the interface (surprisingly) is the status bar at the bottom of the main window.
Before anyone brings it up - yes I know the VB6 StatusBar control has been replaced by the StausStrip control under .net.
I use the term "replaced" loosely because it is basically a totally different animal.
I really had no issue with the status bar control under VB6.
It was kind of specialized in what it did - and therefore a bit limited.
But I needed something like a status bar that had some special graphics and/or effects I could always simulate it with a bunch of picturebox controls.
To me the real awkfulness of the statusstrip control is not only its lack of gui/graphic flexibility but the fact that it only has in-built support for a couple of "child" sub-controls.
So why not just use a panel control in which you can nest any other control?
Exactly.
So I'll give a few StatusStrip control links and then we'll move on to something more interesting..
The last link represetns the one and only improvement [IMHO] over the way
the VB6 StatusBar control worked - it wasn't very "smart" about being able
to adjust the way the sub-panels divided up the space.
The "spring" is a nice feature, but not enough to convince me to except the in-built limitations of the statusstrip control.
So, moving on to the StatusBar Class.
If you look at the MSDN documentation I'm sure you'll be underwhlemed.
Microsoft wouldn't purposely "under-develop" that class to make the statusstrip control the desirable choice by comparision, would they?
I'm sure you can probably guess my answer to that question.
Basically it's a "stub" - only there as a lagacy compatibility" feature I'm sure.
But as long as it's there why don't we find a way to use it?
I found just such a StatusBar control example for a guy name Eric Moreau.
The secret to making the StatusBar Class work - OwnerDraw panels.
I won't go into the details here but use the "Source Code" link at the bottom of that page,
because looking at the snippets of code in the article doesn't really explain the "sbdevent" code -- looking a the full demo code explains things fully.
The guy definitely has has earned his MVP status in my view.
I've also been playing around with his BackgroundWorker component as well.
The interface needs to use an unbound datagrdiview control.
There aren't many good examples of this (with succinct rather than voluminous code),
but every once in a while, if you spend hours and hours searching through the social.msdn forum,
someone will provide a link to their SkyBox (because the social.msdn forum don't allow attachment).
Anyway, I've got to go research populating a datatable asynchronously froma remote sql connection so I'll just say "Merry Xmas" and leave it there..
Quote:
edit1: (later)
One of the files from Mike Von's skybox involved loading XML data into a datagridview instead of the normal treeview control.
The project had a lot of hardcoded paths to other drives, so I cleaned it a little
to have all the xml files were referenced (pathed) from within the same project folder.
I also added a treeview xml load routine in the same project so you can
compare and contrast the code methods for loading xml into two different types of controls.
XML is sort of the universal data format of the future so it's helpful to know how to
work with loading xml document nodes into any ui control.
Professionally Colored (as opposed to amateur colored maybe?)
In this thread I have already explored Named Colors, but there is actually something else in .Net
to do with colors called "Professional Colors" that has it's own ProfessionalColorTable class.
So you just use the Professional Colors property to set this for all .Net controls, right?
Actually not.
If you scroll down the MSDN ProfessionalColorTable properties page you'll see it's mainly designed for
strips (like menustrips and toolstrips) and the buttons they contain.
Why didn't they make this for regular command buttons?
Don't know - that to me is the first control than needs a in-built (property settable) custom color gradient..but
since I don't work at Microsoft I have no idea what those guys were thinking?
I'll only mention in passing that there are custom command buttton controls with designer gradients out there if you look around.
Speaking of looking around..
I see a lot of custom toolstrips controls and menustrips controls that make use of this Professional Colors class but one might ask:
"Do you really need to go the custom control route to get the advantage of using the Professional Colors class?"
The attach sample proves that you do not.
The special color table class it contains can be extended to support any set of color gradients
(there's a begin color, middle color and end color - I set beginning color and middle color to dark grey for the look I wanted).
Hopefully you at least take a look at the attached screenshot collage picture full size,
(if your browser shows a lightboxed image preview please click on it
to show the thumbnailed screenshot collection unscaled)
before deciding if this is something you might be interested in.
I like the fact the bottom color is "subtle" and not "screaming" at you like this.
It's designed along the same lines as the subtlely colored alpha fade buttons back in post 67.
Ini Sampler update and marquee style progressbar with custom color class
Someone notified me that the ini file sampler back in post 4 was "too hard" to work with
because it had two projects inside the solution instead of one.
So attached is a ini sampler revision where it's all one project and I even set the default private.ini to load in the form load event automatically.
How can I make it any easier?
I also recently found a class code snippet that suggested you could have custom marquee colors for a standard progressbar control.
I don't know about you, but I get pretty tired of seeing green used 90% of the time (with red and yellow used for the rest).
What about blue or purple?
There were some custom controls out there that supported these colors,
but why go the custom control route if you don't have to..
Anyway I wrapped the class code in a little test project and attached it below.
Oh..and I know, now that I posted something with a progressbar control, someone is probably going to ask about:
"How do you use a standard marquee style pressbar control with a Backgrond Worker thread?"
So I guess I'll attach a super-basic example of that as well.
complex 3D wireframes with multiple selectable objects and backface culling
By special request from CodeCruncher in this thread I'm attaching a special complex wireframe 3D viewer demo.
The screenshot shows the combobox dropdown where objects are selected and this ties in directly with
the checkbox to show (or not show) the selected objects with yellow highlighting.
I've been really fascinated by the way the .Net IDE handles resources.
However it wasn't until boops boops accidently posted a resx file (in place of a form.vb file) as an attachment to this post in the Imagewarper thread that I found myself looking around for a way to read .resx files.
My solution in that thread was to use SharpDevelop to view the file but I figured if SharpDevelop could view that file there must be some .Net code floating around the internet on how to do this.
What is a resx file?
Essentially its xml code.
XML is not really a language, but a set of rules for making up markup languages in a systematic (defined) way.
Personally I think that it will become the standard way (if it is not already) to do data interchange in the future.
However markup language based on xml are basically just text.
If there was a standard by which pictures/ image /graphics could be represented as xml text then it would be an important thing.
That's what a resx file does.
As it turns out the parts of the .Net framework to work with .resx files have been around since the v1.1 of the .Net framework.
If you dig through the SDKs for v1.1 and v2.0 you'll find some resx writer samples.
However what I wanted to do is to be able to extract an image from a resx file, view it on screen, maybe edit the image, and then be able to save the edited image or swap out the image or add multiple images to replace it.
I have looked all over the internet for any VB.Net code to do this and there is nothing.
I did find some C#.Net code that I was able to work into a resx file editor then can view and swap out images stashed inside a .resx file.
I'll attached it below.
Despite using all three online C#.Net to VB.Net convertors the code has proven "resistant" to converting to a VB.Net version.
If anyone wants to take a crack at the conversion be my guest.
Reading through the various .Net forums you'll frequently read:
Quote:
It's no problem to use the online C# to VB.Net translators to convert a project.
My own opinion - it's never as easy as they say.
So why doesn't the .Net IDE have a one button translator?
I don't think it was that easy (or transparent) for even Microsoft's own VS.Net team to develop a one button translator wizard.
Anyway what all the weeks/months of online research taught me is how very very small the VB.Net coding "universe" is on the Internet.
Most .Net code samples are C#.
They are many times more VB6 code samples for doing sifferent things then there are VB.Net samples.
This overarc-ing inadequacy isn't talked about much of the forum.
It just never seems to "come up".
But it's always in the back of my mind everytime I come across a task that should be a simple commonplace task,
which should have dozens, if not hundreds of VB.Net code snippets and examples online,
but when I go looking the code isn't there or I have to piece together a function or sub from a bunch of code snippets found widely scattered.
..and then there is the issue of non-DirectX, non-XNA, 3D texture mapping using VB.Net (please see next Frustrations Part2 pst below)
You see I posted the code for a complex 3D wireframe viewer back in post #71 of this thread.
I was hoping that CodeCruncher could get around to adding texturemapping.
However it's been a while and as of post #52 of the Intersecting lines thread no 3D texturemapping code has yet surfaced.
So I eventually went back to the other idea I had.
Remember back in post #48 I posted a screenshot as (an attachment) of using texturebrushing to texturemap the face of a 3D cube.
The actual 3D texturebrush texturemapping code is attached to post #63 of this thread.
The only issue is that the texturebrushing is at the wrong angle and not skewed.
I'm thinking that if the texturebrushing could be rotated using matrix rotation before
being applied to the cube face, then things might be a little better.
To do this though you need to be able to calculate the angle at which to do the rotation.
I have no idea what kind of trigonometry match is needed to do this,
but I experimented a little trying to extract the line that represents the "edge" of a cubeface
so from these lines some kind of angle calculation could be done.
I'll attach below what I was able to come up so far.
I'm sure passel know what type of trig math is needed.
Maybe others would know also but I'm sure he is the best person to "down translate" the solution in a way I could understand.
The other option is to try and improve his (passel's) 4pt version DrawImage to
work to warp-distort a graphic picture at any angle for any type of 4 point polygon.
Anyway, I know the exact code for either approach is not to be found lying around anywhere on the internet
(within the horribly tiny pool of publically available VB.Net code).
That's about all there is for a February grab bag of stuff.
Sorry my frustrations didn't amount to much more in the way of exciting new code.
At the risk of gravedigging I decided this thread needed one last wrap-up post before I go..
I said in the first post of this thread:
Quote:
The other reason that this thread exists, even if no one else gets any use out of it, is that I'm a really lazy programmer.
It's easy to be lazy when you are a hobbyist type programmer who doesn't have a deadline looming and the choice is:
1.) Do I do some coding today or
2.) Just take a nap or turn on the TV and veg out.
As long as this thread remains alive I have a reason not to grab the remote or hit the pillow.
I know it's a stupid rationalization for someone who is weak-willed but there it is..
Well things have changed.
After literally years of trying to find a job someone has actually hired me for full time phone support work.
I don't know how long this job will last (the company is undergoing some financial economic "stress" presently),
but it's better than sitting around doing nothing.
I'll be moving to try and cut my daily commute time under 4 hours daily.
To facilitate the move-related expenses I'll be selling off my desktop computer.
I have made the decision that this is the last desktop computer I will ever own.
My new place doesn't have an internet connection.
If I decide to pay for an internet connection in the future (after I have a few paychecks under my belt)
my next computer (and any future computer I decide to buy) will be a laptop.
Until then I will be spending a while in "offline mode".
I miss succumbing to the siren call of the xvbt forum, but, what can I say, sometimes real life intervenes.
Goodbye..take care.
The ASP.NET 2.0 Anthology
101 Essential Tips, Tricks & Hacks - Free 156 Page Preview. Learn the most practical features and best approaches for ASP.NET. subscribe