 Monday, June 06, 2005
This is a site I've used more then once:
http://www.lookuptables.com
A good site for ASCII, COBOL, HTML and UNICODE character codes and
translations. It's almost faster then looking at the sheet I have
hanging on my cube wall.
 Friday, June 03, 2005
Do you call yourself a Java developer or a .NET
programmer? Do you think a carpenter
calls himself a handsaw carpenter or a table saw carpenter or a belt sander
carpenter? The point, if it is not
obvious, is that you should not pigeon hole yourself into claiming that you’re
only a one trick pony. Could you imagine
a carpenter getting a job if they walked into contractor’s office and said “I
use a hand saw really well but I’ve never really messed with this hammer stuff?” That carpenter would be laughed out of the
office.
One thing some of the language evangelists forget is that a language,
IDE, framework, OS and the hardware it all runs on are just tools. Humans advance by making tools and then
making better tools. Imagine if we had
stopped at the flint axe because the flint axe evangelists said that the flint
axe was the best axe ever made. At that
point it probably was but eventually we moved from the Stone Age to the Iron
Age and the Steel Age and now you can buy nice steel axes at Home Depot for reasonable
prices. Of course you can also buy a
chain saw and save yourself a lot of hassle.
So what does this mean for you, the sophisticated computer
programmer of today? It means that you
should think of yourself as a programmer.
It may be acceptable to think of yourself as web developer or enterprise
software developer who is fluent in many of the tools of your trade. Don’t get stuck in the rut of your current
tool of choice. VB6 programmers learned
this lesson all too (or should have) well when Microsoft decided that VB as
they knew it was no good and needed to be replaced. Goodbye VB6, COM+, COM, etc, hello .NET, good
bye knowledge, hello training classes.
A good craftsman uses the best tools for the job. If a new tool comes along that can make a job
faster, easier or results in better end products, you can bet that it would be
adopted. However there are always the Luddites
that believe nothing new can be better. So
the advice is to stay agile and keep learning.
If you catch yourself bashing another technology without having used it,
maybe you should reconsider after all right now you could be out hunting bison
with a stone axe, instead of sitting in a nice climate controlled office
sipping lattes and reading this excellent article.
 Wednesday, June 01, 2005
I’ve been
in the habit (well I’ve usually not had a choice) of learning a new language
each year or so. I’ve always had an
interest in scripting languages, this is not unusual as I started my
programming life as a system administrator and I used VB scripting edition for
all kinds of things. I’ve since learned
quite a few languages and some I’ve enjoyed and some I have not. I looked into PERL last year as it is used
where I work and I had read about it in The
Pragmatic Programmer. I was a little
bit disappointed. What a mess. It seemed like a patched together hack and I
was not much more productive then if I had simply used Java or C#. With that out of the way, I was surprised to
see a book published on-line by the authors of The Pragmatic Programmer.
Programming Ruby is a
book dedicated to the Ruby language.
Ruby is supposed to be simple to use and very object-oriented. I have decided that this is the next language
I will dive into. One reason I am
interested is the productivity promised by the Ruby on Rails framework.
Here is a
list of what I am expecting:
- Easy
to learn
- Easy
to use
- Minimal
hassle
- Minimal
quirks
- Free
to use
- Good
for web developing
Some things that I am interested in finding out:
- Data
Access capabilities
- Availability
of editors (code completion, etc)
I will post again once I have read the book and coded enough
to form an opinion of Ruby.
 Tuesday, May 31, 2005
For anyone who has used Norton Ghost to build an image,
Acronis True Image Pro 8.0 will be a breath of fresh air. Here are the
features:
- Easy to use GUI interface
- Can be used inside
Windows XP, no need to boot into DOS
- Reasonably priced, I
purchased my copy for $32.50 from newegg.com, Norton Ghost appeared to be
priced about twice as high
- Can mount images as drives
and browse the contents.
I downloaded it, installed it and made an image in about a
half hour. I did not need to create any 3.5" floppy boot disks ala
Norton. Everything was done inside Windows XP. I love it when you
can buy software quickly, it does what it says its going to do and you can go
on with your life.
*one note, the software is $50 on Acronis' site but can be had cheaper on newegg.com or a similar site.
www.acronis.com
This weekend I had some time so I decided to wipe my PC and start from
scratch. I wiped off my current XP Pro build and installed it
from scratch. This time however I created an image of my clean
install once I had downloaded and installed all the updates, security
patches and service packs for Windows. I installed a minimum
number of drivers so that I can use the build if my devices
change.
All in all it is a pretty smooth transition. I keep all of my
data on a seperate drive from my OS so the transition was pretty
straight forward. I need to start doing this every few months
just to keep things clean.
 Thursday, May 26, 2005
I was reading another great article by Joel on the Law of Leaky Abstractions. Simply stated, programming advances by creating abstractions of complex processes. ASP.NET makes web development simpler. However, it does not relieve us of having to learn CSS, XML, XSLT, XHTML, javascript and C#. Instead we must learn all of these technologies and having done so, we are able to develop web sites more rapidly but we must now know more then we had to before.
This concept is probably best illustrated by TCP/IP Socket programming. No matter how well a library is written you should still learn TCP/IP to use it effectively.
I believe that this is the reason that even as tools, techniques and hardware constantly improve, software quality is not improving at the same rate. The troops in the trenches have to keep elevating thier game to keep up.
The article:
http://www.joelonsoftware.com/articles/LeakyAbstractions.html
 Monday, May 23, 2005
