Thursday, November 15, 2007

Agile Excitement

I've been listening to Dismemberment Plan a lot more lately. Perhaps it's causing the excitement I used to feel when I was learning and in college.

Regardless, I've been learning and implementing a few things at work recently.
  1. Scrum. At our old school bi-weekly software meeting, I advised everyone that I wanted to start a scrum for the "Software" group project, which actually includes four people and probably 15 projects. Two are major and have been worked on for over a year by one or two people part time. I asked everyone to edit the wiki and add tasks that were on their personal lists, with due dates and the amount of time it would take them to finish it. They are doing this. This will become the product backlog, once I find better software to track and manage the priorities. I installed Tackle, and got it working. But I like the functionality. It's written with the new .NET 2.0 (ASP) data controls, and aren't very efficient for users. It's clumsy, and I'm having hte same problem in my first ASP.NET app that's used for auditing OCR images. Anyway. We have a product backlog. I will be prioritizing it while away on vacation in the coming week (Thanksgiving), so we can start a sprint when we all get back. I'm excited because I've run through two 2 week sprints with my own tasks, and it works better than the cowboy shit we were doing.

  2. Test Driven Development (TDD). I'm reading an article by Laurie Williams called "Agile Testing", which gives a very detailed example for using TDD with JUnit to set up a monopoly game board with users and such. Test Driven Development is where you write the test, first, before writing the code. The process is: Requirements -> Design -> Failed Unit Test -> Code -> Passing Unit Test -> Commit to SVN. This is basically what it means. So, the difference between what I'm thinking, and what this article says, is that I'm going to be using PyUnit and NUnit for different compliers and code. We might have to make some sort of xUnit for our firmware and assembly if we're to test and compile on the post commit hook in SVN...but I'm sure we'll get to that later. Four things have happened now that I've read this.

    1. Professors write better articles than professionals (i.e. O'Reilly).

    2. My Object Oriented skills need some work. I know that they're bad, but I wasn't trained as a software person...so let me write one .ASM file and get it over with, k? (no, really, I will be working on this for the coming designs.)

    3. TDD makes all of the problems I was having in my mind regarding development disappear. That sentence might not make sense to you, but basically, I think about my job all day and night. I don't think about how to solve the coding problems (those are easy), but the management and project problems. I'm very good at abstracting things, as well as drilling things down. I need a lot of work and TDD will most definitely make me a better professional software person.

    4. Even if I don't get a new job soon (where I can implement some of these things as a manager, or be told to utilize these advances as a junior developer), I will weasel my way into these old skool Japanese managers' styles and insert my own. The whole point of TDD and Scrum is to work from the bottom up, not the top down. Well, me and my software guys are the bottom of one of the 5 biggest companies in the world (circa 2000).

  3. Informally: eXtreme Programming (XP). I moved my cube next to the other full time software guy, and took down the wall between us. He was cool with it because we could collaborate better, and everyone else (except the CEO) was ok with it. I'll convince them that we'll be quicker on generating good code for them. We're in a position to sell tons of stuff to Asia and Europe...so I have to get ready for my first real public test (ok, Hyundai wasn't that bad). I know some of the ports liked my GUIs, but I hated them. I guess that minimalist approach (as well as centralizing software and updates) is a better design than what they get from SAIC or something...I don't know. I can't imagine that anything I do is better than anyone else in the world who writes code. I guess it works, and that's what they like, right? ANYWAY...time to make my stuff better and faster :).

  4. .NET 2.0 and 3.5, Python, SQL Server, and (possibly in the nearer future) java. Infrastructure. I'm doing it. I got some internal servers set up. The first two linux boxes these guys had, as well as the first three Win2003 servers were set up. I pushed for DNS server, Apache and IIS, SQL Server, MySQL, public FTP, public HTTP, VPN (required a new Cisco PIX), and other major changes. I RAID'ed all of the linux boxes, and wrote backup scripts. I forced the new software people to learn and use .NET2.0, and have been slowly feeding them 3.5 technology (Linq, XLinq, WCF, etc) to see what they think. I was the first person to write using Python, and now all of our services that we sell are written in Python (and async Twisted of course). I'm re-learning java to see if we can transfer any tech or projects to that instead of heavy C++ or not-strongly-typed-yet-immutable-strings python.
