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.
Tuesday, July 17, 2007
Linus Torvalds
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:
3.) C++ times a million
4.) I finally figured out what I was missing in my brain that prevented me from understanding the following:
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.
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.
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.
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.
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).
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
Further Assistance
Microsoft values your business. For more information visit http://www.microsoft.com
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
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"
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?
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.
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.
Subscribe to:
Posts (Atom)