In Prometheus I have a system schema xml file that defines the classes in the target system. For code generation I have found it useful to classify the classes into subtypes. There are generally utility classes such as Lookup which provides the lookup table functionality, common classes such as name, address, email etc which are re usable common classes and then there are business objects. The business objects are the main classes of the system where most business logic is concentrated. Common types like Address may contain some simple validation but not too much if any system level business rules. However a particular instance of Address may have some additional logic.
An Example:
A Home object is one of the main objects in the system. A home has an address. A home also has a customer (buyer) and the customer (buyer) has an address. Address is the common type and Home is the business type.
So here is the topography:
Home.Address
Home.Customer.Address
We have a business rule that says the customer should be able to update his/her own address but not the address of the Home they are buying. This is a place where field level security can be useful. Based on the topography listed above the customer role would have access to Home.Customer.Address.* but not Home.Address.*. The asterisk indicates that the user can have permissions to all fields (value or object type) of the parent object. Our topography gives us a context in which to view two similar objects in a different way. Even though both objects have similar validation and are saved in the same address table they can have different permissions and/or functionality as needed.
This is just one more step in the 80/20 code generation solution. If I can achieve 80% of the functionality I need through code generation and the rest through custom coding then I can greatly enhance my productivity. Code generation is nice in many ways but in this case it allows us to apply a consistent set of generation rules and build hierarchies of objects to which permissions can be applied in a consistent manner.
Here is a web site that aggregates price data from all the major online book sellers and makes its money from referrals to these sellers. I always like to see new and interesting business ideas that can make my life a little easier.
http://isbn.nu/welcome.html
 Tuesday, May 17, 2005
I think that java is good for .net in that the designers where able to
look at java and make design decisions based on what is right and what
is wrong with the java implementation. On the other hand .net is
good for java because many of the great features of .net will find
their way into java via open sources projects and/or additions to the
language.
One place where java is lacking is XML serialization of objects.
In .net this is very trivial and the whole thing can be controlled by
attributes. In java attributes are new to 1.5 and there is no
built in serialization. Fotuneately, java has a huge open-source
community. I've found a product named Xstream which makes object
to xml serialization very easy. A couple caveats: version 1.1
does not handle serializing properties to attributes. Also,
serialization must be controlled through code as java just got
attributes so you can't mark a property with an attribute in the code
to control serialization.
I've used Xstream and it is very easy to use. If you are looking
for a very easy serialization library for java then Xstream is your
best bet. I have not found another library that works like this
and is at a production level.
Here is the link: http://xstream.codehaus.org
I have made some signifigant progress on the ACL security in CHT. At this point the security is implemented using the visible and enabled proeperties
of the controls on the form. I have wrapped the label, input
(textbox, etc) validators and help controls in a an asp:panel (which
renders to a div) so that I can simlply hide the whole thing if the
user does not have view rights to the object. For the edit rights
I simply disable the input if they do not have edit rights.
At the collection level there are add and delete permissions.
These are pretty easy to establish a link for add and delete just needs
to be hidden/visible based on permissions.
An additional issue will be the view permissions in the collection
(list) view of the objects. This could either be handled with
templates or with the same visible = true|false scheme.
So far, so good...
 Monday, May 16, 2005
I’ve implemented two things that
will enable a fair amount of progress.
The first is a lookup table
implementation. Any name/value pairs can be stored and retrieved from the
persistence engine (database, etc). This makes population combo boxes, list
boxes etc very easy. The search is performed on the object and field. So for
instance a type of car could be search by car & category and then all
matching values will be returned. I have built this into the generation code so
that all properties that have an attribute=”choice” will have their UI code load
the choices. This is a possible candidate for
caching.
The second system wide feature is
field level security. This is a typical role based security system where each
user is assigned one or more roles and each role is assigned permissions to each
object, method and field. This is context driven so that that a customer.name
has different permissions then a builder.name. I’ve built an AccessControlList
table in the database and then each field can be queried by its distinguished
name i.e. customer.name. This feature is still experimental but should allow a
very manageable security infrastructure for CHT. This is another candidate for
caching.
© Copyright 2008 Chris Weber
Theme design by Bryan Bell
newtelligence dasBlog 1.9.6264.0  | Page rendered at Tuesday, August 19, 2008 8:51:44 PM (Central Standard Time, UTC-06:00)
|
On this page....
| | Sun | Mon | Tue | Wed | Thu | Fri | Sat |
|---|
| 29 | 30 | 31 | 1 | 2 | 3 | 4 | | 5 | 6 | 7 | 8 | 9 | 10 | 11 | | 12 | 13 | 14 | 15 | 16 | 17 | 18 | | 19 | 20 | 21 | 22 | 23 | 24 | 25 | | 26 | 27 | 28 | 29 | 30 | 1 | 2 | | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
Search
Navigation
Categories
Blogroll
Sign In
|