Wow, /me pats self on back. I've done quite a bit for the infrastructure. I'm getting it where it needed to be, now it's time to code like an Agile (Rock) Star (without the drugs, chicks, and fame). Maybe someday soon I'll look at applying to grad school so I can pick a field that's more specialized :).

Monday, November 05, 2007

Purdue University

I'd like to personally thank the university where I received a degree from, for allowing me to find and learn the following things on my own:
  1. Agile Development
  2. Test Driven Development (TDD)
  3. NUnit/PyUnit/xUnit/etc
  4. Scrum
  5. eXtreme Programming (XP)
  6. Pair Programming
  7. Good unit testing
  8. java
I guess it was my fault for being interested in a subject that requires a PhD for consideration of interviewing (VHDL and circuit board layout), and then falling back to a software position after graduation. I guess that's no body's fault but my own.

Tuesday, October 30, 2007

Agile

After reflecting on the direction of my career, I realized that I am not fit to be a programmer or a hardware engineer. I studied to be a hardware designer (firmware, chip level, and board level), but quickly became discouraged because there were only software jobs. I learned how to write software better, and that's what I've done ever since. Now I'm at a point where I have experience...but guess what. All of that Linux and Solaris (even being a T.A. in a C Programming class on Solaris boxes)....they all think I know too much about Windows.

Well, I realized that I'm fit to be a manager instead. Not a project manager, but a department head. Someone that develops other managers and provides resources for them to perform their job effectively.

Wait. But how do I get there? I'm just a Development Manager right now, working undercover as a Development Engineer.

Well, I have a feeling I'm not getting the right experience for my new goal. So my new job and outlook for jobs will be to look for project management positions and tell them I know how to lead a group and Agile and all that.

But I want to tell the truth...like I always do in interviews. Humble Ben never getting job offers due to his extreme modesty.

So, I found Scrum. I found that you can become a Certified ScrumMaster for only $1200. I'm determined to covert this ancient systems development group into a modern product driven research machine, which pumps out quality products that will ensure our future, and force management to get on the horse and sell this shit. I'm sick of waiting for the next job, when we have no sales team, no integration team, we have a part time quote writer and a part time micromanager.... it's time for change.

I'm going to set up a product backlog for my personal work on the intranet's wiki. Then, I'll have daily meetings with my mind to tell it what it will be doing for the rest of the day (no excuses). I'll set monthly goals based on this backlog. When I decide that it's good to go, I'll present it to the team, and we'll convert our software shop from pre-Waterfall into Scrum-3000.

Until then. It's time to work.

Thursday, October 25, 2007

Software Development Manager

For almost a year, now, I've been titled "Software Development Manager" at my job. Now that I've been talking with other companies, I'm really at a loss as far as what this means.

The company I work for is in the business that some mechanical engineers dream of. Huge cranes and ships with 100,000HP that have 3 foot diameter pistons. I was hired as the 6th person to a new group that did systems research. We were all Computer and Electrical Engineers. But, since I had some experience with software, they had me write a few apps in VB. After I cleaned up the vomit, I wrote them in VB, then C++, then Python. When I asked for help when we got a few more projects, we hired a few more people. I needed business cards. My boss said "you can be VP of software if you want". I told him that my position is not fitting for that title. He said "ok, how about Software Development Manager"? I agreed.

