Domain: byteswap.net
Stories and comments across the archive that link to byteswap.net.
Comments · 10
-
Here's my participatory journalismI like to write. It's what I do to relax when I'm not coding. But I take my writing pretty seriously. I write mostly either technical or opinion pieces. Here's links to most of them:
- articles by MichaelCrawford at Kuro5hin
- GoingWare's Bag of Programming Tips (note - they cover a lot more than programming by now)
- Articles at The Linux Quality Database
- Musings on Good C++ Style - published at K5 under my old username
- Links to Tens of Thousands of Legal Music Downloads
- Writing Cross-Platform Software - Getting Started
- Freeing the Developer from OS Vendor Shackles
I write about the importance of speaking your mind, and give some tips on how I am able to write so well on this page.
-
Why I writeI've been programming for a long time. I'm good at it, and I suppose if I really put some time into coding for a Free Software project, I could do a lot of good.
But most of my contribution to Free Software has really been in the form of writing. I have also written a lot of stuff which is not copylefted, but posted publicly on the web. here some more as well as this.
I have contributed some to zoolib, but that's mostly in the form of qa, project management (for the initial open source release) and marketing.
One reason I prefer to contribute by writing is that my normal programming work is so hard, that when I get time to take a break from it, it's difficult to work up much enthusiasm to write more code, no matter how fun the project might be. I imagine that's a common problem.
Another reason is that I feel that any contribution I could make to Free Software, at least in the limited time I have, would be small. I could fix some bugs, add some features, do some testing. But how many people would benefit from my personal contribution? I don't think that many would, at least not until I had the time to develop a really serious package, and I just don't have the energy for that. I have lots of ideas, but no time.
But I feel that passing on my experience by writing can benefit others far out of proportion to the effort I put in. That is because I aim my writing to enable others to do better. By writing well, I enable many other developers to code a little better, and many users to do better testing and bug reporting.
I could lead by example by writing good code, but how many people would learn by reading it? When's the last time you studied the source for some package you weren't really actively involved with? Prose is much more accessible.
This is all the more important because so few engineers of any sort are good writers. When my father was a civilian electrical engineer for the Navy, the shipyard sent him to a writing class so he could write better test plans! The man has a master's degree! But the Navy put lots of people through that class because so many of their engineers didn't know how to write.
What is funny is that I find writing much more difficult than programming. With software, you know when you're wrong. It's not always so clear with writing. The main reason I write so well is because most of my effort is put into editing - and I still find lots of mistakes later.
Even more ironic is that I used to hate writing with a passion. One major reason is that I have terrible handwriting - I can't read my own handwriting, and can't imagine how anyone else could. But the schools always used to require handwritten essays. They used to send me to remedial handwriting classes, which I really hated because they made my hand hurt. It's painful for me to write much by hand.
What did it for me was two things - a composition class I took at the community college during the summer when I was sixteen, that was just really well taught, and being able to type. I type really fast now, and there's no pain.
My senior year Advanced Placement English Teacher asked me to drop the class because of my poor handwriting. He was quite taken aback when I started screaming at him. I'd had enough of teachers criticizing my handwriting, I didn't need to hear it again when I was seventeen years old.
He was concerned that I couldn't pass the exam (which could get me college credit) because the judges wouldn't be able to read my essays.
He proposed a compromise. He suggested that I block print.
I had no problem with that. And at the exam at the end of the year, I turned in my exam neatly block-printed in all capital letters. I just used bigger capitals for where a capital was really required.
I was the only student in my school that year to get a 5 on the english AP exam (a perfect score).
-
Thinking about copylefting my articles this way.Check out the entry in my Advogato diary where I discuss whether I should copyleft an article I wrote on C++.
On the one hand, I think I would do a lot of good to the community if I copylefted my article. A lot of people might read it who otherwise would never come across it. On the other hand, allowing the only copy to be on my website generates a lot of valuable traffic that helps to advertise my consulting business. But on still another hand, maybe having the copylefted version in the wild would do even more to publicize my business.
John Levon suggested that that particular article is probably best where it is. I'm thinking now that he's probably right.
But I have other articles that I am thinking of copylefting. I have started writing a column on cross-platform software development. My thought now is that I will copyleft my articles, say, six months after they are published. The one article I have posted so far is older than that, so if I decide to do this I will copyleft it right away.
That way there will be traffic to my cross-platform site from people looking for new articles, but ultimately they will have the most positive effect if they are picked up by linux distros, for example.
I'm still undecided about it, I probably won't make a decision right away. Yes, I want to help people. But I'm sorry to say that it's been challenging to be a self-employed software consultant since the dot-com crash. My articles take a lot of work to write, and I don't get paid for writing them, in fact I take a lot of time off to write that I could spend doing billable work for my clients. They are an effective advertising medium. The decision of whether to copyleft them is going to have to be based in large part on what I think would be best for my business.
-
Thinking about copylefting my articles this way.Check out the entry in my Advogato diary where I discuss whether I should copyleft an article I wrote on C++.
On the one hand, I think I would do a lot of good to the community if I copylefted my article. A lot of people might read it who otherwise would never come across it. On the other hand, allowing the only copy to be on my website generates a lot of valuable traffic that helps to advertise my consulting business. But on still another hand, maybe having the copylefted version in the wild would do even more to publicize my business.
John Levon suggested that that particular article is probably best where it is. I'm thinking now that he's probably right.
But I have other articles that I am thinking of copylefting. I have started writing a column on cross-platform software development. My thought now is that I will copyleft my articles, say, six months after they are published. The one article I have posted so far is older than that, so if I decide to do this I will copyleft it right away.
That way there will be traffic to my cross-platform site from people looking for new articles, but ultimately they will have the most positive effect if they are picked up by linux distros, for example.
I'm still undecided about it, I probably won't make a decision right away. Yes, I want to help people. But I'm sorry to say that it's been challenging to be a self-employed software consultant since the dot-com crash. My articles take a lot of work to write, and I don't get paid for writing them, in fact I take a lot of time off to write that I could spend doing billable work for my clients. They are an effective advertising medium. The decision of whether to copyleft them is going to have to be based in large part on what I think would be best for my business.
-
Use ZooLib for Mac OS X and other platformsZooLib is a multithreaded C++ cross-platform application framework. It supports classic Mac OS (even 68k), and Carbon in CFM and has just gotten Mach-o executable format support.
You will want to get the code from CVS because there hasn't been a release in a long time. (Real Soon Now.)
If you code for ZooLib it is almost trivial to port your applications to Windows or the BeOS. ZooLib for Linux works for server applications but the GUI support is not complete (but would not be hard to do).
It also includes TCP networking and two choices of database support with a C++ API (but not SQL).
You can learn a little about ZooLib from my first draft of The ZooLib Cookbook I also wrote an article called Writing Cross-Platform Software - Getting Started.
-
Use Cross-Platform FrameworksYou should use cross-platform frameworks as much as you can.
There are a great variety of cross-platform libraries and frameworks that you would find useful. For example, for a humble JPEG coded, the Independent JPEG Group's JPEG library works really well and runs on everything from DOS to a Cray. It is portable beyond belief. For a lossless graphics format there is libtiff. (I don't know what's available for cross-platform video format software, but I'm sure there is some.)
If you're going to write in in C++, my favorite framework for GUI, file API's, TCP networking, multithreading and database is ZooLib. (But note that presently the best code to use is what's in CVS because it hasn't had a release in a long time (Real Soon Now, really!).
I've started writing a book about ZooLib that is released under the GNU Free Documentation License.
But if you don't like ZooLib, it's important to use some cross-platform framework. There are many to choose from.
Another important framework is the Simple DirectMedia Layer. You will want this for your rendered scenes and for sound (ZooLib does 2-D graphics, it's not a 3-D API).
If you write in C++, do as much as you can with the Standard Template Library. There are some excellent books that teach how to use it.
For a long time, the STL has got a bad rap, in part because the template definitions in the header files are hard to read, and in part because of poor compiler implementations of the C++ ISO standard, or poor implementations of the library itself. But by now there are excellent implementations for every OS that is in common use. For example, on Windows, don't bother with Visual C++ - use Metrowerks CodeWarrior or Comeau C/C++.
Even if you choose to work with a broken compiler, the STLPort library provides a compliant standard library that will work almost anywhere.
I was rather intimidated by the STL when I first encountered it but once I got a good book and learned how to use it, I thought it was the best thing since sliced bread.
Boost has many portable C++ libraries that are of excellent quality.
Finally, I am (slowly) building a website devoted to educating developers in cross-platform and portable programming called ByteSwap.net. Read my first article there Writing Cross-Platform Software - Getting Started. More articles will appear when I get more free time!
-
Use Cross-Platform FrameworksYou should use cross-platform frameworks as much as you can.
There are a great variety of cross-platform libraries and frameworks that you would find useful. For example, for a humble JPEG coded, the Independent JPEG Group's JPEG library works really well and runs on everything from DOS to a Cray. It is portable beyond belief. For a lossless graphics format there is libtiff. (I don't know what's available for cross-platform video format software, but I'm sure there is some.)
If you're going to write in in C++, my favorite framework for GUI, file API's, TCP networking, multithreading and database is ZooLib. (But note that presently the best code to use is what's in CVS because it hasn't had a release in a long time (Real Soon Now, really!).
I've started writing a book about ZooLib that is released under the GNU Free Documentation License.
But if you don't like ZooLib, it's important to use some cross-platform framework. There are many to choose from.
Another important framework is the Simple DirectMedia Layer. You will want this for your rendered scenes and for sound (ZooLib does 2-D graphics, it's not a 3-D API).
If you write in C++, do as much as you can with the Standard Template Library. There are some excellent books that teach how to use it.
For a long time, the STL has got a bad rap, in part because the template definitions in the header files are hard to read, and in part because of poor compiler implementations of the C++ ISO standard, or poor implementations of the library itself. But by now there are excellent implementations for every OS that is in common use. For example, on Windows, don't bother with Visual C++ - use Metrowerks CodeWarrior or Comeau C/C++.
Even if you choose to work with a broken compiler, the STLPort library provides a compliant standard library that will work almost anywhere.
I was rather intimidated by the STL when I first encountered it but once I got a good book and learned how to use it, I thought it was the best thing since sliced bread.
Boost has many portable C++ libraries that are of excellent quality.
Finally, I am (slowly) building a website devoted to educating developers in cross-platform and portable programming called ByteSwap.net. Read my first article there Writing Cross-Platform Software - Getting Started. More articles will appear when I get more free time!
-
New cross-platform education siteI have started a new site, mainly for the purpose of educating programmers on how to do cross-platform programming. It is at www.byteswap.net.
I've written my first article in a planned regular column there, Writing Cross-Platform Software - Getting Started.
While it will be a while, I do plan a number of articles on virtual machines.
-
New cross-platform education siteI have started a new site, mainly for the purpose of educating programmers on how to do cross-platform programming. It is at www.byteswap.net.
I've written my first article in a planned regular column there, Writing Cross-Platform Software - Getting Started.
While it will be a while, I do plan a number of articles on virtual machines.
-
Re:intel or motorolaI just published an article on that very topic!