More on this in a bit.
:: Code THIS!! :: |
|
|
|
Sunday, June 30, 2002
A few nodes in the tree are unused and will be deleted. But most of these are used. And to think, I'm just getting started... *sigh* frmMain alone is more than 2,500 lines of code. The Blog class is nearly 1,000 lines. And CPlopBlogger, which is only half done, is about 750 lines. I've spent about one month on this project. K the question comes, what in the world is wrong with Perl? And the answer has nothing to do with the language. It's just the web UI. I am just one of the few leftover believers in GUI. I REALLY don't llike having to wait for five seconds every time I click on a stupid button! In my opinion, until the user's proprietary data is uploaded to the destination web server, there should be NO DATA TRANSFER between client and server--anything extra is a total waste of bandwidth. And these people like Pyra have all these histories of complaining about how overloaded their servers are. Please. Please take this survey:If a basic version of PowerBlog (client ver. w/ Blogger API support, WWW/FTP upload support, and PowerBlog API support, plus a PowerBlog API server software option) ends up being donation-funded instead of licensed, kind of like Trillian, how much would you donate? Answer by clicking on "Comments()" in the line below. Greymatter - Weblog/Journal Software "Greymatter is the original—and still the world's most popular—opensource weblogging and journal software." PERL SCRIPTS?! @#$%^&*!!!! That's it. PowerBlog shall be a server solution, too... starting with .NET web services. Well, my 60-day trial version of Visual Studio .NET expired. But there's great news. Uninstalling it (I used Norton CleanSweep w/ manual use of Smart Sweep, and deleted the main VS7 registry keys in the Software key subset just in case) and reinstalling it with a new Trial CD works perfectly!! No need to reinstall the operating system! Yay! I have four more unoponed Trial CDs. Combined with the one I just opened, that's another ten months worth of Visual Studio .NET. Then, of course, in ten months I'll just order more trial CDs! Whee! Saturday, June 29, 2002
Well my import idea worked, sorta. I've run into a brick wall, though. Blogger won't publish. There is no RPC for publish, and the publish option for newPost, editPost, and deletePost has no effect. I'm going to have to hurry up and finish up what I've started w/ Blogger support so I can use an alternative API to test with because Blogger is NOT doing the job. BOOOOO!! BLOGGER MUST GOOOOO!! BOOOOOOOOOOOO!!! Friday, June 28, 2002
I just discovered a reliable way to import all the Blogger blog entries to PowerBlog--in spite of the 20-post download limit. Templates are just kewl. Wednesday, June 26, 2002
Programmer Personality StronglyTyped.com - Richard Caetano's weblog on software development He has a list here of programmer personalities. I e-mailed Richard and pointed out that the book apparently left out a couple, both of which I have been guilty of (if not in my present then certainly in my younger years as a programmer): The Bleeding Edge Wannabe This guy just likes to install stuff and talk about how amazing the latest and greatest tools and technologies are. He tells the whole world how great he is as a coder, and he loves to praise the tools he claims he uses. Unfortunately, no one has ever seen a single line of his code. The Superhero Junior This one is a step above the Bleeding Edge Wannabe. He loves to listen to buzzwords and is constantly promising silver bullets. He loves it when people come to him for crunches and special projects, and he tends to enjoy squirting enthusiastic emotions within the team. But when he is pressed, the delivery of his disappointingly shabby work takes about five times as long as promised. Monday, June 24, 2002
The ASP.NET Web Matrix Project - This looks pretty cool if you want to do ASP.NET development but don't have Visual Studio .NET. Actually, it looks cool even if you do have Visual Studio .NET. I hope they integrate this stuff with VS. Okay. Support for multiple plops per article has been basically implemented, but not yet tested, as the following two necessary features are still missing: 1) Publish support for Blog*Spot plop (my first test plop) 2) UI for plop tweaking per article Sunday, June 23, 2002
I have FINALLY managed to prep PowerBlog's BlogArticles object so that I can implement support for multiple plops. It still is not implemented, but I'm ready to implement. What has taken me so long was a total Blog/BlogArticle/IPlop object fix. Originally I was copying the XML DOM node values and attributes into strings, then PowerBlog would make changes to those strings, then, when the document was saved, it would rewrite to the DOM. I have changed this. Now ALL changes to any BlogArticle or to the Blog or to a Plop is a live update to the XML DOM. This is kind of tricky because I'm constantly passing IXMLDOMNode objects around and I have to make sure everything's in sync. But it seems like everything is working now. It feels faster, too, I think, like maybe 2500%. Now if I can just get the same sort of speed boost on the initialization of my DHTMLTextbox. :/ There was a LAN party in Visalia that I had been invited to attend, and I had been planning on going. But Richard, the guy who talked me into coming, didn't give me a time and location or whatever till like 7pm. I think it started at 4pm or something (??). Eventually he asked me to come on down, and I drove all the way over there, a half hour drive each way, had a hard time finding the place, but I finally showed up, walked in, and I wanted puke; I was overwhelmed by the stench of computer nerd body odor. Must have been fifty or so guys in the dark each with his own computer, all playing Quake or some other 3D game. I went all the way inside, through the entire room, around the corner, down the back aisle, all the way into the whole place as far as I could go, and I looked all over for the guy who invited me, but it was too dark, I just plain COULD NOT SEE HIM. I felt stupid standing in the middle of a dark room full of computer nerds, bumping into some while saying "excuse me", some staring at me like I walked into the wrong room, and so I didn't have the nerve to say, "HEY, IS THERE A RICHARD HERE?! RICHARD CAETANO??" I felt so weird and stupid and out of place, and since I didn't register and nobody knew who I was, I was out of place. I was about to freak out, so I just left. Went to Taco Bell (one of the options where he and I were going to go when we were to meet) and headed back to Hanford and left him an e-mail. I feel pretty horrible for not doing more, but I also felt pretty awkward when I showed up. I am a computer nerd, sure, but do I want to be one? Do I take pride in it? Do I shamelessly stink up my office with b.o.? No. At least, I don't think so.... ? Saturday, June 22, 2002
Sorry, the link to "HostResolve.zip - http://www.jondavis.net/files/misc/HostResolve.zip" has been fixed. You can download now. Here's a quickie tool I made that loads your IIS5 WWW log file and resolves the hostnames of all the client machines that have visited. Wednesday, June 19, 2002
Here's a quickie tool I made that loads your IIS5 WWW log file and resolves the hostnames of all the client machines that have visited. HostResolve.zip - http://www.jondavis.net/files/misc/HostResolve.zip Warning: After running this several times, my ISP's DNS server seems to have locked me out. I suppose they think I'm doing a DoS attack or something. Tuesday, June 18, 2002
In or around 1996 or 1997, I saw a geek show on television where, for a minute or so, a box on the screen showed static, and a guy said that, because of this box, data was being downloaded to your computer if you had certain hardware. This got my brain going, and I soon came up with a whole lot of really cool interactive television ideas. Little did I know that Intel's InterCast existed. I felt a bit angry because I felt like I had the idea first, though I know now I didn't, and I felt like I was just short of money, resources, and other means of getting this technology out there, then I could have taken the glory. Then, at around the same time, I was taking a class at Brown Institute in Minnesota on Networking Technologies, and I learned about multiplexing. My mind went racing, and I thought about my modem, and asked myself, why is it that if we can have TWO phone lines per household, we only use ONE for the modem? Why can't we use BOTH lines and multiplex them? So I spent a couple weeks braingstorming an inventive paper on what I called the "MUX Modem". Obviously, I didn't know diddly about electronics and very little about networking, and I was completely broke, so that didn't take me anywhere except excited. I posted my ideas on Usenet and people made fun of me. But then, about six to twelve months later, came WebRamp. I felt like they stole my idea, but I know, probably not. About three years or so ago I was downloading some files--MP3s, perhaps--from NNTP, and I thought about what was going on here. Here we are publishing our files to a public space to be seen by all, no one owns this space, the space is shared. Where is the accountability? There is none. I then thought about, well, why can't we take this to another level, why do we have to put this on our ISP's server, why can't we just leave it on our own machines and then automate the trading of information as to how to get to the data. We already have this with IRC and FTP combinations. But that's far too awkward. Why not automate this process? So I delved into some cool ideas and strategies and came out with what looked very similar in concept to Napster. I set the idea aside and didn't pursue making it happen. A year later, Napster is on the scene, exploding through the Internet with brute force. Now that Napster's gone, peer-to-peer file exchanging is one of the few "killer apps" coming close to competing with e-mail and the world wide web. A couple years ago I saw E*Trade soaring in popularity, and I kept telling myself, if I had the money and the means and the Wall Street education enough to invest, I personally think that whole Wall Street game is best played by watching, not doing. I decided that a killer way to make a buck off Wall Street is to pay people to put their brains to work for you. How? Simple: by following the best performers in a paper trading game, letting them give away all their secrets, or let them keep their secrets and then just divulge their results onto your lap! My idea was to have a web site that encouraged people to use play money to fake-invest in stocks using real-time, real-life quotes, and then, after some time and success, pay the best players real cash (for telling me what to sell/buy; their fake profits are my real profits). Of course, without money to invest in the first place, such a paper trading game wouldn't work. I wouldn't be able to pay anyone for winning because I wouldn't be able to invest in anything because I didn't have any capitol. So, another idea gets left behind. But now, today, I opened up a magazine and what did I find? Win $500 a week. Or $3,000 a month. You in? Play the Lycos Finance Investment Challenge. What if you had $200,000 to play with? How diversified would you really be? How risk adverse are you? Now's the time to find out--for free. Get $200,000 in "play" money to invest any way you want. Once a week, the player with the best performing portfolio wins $500. Once a month, the top three players win $1,000, $2,000 or $3,000. What better way to put LiveCharts™ to the test? Not to mention your own unrivalled natural trading instincts. Now, this advertisement is very sneaky. It makes you think that they're doing this game because of LiveCharts™! I'm willing to bet all my $200,000 fake money that I won't play with in the first place that they and I are thinking identically--they are privately going to buy/sell according to the best players. Why? Because they know the best players win. Why am I sharing all these things? Do you think I'm saying these things because I claim bragging rights about all these things? Close, but not quite. I'm saying these things because I'm pulling my hair out that I keep coming up with neat ideas and I don't have a single penny I can spend on them to make them happen. I'm beginning to wonder if I should be rich for my ideas, because other people are doing the exact same things I'm coming up with and they're working (or not, or whatever). On the other hand, I'm discovering that no idea is original. My point being that I really hope that I'm right about blogging and choosing PowerBlog as my pet project. I see blogging growing in popularity, and people who know the Internet are always telling me, "Yeah, blogging is big, you're going to profit." I don't see as much potential in this as I did in my Napster idea. But then, I don't want to get sued for offering a tool that promotes copyright violations, either. Who knows, though, that just might be the next problem with blogging. I wasted all Sunday night building a crappy ASP-based HTTP chat server. This isn't really redistributable as it is very buggy and has a lot of memory leaks and holes and problems, but as a proof of concept it works. Chatter (chat.zip) I need to get back to work on PowerBlog. I just didn't want to resume work without documenting and explaining the yet another delay. Monday, June 17, 2002
Elaborating on what I was just saying an hour or two ago, ... Currently, an article assigned to two plops might look like this: <?xml version='1.0'?> As you can see, the same article is listed TWICE, each with its own plop. As the initial article is published, it is multiplied across all plops (in this case, two), with each of the articles independent of the other. Needless to say, this can get sloppy, especially since each article will show up in its own row in the articles list. Talk about a management nightmare. Rather than doing it this way, however, it is perhaps better to extend the <article> node to associate more than one plop to it, like this: <?xml version='1.0'?> Now we have merged the plop data with the article, and we have expanded the article node's capabilities to support an unlimited number of extensions down the road. This is the direction I think I should go, but it will take some time to reengineer what I've already established because quite a bit of PowerBlog already depends on the old tagging scheme. Regarding my previous comments about multiplying the articles according to their plops, and getting some feedback on the subject, it looks like I will have to take the less-lazy approach and go instead with extending the More on this in a bit. Richard Caetano has been suggesting for a long time that I offer componentization of my app. I keep explaining that this is a good idea, down the road, but right now I'm just focusing on prototyping a powerful UI for blogging, not much else. My main concern is that in VB I have an IPlop interface, which he encourages me to expose to COM. But I can't do that because I also have a Blog object class and a BlogArticle class, etc., and, while I do want to open the door for users to add to this app, I don't want to expose too much of the underlyings of PowerBlog to the extent that people can steal. However, I do want people to have freedom to customize and filter their blogs and their plops. One idea I came up with over the weekend is to expose the Microsoft Script Control to users, and then drop the plop objects into the engine and raise events to the engine as needed, such as when publishing to a plop. This way, a user can, for instance, automate a custom plop in which they extract just the first fifty words of an article and publish the truncated articles list as a table of contents on a home page. They can utilize ActiveX objects with their scripts, too. I still deal with abstraction, etc., but, you know, I can always just limit my IPlop, Blog, and BlogArticle objects documentation. ;) This seems like a reasonable approach, I think, and the nice thing is that, like most of the other third-party components I've attached to PowerBlog, the MS Script Control is free. Saturday, June 15, 2002
Friday, June 14, 2002
If this (:: w.bloggar ::) is freeware, I doubt PowerBlog will be as successful as I'm hoping it will be. We shall see. Please remember me when the word 'plop' is used to refer to "blog publishing mechanisms and destinations" and is trendy. I invented the word. My goal in life is to be a trend-setter. Whoever came up with the word "cookie" must still be grinning that his idea is used everywhere. I want to be like him. Same goes for the reuse of the word 'Spam'. My next word: 'squirt'. (Kidding.) Thursday, June 13, 2002
I should point out that the ID assignment itself is irrelevant. I will add an "associated plop" attribute to the article node, i.e. assocPlop="ID_Blogger_CodeTHIS_1X7c0". By default, if assocPlop is blank or "all", it will be converted as per the rules I just described in my last post. If assocPlop is "none" then it will NOT be published and it will override publishDisabled to "True". Even simple problems can be intimidating sometimes, espcially when it affects the entire application. I really have a bad habit, though, of procrastinating on deciding how to deal with a problem just because the problem is intimidating. I'm getting better at it though. Anyway, I had a problem. Here's the deal. To PowerBlog, a Blog is not a web log per se, rather it is a collection of articles that are saved to the local hard disk and that has a collection of Plops, or publishing destinations for the articles (such as Blogger.com). For instance, consider the following Blog XML: <?xml version='1.0'?> This blog has one (1) plop and two (2) articles. The problem is that a blog can have multiple plops, but an article can only be published according to a single plop. Indeed, the "publishDate" attribute is in relevance to what?! And I really don't have the patience to reengineer the article to have multiple child nodes for an unlimited number of associated plops. So here's the solution I came up with. I have already begun an article ID naming convention of "ID_ARTICLE_...." for generic articles and "BLOGGERID_..." for imported blogger posts. (This should probably change to "BLOGGERPOST_..." but that's irrelevant.) The solution I came up with is this: When a user attempts to publish a blog with no plops, nothing happens (duh). When a user attempts to publish a blog or blog article(s) with exactly one (1) associated plop, the article(s)' ID's will be changed to the plop-conforming format. When a user attempts to publish a blog or blog article(s) with two (2) or more associated plops, the article will be multiplied according to the number of plops, and each article will be assigned a plop association. The disadvantage is that you will see several identical articles in the list, but this is compensated somewhat because I can just change the "Published" icon in the articles list to the associated plop per article. For example, if I have a new article that I publish to Blogger and SMTP, initially it is just one article, with an ID of, say, "ID_ARTICLE_3f83jf83". When I go to publish, it becomes two articles, one with an ID of, say, "BLOGGERPOST_2358572" (or whatever ID blogger.com/blogspot.com gives me), the other with an ID of, say, "SMTPBLOGID_8F3F8F8F3_jonATjondavis.net". The Blogger post will appear in the articles list in the UI with the Blogger logo for its icon (is this legal?), and the SMTP post will appear in the articles list in the UI with a mail icon. In an attempt to get more feedback from all these people who are adding to the page counter, I have created a local newsgroup for discussion of PowerBlog. I will try to post all development-related blogs to the newsgroup. If you want to send suggestions or ask questions regarding PowerBlog, please post them to the newsgroup. The newsgroup is at: news://news.jondavis.net/JonDavis.Software.PowerBlog Please limit your insults (i.e. "why is your web site called "Code THIS!!" when all you're developing with right now is in Visual Basic, a toy language?", etc.) to e-mail. Thanks. Wednesday, June 12, 2002
Last night my log window kept giving me error messages. Took me a minute to figure out what was wrong, and then I realized... oh crap... the Textbox control has a 64KB memory limit. If I want more than that then I have to use the RichTextBox control. So... I switched it over to the RichTextBox control, which was pretty easy since most of the Textbox's object hierarchy carry over identically (such as with SelStart, SelLength, etc). And then I realized... oh... CRAP!! The DHTMLTextbox control has a "TextMode" feature in which I copy all of the HTML from the webbrowser control over to a Textbox control. That stupid control has a 64KB limit, too! What was I thinking? So I switched it to RichTextBox, too. And then I realized... oh... CRAP!!!! When you paste HTML or RTF-formatted text into a RichTextBox control, it pastes formatted. So I had to override shift-insert, ctrl-v, right-click, and drag-and-drop to force it to behave like a textbox should. In the process, I thought, oh.. cool.. I added a "Paste" / "Paste Unformatted" option in the right-click context menu so that if you choose "Paste" it will paste in HTML format, <p>'s and all. Ctrl-V and Shift-Insert paste as unformatted (raw text). Drag-and-drop text isn't implemented due to the fact that the RTFData object isn't modifiable. Tuesday, June 11, 2002
Well I finally got my XMLRPC class working right. Happy happy joy joy. Now time to move ahead with utilizing it... In case you were wondering, no, PowerBlog will not be GNU or freeware or anything of the such. I will be charging for this application, probably something like $19.95. However, there will be free alpha downloads and free beta downloads and a free trial version when I'm done with it. StarCraft, Anybody?Here are some custom maps I've been tinkering with this year. Tanks and Turrets - This is a rather simple 2v2 map, plays like normal except tanks and turrets both build quick. Builders and Fighters (XMOD4) - This is a custom game. I didn't originate it, someone else did, but I spiffed it up and cleaned it up. This one's a VERY fun and VERY addictive game, more so than any custom StarCraft mod I've played yet. Every team has two players, one is a builder and one is a fighter. The builder creates units, optionally upgrading them to heros, and sends them off to the transporter where they become the property of the fighter. Whoever destroys all enemy bunkers wins. This is a TEAMWORK game. Bunker Warz Select - Ahh yes, the ol' classic Bunker Warz. Well I made some additions to the classic game... although I built this one from scratch. (I imported triggers from an old BW map to learn but I replaced most of them and created a LOT more.) There's still Mass Attack, which works fine. But what makes Bunker Warz Select is the "Select" part... you get to SELECT your units! At the bottom of the map there are options to choose which units get generated. This one is slower and longer and harder, though, because the map is a lot bigger, and the units have been re-balanced and modified so that units have more varying degrees of strength, and stronger units are created slower. Have fun. Back to work for me....... Monday, June 10, 2002
PowerBlog is turning out to be 25% productivity and 75% developing new coding habits and practices. This is where my amateur-level depth of knowledge stands out. :( As things progress, I discover that shifting the direction and design plans of this application is like shifting the direction and design plans of an entire house while it's being built. I think I need to go back to the drawing board and make sure of what I'm doing. Saturday, June 08, 2002
Friday, June 07, 2002
I just went through my project and added Option Explicit to the main areas of work and ... wow, I cannot believe how many typos and bugs I've found! I suck! Well I'm getting printing to work. Right now, though, it prints in a sloppy format of "Page X of Y" at top and a temp file URL at the bottom. It's ugly. Alas, I am saved. Beyond Print Preview: Print Customization for Internet Explorer 5.5 Thursday, June 06, 2002
To deal with a memory leak issue I have successfully reverted my custom DHTMLTextbox control back to being WebBrowser-based. I am successfully capturing the events, too. Unfortunately, there's a focus/selection problem now, where the cursor disappears as soon as you click into it. Weird. I'll probably solve it shortly, though. Wednesday, June 05, 2002
The irony of software, time, money, genius, simplicity, and a simple concept called "market".... 2,468,943 downloads since April 18, 2002, for a 496K "product" that turns textboxes into drop-down menus. Oh, and it costs $19.95. Can we say, "half-a-megabyte millionaire"? ZDNet Downloads Meanwhile, a blog-capable journal application sells for only $5 more, it has been online for since September 10, 2001, and is 5.45MB download. I am one of the measely 1,414 downloaders of this very GUI-tweaked application that looks absolutely spiffy. Conclusion: Why try to sell a few houses when you can sell a zillion hammers? Sorry. Removed. Tuesday, June 04, 2002
Well, at least it's posting requests. Digesting the response is another thing. Here's what I see in my Debug window: set RPC = New XMLRPC set a = rpc.createParam("val", , XMLRPC_STRING) set b = new StringPropertyCollection b.add a rpc.methodcall "www.jondavis.net/nonexistingResource", "testMethod", b
Incidentally, I unfortunately still haven't had the chance to get into templating, as I have not yet come up with a templating strategy. My initial thought right now is to offer multiple template formats, primarily: - XSLT - Blogger templates ... and in the case of the Blogger templates, I am thinking of just building a Blogger-template-to-XSLT converter. I honestly dunno. At any rate, I'm tired and heading off to bed... Monday, June 03, 2002
The "other" API: metaWeblogApi Actually, Blogger API is so much simpler that, in spite of the fact that it will be easy to just throw in Blogger API support, I will ultimately need to try to make sure Userland's standard is the minimum standard of my implementation.
Here's the latest screenie. Not much new or special, just some very minor cleaning up. I added a hover color for the list night before last, and I added an obviously missing Publish button. Made the columns bold, added a couple column icons, put more thought into publishing ideas. Ate lunch yesterday with Richard Caetano, who's becoming the coolest coder buddy I could ask for (Daddy God is good to me) and then I thought about publishing some more. Been a bit mentally and psychologically distracted lately due to a personal issue, after a minor incident yesterday evening, but I'm getting over it... a little... Sunday, June 02, 2002
Added a pretty generic class or two in the project for String Properties. Posted it on Planet-Source-Code.com: StringProperty and StringPropertyCollection "Not trying to make anything revolutionary, I just thought it would be handy to have a basic collection object that would serve as a set of property strings (names and values), ideal for XML node attributes. So StringPropertyCollection is basically a Collection that automatically adds a new StringProperty object if a nonexistent one is modified, and automatically returns "" if a nonexistent value is referenced. Note that there are "default properties" settings in these classes. You can't just copy/paste." Saturday, June 01, 2002
Well coming back to the office today I looked again at my screenshot and... well, I think I'm at a good stopping point for now for this phase/area of work. I think it's time I let go of this part and move on to templating. I will need to do a little bit of UI-level integration of Phase 4 (templating) and Phase 5 (publishing) because I will need a way to test the templates, but for now I will just host the output post-templated files locally. I think I will create a new publishing wizard, to give you checkbox options of... * Publish to local hard drive (.HTM/.HTML format) * Publish to remote web site (FTP; .HTM/.HTML format) * Publish to email (SMTP) Whew, I've fixed a bunch of bugs in the last four hours, including the AutoPreview height (which itself is an optional feature), plus I ADDED a preview pane, just like Outlook!
It's three a.m., I'm calling it a night, zzzzZzzZZZzzZzzzzzzz..... |