Right away, I got into developing our software base. I bought 15 books for the library (mainly O'Reilly Python, C#, and C++ books). I upgraded all servers to Windows 2003, and got Visual Studio 2005 copies for developers. No one wanted Linux at all...even our customers...even though it's cheaper...so I set up two linux servers to do all of the SVN, Bugzilla, Wiki, external support, FTP, and cron jobs we needed. Then I started to run bi-weekly software meetings to complement our specific project meetings that happened every Wednesday. I wanted to make sure we were all working together, sharing our code base, and working on similar projects together and not against each other. Our firmware become componentized (Dynamic C for Rabbits). We collaborated on Windows service installation and remote debugging. We learned Embedded Windows, ASP, and AJAX as a group. Although we're all working on different projects, we're doing it with respect to everyone else.

So I don't really have to manage anyone. I've been on the hunt to understand what a manager actually does. They develop their employees and let them grow. But I spend most of my time writing code and figuring out new technologies...and projects that will make us money and gain some more patents. We already have one in the last few months...how about this other idea I had, boss?

Anyway. I started concentrating on the "software development" and the "development manager" more so than the "software manager" ideal. So, I'm developing software. One of two goals is checked. It's great because people still like it because it works efficiently. It's documented, customers like our APIs, etc etc. The "development manager" seems also to be my role. Whenever I install some new service, everyone gets excited like it's a new Nintendo, and it's Christmas 1986. But, most important to my personal development at this position, I've learned that a manager really doesn't do anything other than direct. The best directors are the ones who get a good script, wrap their head around their own vision, and convince actors to do what they're thinking. When they get in there and say "you're hand is in the wrong spot...say it louder...don't smirk when you move your legs...lose some weight" etc etc...they lose it and it becomes Hollywood garbage.

So, too, must a "development manager" find tools and lay groundwork for "software development" to take place more efficiently, with more grace and with more entertainment value...it's not really work...it's what you like to do!

Monday, October 22, 2007

Old School Programming

Thanks to JP Calderone in the [Twisted-Python] listserv, I was lead to twisted.internet.serialport.py

Now, I know what you're all saying: "But my computer doesn't even come with a COM port anymore!!!" That's a.) where you're wrong, and b.) where computer manufacturers are wrong. Serial ports used to be the easiest way to communicate with an external device. There may have been some custom protocol to follow (in the case of triggered laser speed detectors from Omron, for example), but normally, you verify the baud rate, data bits, stop bits and parity, plug in your device, and write some simple bitwise code in C or (EEEEK) VB or something similar, and you have a working application.

You're wrong about the serial interface, because when you get down to it, there is potential to hack your MOBO and install a COM connection on an existing port. They exist on your chip, and therefore, you can allocate IRQ, I/O Range and Memory Range for input and output buffers, spoof the Windows kernel (by using a different kernel like Linux or BSD) and tada! You have a hacked COM port.

What can you use it for now? How about communicating with a modem? Or using twisted on two computers to sync data? As long as they're on, you don't have to use the network, so hackers won't be listening. You could use it to populate a media server (it would take a long effing time to populate)...endless possibilities for the average consumer.

Tuesday, October 16, 2007

Using Craigslist

I got a new apartment this month. I moved to the Bay Area a little over a year ago. Since I came with no furniture, building a house out of cheap Craigslist (CL) furniture is a daunting task for someone with style in mind. I thought I would list the categories and the pros and cons of each.
  1. Individual sellers
    1. Pros
      1. Cheap
      2. Personal (you usually get a history)
      3. Price is always negotiable.
    2. Cons
      1. Never have dimensions
      2. Often, there is no image or a stock image
  2. Scams
    1. Pros
      1. You get to beat someone up for free!
      2. You don't get the merch, but you get a free opportunity to utilize some adrenaline.
    2. Cons
      1. Sometimes there's more than one, so fighting them with a Nerf (r) gun is a daunting task
      2. Sometimes there's too many of them, and they take your money and beat you up.
  3. Companies using the free advertising CL offers
    1. Pros
      1. It's convenient and they post hours, pictures, and prices.
      2. Usually greater selection
    2. Cons
      1. Overpriced
      2. Usually poor quality for the price range of a 20-something
      3. Not the point of a community list
      4. Lot's of spam
Now, I've found some great deals on Craigslist, such as a free Cherry wood desk from Bombay furniture, and a $100 solid mahogany desk that is HUGE and real. This is way under priced.

But now, I'm looking for a couch and a television. Kitchen table and chairs, and yard furniture is also on the list of things to get. I sure do need a bedside table and some new living room furniture. How about an entertainment center for the TV, stereo equipment and records that I already have?

Well, I have a lot of work to do on the CL (as someone who says "The Google" would say), so I better get to it.

Friday, October 05, 2007

PyMag has released their first issue for free. The fact that it's free doesn't impress me. The fact that there is finally a Python magazine with lessons and tips is what impresses me. I'm a subscriber automatically. I should get the Sony Reader and download them so that I can read while riding the BART to work after selling my car.

Now it's time to read...

Thursday, October 04, 2007

Microsoft OS.NET

Developers at Microsoft have announced that they will open source .NET3.5 (comes with Visual Studio 2008), including the basic .NET libraries, Linq, ADO.NET, ASP.NET, and a few others, under Ms-RL.

The problem is, we won't be able to modify the code. We will be able to see it in a debugger, just so we can understand what's going on. It's for reference. Hence, the name "Microsoft Reference License".

Which, to me, is fine. I'm glad that they're taking this step. It means, that, for the first time in Microsoft's history, we will get to see the man behind the mask. We will finally be able to figure some basic building blocks of the Windows operating system that previously would have been reverse engineered. Since they're keeping comments in the source code, they can instruct how to use that specific function/class/interface.

I'm excited, because for the first time, we can see MSDN content integrated within the source code. Think PyDoc.

I probably won't be an early adopter to .NET3.5 (although I've already used it for a project) with Visual Studio 2008 (formerly Orcas), but I can't wait to use Linq and XLinq to query me some data. I'm excited!

Thursday, September 27, 2007

Musics

Last night, I purchased a couple books from Dog Eared Books on Valencia. I've been interested recently in learning about the human brain (because of my interested in a PhD program in neuroscience and neural prostetics), and in learning French (because I'm thinking of moving to France). I purchased my first French dictionary, and started translating a French book that they had for sale. The first sentence on the back of the page is "Insociants amis bachelates!", which (as far as I can tell) translated to "Carefree graduates!" in English. I'm going to keep doing this to learn words, and pronunciations (from the dictionary).

After the book store, I saw the movie Once, which eventually captivated me into oblivion. Music is becoming boring for me. I've listened to all of the genres. I know what it all means. I understand, and I still shiver when I hear a very technical performance live. I think my life has too many other things going on, which is very sad. However, a rekindling due to Oink has begun. I'm concerned with my share ratio, but it doesn't seem to do too bad if you're on albums that people want. I just shared a John Cage album that wasn't up there before, and received Shocking Pinks in return. I like this new stuff...

I think my nerves have been worn down regarding new music since I've been so agitated with our president and congress...that nothing else seems to matter much.

But, we're all going to die someday anyway, right?

Wednesday, September 26, 2007

How to get an apartment in San Francisco

I've been looking for an apartment in San Francisco for the last 2 months. My roommate and my budget is tight, and neither of us are willing to compromise on space and security. There was one place that I was 2nd on the list only because I hadn't applied fast enough. Through all of these experiences, I've learned a few tricks that should land me a place in the coming weeks. So, I've made a list of tips on how to secure your next hipster pad across the street from Dolores Park, or your yuppie GOP heaven near Grace Cathedral. It ain't easy, but either is livin'.
  1. Bring your credit report.
    • Don't just bring your credit report, bring your resume, a cover letter telling them why you're looking and what you're looking for...and two pay stubs to prove that you've been in the city (or in a job) for a while. Any form of proof that you exist is probably good, as most people that come to open houses don't really exist, and the home owners know this.
    • If the person there isn't the home owner (happens very often) give it to them anyway. The worst they can do is throw it away.
  2. Show up earlier than everyone else.
    • Be the first to fill our all of their required documentation.
  3. Be interested.
    • If you walk in, fill out an app, and walk out...you're screwed. I don't care if your credit score is 850...at least shoot the shit with these people. Can you image working like that all day? I would need someone to make me utilize my vocal cords, or I'd go nuts!
  4. Set up an email or phone correspondence.
    • If there's an open house with times and addresses in Craigslist then...email them before the open house to let them know. If you just show up, they won't be familiar with you, and you're less likely to get the place.
  5. Don't bribe or be a douche-bag about needing it.
    • Seriously. Are you that desperate? Couch Surf until they move rent to your level. This country is run by it's citizens, not by corporations and government. Be a damn citizen and suck it up for a bit. That right place will fall into your lap. My first place in the city was a result of a 2 bedroom open house with a 4 bedroom upstairs. My roommates went to the 2 bedroom, and were surprised to find a 4 bedroom that wasn't in Craigslist for $2200 in 2005.
  6. Get a place you can barely afford.
    • Everyone is moving up in the world, right? So, chance are, if you're serious, you'll get a raise in the next year. Learning how to budget the money you do have will make that raise more important and feel good.
  7. Don't give them too much.
    • If the place isn't worth it...fuck 'em. They can find some idiot who can pay their exorbitant rates (ah hem CityApartments).

Tuesday, July 17, 2007

Linus Torvalds

I compare it with science and witchcraft (or alchemy). Science may take a few hundred years to figure out how the world works, but it does actually get there, exactly because people can build on each others knowledge, and it evolves over time. In contrast, witchcraft/alchemy may be about smart people, but the knowledge body never “accumulates” anywhere. It might be passed down to an apprentice, but the hiding of information basically means that it can never really become any better than what a single person/company can understand.


And that’s exactly the same issue with open source vs proprietary products. The proprietary people can design something that is smart, but it eventually becomes too complicated for a single entity (even a large company) to really understand and drive, and the company politics and the goals of that company will always limit it.

Thursday, March 08, 2007

Programming + Music

I have learned SO much in the last few weeks, it's unreal. Here's a short list of what I've done:
1.) set up mysql, apache, bugzilla, a cvs server, vsftpd, sshd, and twisted on a linux box (all for the first time in my life successfully and completely)
2.) re-learned batch file scripting for an install script for my twisted Windows service. It does the following:
  • Initialize registry values
  • installs python, twisted, pymssql, and transfers other files where necessary
  • creates a windows service and changes the type to "Auto"
  • figures out whether SQL Server 2000 or 2005 is installed and initializes all databases, tables, stored procedures, triggers, functions, and initializes data in one table based on user input...depending on which is used.
It's not a final script, but it works ok.
3.) C++ times a million
4.) I finally figured out what I was missing in my brain that prevented me from understanding the following:
  • asynchronous programming using either .NET2.0 (not asyncsocket) or Twisted
  • OSI TCP/IP layers. I finally realize how simple and affective this is (I always assumed I knew)...it's a great advancement.
5.) I know what I want in a woman. I just need to find her. I'll find you, don't worry.
6.) I've been researching cybernetics, specifically biocybernetics and bionics. I think my next company will involve something I learn from this.

I will be posting some of the amazing coding techniques and styles I've been learning recently, but don't have enough time right now.

Thursday, March 01, 2007

Detachment from Intention

Yeah...what he said. It's important that we (collectively not singularly) have forgotten about our founding. We've forgotten and still use it as an excuse to freedom. Since 1999, I thought that if I were to meet Governor Bush (yes...he was actually elected to at least one political position), I would spit on him and turn my back, since he's done that to my country. However, I was thinking of a question today. "Please tell me what freedom means to you. What makes a man (proverbial) free?" It's the rhetoric that is killing us, and the fact that politicians understand what they want, and will do anything to get it. I think our founding fathers knew this would happen, and tried the best way they knew to keep politics out of politics (if that makes sense). I still wonder what would have happened had George Washington accepted the popular idea of making him "King of Columbia". He was a mean but humble man. Where are the mean but humble presidents now? Obama? no... Kucinich? maybe... me? Hell no... I think we're all out of them. Maybe Clint Eastwood? Maybe Chuck Norris? Seriously...who's mean and humble at the same time?

You know, in Islam, the first 40 years after Mohammad died were the best (some say) because it was a true democracy during this time. The rulers and teachers were selected by the masses to represent those particular jobs. This doesn't work well in a large mass where no one knows anyone else, etc...but the reason it changed is because the original intent of Mohammad was mis-interpreted to mean that a descendant of Mohammad were to rule... All good things must have an end. I'm just waiting for Guam or Puerto Rico to fight for its independence from the US like Cuba did in the 60s. When will we get the picture?

Anyway..ranting.

Thursday, February 22, 2007

"I'm neither micro nor soft" - BG's pick up line

How nice of Microsoft's MSDN team to tell us a couple weeks before it happens that there will be a problem with every program we've written, and if we access the registry, our programs won't access the time zone data correctly....great!

This is the email I received from MS today:
"""
Dear Valued Microsoft Customer,

In 2005, the United States government passed the Energy Policy Act of 2005. This act changes the start and end dates for Daylight Saving Time (DST) as of spring 2007. These changes may impact the way applications run. Microsoft is releasing an update for Windows through Microsoft Update that reflects these changes.

Developers who use the .NET Framework may find their applications affected if the application uses the time zone information for historical purposes or if they have derived custom classes from System.TimeZone to provide custom time zone information. The standard System.TimeZone class provides a managed wrapper for the underlying Windows Operating System time zone functions.

In addition, developers who use Visual C++ may find their applications affected if they use the CRT time functions, or the TZ environment variable. Microsoft is currently working on a fix for this issue and will post information about its availability on the Visual Studio Support page.

Most applications that use these affected classes will not need to be modified as this update will ensure that the correct data is provided seamlessly to the application. However, applications that use these classes or the underlying Windows API to perform historical time look-ups will need to be modified.

In most cases, developers who have extended the .NET Framework’s time zone support by creating custom time zone classes derived from System.TimeZone, or by direct access to the Win32 API, will not have to update their applications as long as the available updates to the operating system are applied. However, solutions that rely on private time zone data, or that retrieve system time zone information by accessing the registry directly, may need to be updated. Applications that deal with historical time zone data may also need to be updated.

Microsoft advises all developers who make use of time zone data to test their applications against this update to ensure that their applications function correctly.

For more detailed information and the latest updates please visit http://msdn2.microsoft.com/en-us/vstudio/bb264729.aspx, Preparing for daylight saving time changes in 2007, and KB928388: 2007 time zone update for Microsoft Windows operating systems.

Further Assistance

Microsoft values your business. For more information visit http://www.microsoft.com/dst2007, or contact Microsoft for assistance. A list of phone numbers is located at http://support.microsoft.com. Microsoft Premier Customers may engage their Technical Account Manager directly.

Please DO NOT REPLY to this email as this is not a monitored inbox. If you have questions/inquiries please visit http://www.microsoft.com/dst2007

This e-mail is intended for distribution within the United States. Please contact your local Microsoft subsidiary for similar offerings outside the US.

Thank you,

Microsoft US Developer Team
"""

So, if you're using .NET and System.TimeZone (not derived from though!), or Win32 (like me), you're fine....as long as you have the newest version of Windows Vista 2025 Extra Business First class snakesonaplane Superman3 Robocop Titanium edition. Will they provide an update for Windows 2000 or NT Server? What about 2000 Server edition? What about Windows 98? If not, then all of the code I wrote at my old company can be trashed :)...or at least the time zone functionality.

Well, that's it. I'm glad they told us at least before the fact, and late enough so that no one really freaks out like Y2K (why2fake i called it). Idiots.

This is more of a reason to convince my employers to switch to trusty Linux (I'm using a CentOS box at work for CVS, internet web server, and file sharing via SMB).

Thursday, February 15, 2007

Name and content change

I have a couple "blogs" throughout internetstanbul, and want to consolidate. I kept separate blogs because some of my personal blogs are that post high school emo "woe is me" type bull, which I would rather not have mixed in with programming tips and tricks, or music recommendations, or political discussions.

So what I think I might do is change the name of this blog from "The Science of Programming" to "Sounds, Opinions and Programming", which will include discussions related to the TV show I will be producing and the music related, as well as music I'm into and seeing that's not related to the show. It will include opinions based on discussions, ideas, or inspirations that I get just living life. These will mainly be political in nature, because it seems that most of my emotional energy is driven towards political discussion. Finally, I want to write about programming. I don't just want to write tips, tricks, and new algorithms, but about IDEs, the culture behind programming, compilers/languages, how to manage software and hardware projects, and other things related to my greatest passion, and what I do for a living.

I have absolutely no one yet reading this blog, so I will be surprised if I get feedback on this right now, but I think I should be transitioning within the next few months. Oh, and it will make it easy to search because I'll be labeling each post based on one of three things "programming", "opinion", or "sound"

Tuesday, February 06, 2007

Visual Studio 2005 and "writing" to the registry

I've spent the last few weeks learning how to approach Visual Studio 2005. I have no prior experience with .NET, CLR, managed code, and interop until now. I've been digging through videos, forums, blogs, and newsgroups (mainly through MSDN) to find information relative to my goal. My goal is to make a couple very specific client socket operations in a managed assembly (read: DLL) format. I have to make it part of the global assembly cache, so there are minor requirements to achieve beyond learning the language, libraries, and IDE.

Regardless, there is a lot to learn, and I think Microsoft is heading in a good direction with their C++ compiler group. I also (coming from VS6.0) think the IDE has advanced in many good ways. Least of all of these is the tabs at the top, and the tabbed toolbars on all sides (that you can hide). The only thing I'm worried about, is that M$ will limit what each programmer is allow to use and not use. Yeah, we can use sockets and have access to the registry...but do we really have these things? They're taking away the lowest level of abstraction, in order to provide user friendly tools, so someday they will be able to control every aspect low level access. They will tell us when we can write to the registry, and what and where. I'm not ready for this yet.

This will relate Windows to an OS like Apple IIe... firewalled by hardware. If Microsoft doesn't allow development beyond a certain level, they are essentially fire-walling their OS as if it were impossible to mangle anything below that level. We could, of course, hack the assemblies, but who wants to do that with managed code? With the program memory that will be used in the heap because of .NET libraries, there's a lot of assembly to look through before finding how to hack the registry. We might be getting the best treatment by the Visual Studio C++ compiler and IDE past, but the abstraction and development depths are being sacrificed.

What do you think?

Thursday, January 11, 2007

OS Projects that I utilize first hand

Open Source has been a sexy tech topic over the last year or more. I think it was finally popularized because of the fact that Windows users had a choice between two decent browsers. Well, they could choose to not use Internet Explorer is more like it. Firefox is the open source software that I use the most, and I would recommend anyone in their right mind technologically to do the same.

However, what is the real open source model about? What are some real OS projects? I'll be giving a list of the most frequenty used open source projects that I use. This is the furthest list from objective as I could make it...so it would probably help if you didn't actually read this.

1.) CentOS 4.4 - A linux package that is based on Red Hat Enterprise 4. There are a couple RH ripoffs (Fedora being the other big one), but I've used CentOS since 1.0. I like it. I can't explain it. It has the same visuals (GNOME, GTK, KDE, X-Windows) as RH...well...I don't know what it is. Perhaps it's the closest thing to what you have to pay RedHat for that one can get. I use CentOS for programming, mainly, but also use it for IRC, AIM, and to hide things from my employeer (four desktops :)).
2.) Python 2.4 and 2.5 - "Object Oriented" programming language. Why do I like Python? Primarily, because it's flipping easy to use. It's powerful (can use C libraries), you can write windows services just as well as linux daemons with it. You can make love to it in the patio. You can use it for any GUI library interface, and in less lines of code than you would with C++. It's clean, meaning, that if you do not indent properly, it will not run. Also, you can compile it if you want to cut down on parsing time. It's great. I use Python anytime I'm able to...I just need to find the write IDE for it (read below). Python.org has an amazing community. The people involved are very helpful. This goes for IRC, mailing list, local listserv's, and the documentation...Oh! The documentation is the best I've seen related to any product so far in my life....far superior to MDSN (IMHO).
3.) Twisted Framework for Python - An asynchronous sockets framework that is used in Python. I use this for writing servers. I wrote a custom protocol (think SSH or FTP) with it...and it works...quickly. There are some problems with using it, but the community is very helpful and always on. They have a great IRC chat, a decent mailing list, and moderate documentation.
4.) Iron Python - Python + .NET = Iron Python. I use this in VS2005, as well as in MonoDevelop. If you want to write Python and use your .NET libraries...you should know that this exists.
5.) Mono - An open source .NET compilier. So, you want to write .NET code, but don't want to pay M$ $500 for their shitty product? Check Mono out. It works on Windows, too, so don't give me that bullshit about opensource is for Linux geeks. It works, even if you're just getting the compilier.
6.) MonoDevelop and Sharp Develop
- Open source IDEs for .NET. These can actually use the Windows version of the csc.exe if you want...otherwise, get Mono with it. MonoDevelop is for Linux, Sharp Develop is for Windows. Neither are as complete as Visual $tudio, but they do what I need them to. AND...I can change it if I don't like it (beat that Mr. Gates). I had some problems initially getting MonoDevelop to work with CentOS, but found that my icon theme was missing a file, so I changed it and now it works.

That's pretty much it. I know there's a lot more OS stuff out there that I used on a daily basis, but to know that there's free support, free software, and not as many angry people at the other end of your questions is why I got into it. So, if you're new to programming, read a book, take a class, and find the real world stuff in OS.