Oh no! No VB Source Code?

Topics: ASP.NET 2.0
Jul 31, 2008 at 11:55 PM
Please tell me there will be a VB translation! If not, I'm in trouble :(
Aug 1, 2008 at 12:55 AM
Well I guess you're in trouble.

But two comments:
1.  It makes no sense to have two versions of a project just to have versions in both languages.
2.  You're not doing much for the notion that VB programmers are jr rate developers.  If you can program efficiently in VB.NET you should be able to transition (though with a brief learning curve) to C#.  I know all C# people I know could do the opposite.

Coordinator
Aug 1, 2008 at 1:13 AM
With a twist, you can write extensions in VB. Unless you need to make drastic changes to the core project...
Aug 1, 2008 at 2:40 AM
ckincincy -

get over yourself, man.  i don't claim to be an expert programmer. i don't care that knowing vb.net makes you look down your nose at me because you can decipher curly braces better than i can.  i wish all i could do is program so i could learn every language out there but guess what i can't.  sure i can work within c#... i'm doing that right now, with some difficulty, but i'm managing.  however, i don't think i'll be able to create anything.  maybe by the time i'm done w/what i'm doing w/this project i'll have a better handle on it, but i would be 2305928350x more efficient and capable in vb.  i thought the whole point of this project was to make it accessible and easy to use/modify for everyone out there or as many people as possible, but without a vb.net version, you're segregating out half the coding population (yes i know it's not half).

thanks for your snide comment, ckincincy. i hope one day there's something you don't know that someone will snidely suggest you learn or get off the boat.  back to trying to decipher curly braces....
Aug 1, 2008 at 7:47 AM
Argghh!!.... I am starting to grow a strong distaste for arrogant C# developers like ckincincy
  VB programmers are junior rate developers.

I challenge you, show me one thing that you can do in C Sharp that I can't do in Visual Basic. I CHALLENGE YOU.  Maybe you can declare a function inside of a function as delegate, but whatever, I can still accomplish the same end result. Its easy picking on a newb, but I ain't no newb so lay off him ok.

How would you like to be told you should be able to transition from C Sharp to C++ or Java or PHP with a brief learning curve. Its not about being able to do it.  Its about the fact that most developers have been working in certain programming language, like Visual Basic, for years. And over that time they have built an extensive code base, customized to their needs. Just think of all your code laying around being deleted and having to start over from scratch.  Sure you can do it, but why??

Anyway to the OP YES!!! There is a VB translation of BlogEngine.Net. I just finished up my port of 1.4 and was getting ready to contact the development team to see if we could co-coordinate a launch of the next version in Visual Basic as well as C Sharp. Since they beat me to the punch by releasing 1.4.5, I have put BlogEngine.Net 1.4 Visual Basic Edition on my blog for us jr rate developers.  I spent the time porting it, so I don't want it to go to waste.

On a closing note, if the BlogEngine.Net community continues to shun upon the VB Developer community, I think they should stop marketing their project as an ASP.NET project and start calling it what it is, a C Sharp Project.  Sorry for the nasty attitutude but ckincincy really hit a nerve.  As Asp.Net developers we need to learn to co-exist in harmony.  If we can't we'll all be forced to write in PHP.
Aug 1, 2008 at 8:15 AM
Edited Aug 1, 2008 at 8:16 AM
edelman, alexhiggins732

One of the strong points of .net is that several languages can interoperate closely. The main ones are C# and VB.net. Both compile to the same platform, both can do much the same stuff, and code in one can extend code in the other.

What is the point of a port from one to the other?
Aug 1, 2008 at 8:44 AM
Anthony,

  1. Interoperability - Point taken, but the developers on this project have already been pointed to this article explaining how allow extensions to be written in VB as well as C#/ In Asp.Net 1.1 you could run C# side by side with VB, but not now.  In Asp.Net 2.0, the code is copied to the App_Code directory and Visual Studio compiles in one language only, depending on the projec type it opens. Furthmore, the code for extesions are copied to the App_Code directory making the issue more complicated.
  2. In any case, when it comes to modifying the source because you want to change the original implementation (that is the point of open source, right??) you don't want to have to do it in a "foreign" language.  Example one, I don't agree with using GUIDs as a querystring for a feed ID. To Fix this I need to rewrite the original implementation, and would rather do that in VB. Example two, there is no dashboard to manage all comments, I would want to right that In VB.  The list goes on and on.
If you really feel that there is no point in porting from one to the other, and since as ckincincy states, "all C# people I know could do" it and us inferior programmers can't I propose that all future versions be release in Visual Basic and all of you so called experts deal with have to programming modifications in Visual Basic.

Obviously, that's not a solution.  Obviously there is a following of Visual Basic Developers that would like to use the BlogEngine.Net software, like Edelemen.  or that would like to be involved with helping the project become Asp.Net's SUPERIOR alternative to WordPress, like myself.  Stop shutting out the VB programers

Regardless, I can simply continue to add whatever updates are made to the Visual Basic version.  Its users like edeleman I am fighting for now ;)
Aug 1, 2008 at 8:52 AM
Also, please try to explain your arguments to the 65 people who have visited my blog and downloaded the the VB version since I made my original post an hour ago at 4:00am in the morning none the less....

You can't.  Bottom Line: There's a demand for a VB version.  I would like to work with the current project in providing that for VB.Net developers
Aug 1, 2008 at 9:36 AM
Edited Aug 1, 2008 at 9:43 AM
You guys are quite defensive, you bring up this "inferior" thing a lot, and come close to attributing it to me - I already said that C# and VB "do much the same stuff".

I'm not a big fan of putting lots of stuff in the App_Code directory - moving it to libraries gives advantages like precompiling, testability and language independence.

I'm not interested or in a position to shut anyone out of someone else's open-source project. Anyway good luck with your identical port. I'm sure that VB programmers are interested in it. As I understand it, the selling point is that it offers nothing different to end-users?

Aug 1, 2008 at 11:51 AM
Man, who pee'd in your cheerios?

Go over to DNN and ask for a C# version, see the response you get.  Last I checked they actually had a sticky about why they DON'T have one.  For big projects it makes no sense to have multiple code bases.  Not a bit.  Because then you have to have bug fixes and 'hacks' in the code specific to each language.  Not a good solution at all.

My comment about inferior VB developers was not me saying they ARE inferior.  But comments like the one that started this discussion don't help the perception.  Because I KNOW that they both use the CLR and both do pretty much the same thing!  Thus the beauty of .NET. 

I hate the look and feel of VB.  I highly avoid using it, and if I did I'd have to stumble through it... but I'd be able to. 

Alex, the beauty of open source... make it VB and maintain it all you want.  You won't hurt anybody's feelings here. 
Aug 1, 2008 at 11:59 AM
Yep, a sticky.

http://www.dotnetnuke.com/Community/Forums/tabid/795/forumid/118/threadid/18782/scope/posts/Default.aspx
Aug 1, 2008 at 12:34 PM
alex -

thanks for the support... i wouldn't consider myself a noob (maybe to this project, but not to ASP.NET), but i'm not an expert by any means.  i would be very interested in your vb version if it is up to date w/the new 1.45 release.  so far i've made a bunch of modifications to the C# version, but i wouldn't mind backtracking a little to get a vb.net version.  as for this project, it is open source, so guys like alex can freely create their own versions to help out different people.

thanks again alex. i, too, hate snooty c# devs. now if i wanted to write a new class, for instance, would i have to do it in c# or could i write a class in vb? how would i go about that?
Aug 1, 2008 at 7:14 PM
Edelmen-- The port is 100% written in visual basic, blogengine.core and  blogengine.web including the inline code on the pages and user controls as well as the code files.  You can simply work in this as you would any VB.Net solution.  However, if you plan on writing extensions, you will still need to follow the guidelines for extension development (Ie creating the widget and edit.ascx files).  Thes should be built in VB.Net as well.  I plan on adding the integration to allow C# and VB widgets to run in the same project, but for now its all 100% VB.

C# devs-- I think I pissed in my own cherios ;) I thought I saw a newcomer getting ganged up on so... Anyway, I really feel that this blog engine is a great project with a lot of potential.  Its built on an excellent framework is really one of a few projects that is ready to take advantage of the newest web 3.0 technologies.  I look forward to working together to make this project better than WordPress.....
Aug 1, 2008 at 7:31 PM
ckincincy wrote "For big projects it makes no sense to have multiple code bases.  Not a bit.  Because then you have to have bug fixes and 'hacks' in the code specific to each language.  Not a good solution at all."

While you have valid point that there is an increased maintenance payload, I don't agree with the statement that it's not a good solution at all. The most successful open source project have to deal with that very issue, for example apache, php, mysql all have different versions for different operating systems.  CURL, OpenSSL, FireFox, etc...

Further, ASP.NET itself must deal with the same,  different languages, different operating systems (yes there is a C# version for Linux), different web servers, etc...

. Integration and cross-compatibility are key attributes shared among successful open source projects. 
Aug 1, 2008 at 8:24 PM
I was a big VB dev and switched to C#.  Personally, I think the code is cleaning and a little easier to read.

Thankfully, there are a few websites I have seen online that convert the two back and forth (with a few minor problems between the two regarding [] and () )

You can have both though in an application, just the C# and VB files must be in different folders in the App_Code folder and there is something you have to do with the web.config to know which compiler to use one the different folders.

So, unless you are modifing the core.dll and for whatever reason you don't want to install the C# express, your wasting you time with the arguement.  Whatever reason you want the VB version, I can probably do with the C# version. 
Aug 1, 2008 at 9:16 PM
Alex,
Developing for different OS's is completely different then coding in a completely different language.

DNBE.NET supports Mono.  They changed some core code to make that happen.  THAT makes complete sense. 
Aug 2, 2008 at 1:07 AM

Wow, what a thread...  I didn't get the impression that ckincincy was insulting VB developers...  I started with VBScript (no JavaScript here) and then went over to VB 6.0...  The finally moved to VB.NET and eventually started writing everything in C#.  This progression was a necessity becuase I found that most large projects (BlogEngine.NET) are written in C#.  I got tired of using the online conversion tools to make their samples and such work in VB.  For those using VB.NET I suggest moving over to C# for the simple fact that most professional developers use C# and you can find tons of C# samples to accomplish most anything you are trying to accomplish.  This isn't a dig on VB.NET, just a reality.

As for those who wish to stay with VB.NET.  Good for you.  There's nothing wrong with VB.NET.  Very powerful, very capable, very flexible.

That being said...  There is an air of arrogance by C# developers when you ask them VB questions.  I feel it and I'm sure others feel it.  You have to ask yourself, what do you really care what others think about your programming language selection?  The fact that edelman jumped all over ckincincy indicates that edelman has a serious complex about writing in VB.NET...  I'm not a shrink, but it was obvious to me that ckincincy didn't say anything to provoke the response by edelman.  So to edelman I say this:  If you have a serious problem with C# developers looking down their nose at you then you really need to switch to C#.  The self loathing will eat you up man!

By the way, curley's are cool once you get used to them!

My $0.02 worth.

Chris

Aug 2, 2008 at 1:11 AM
Ckincincy, I agree.  Mooglegaint, there are reasons I would like to update the webengine.core.  Comments are ReadOnly.  I want to be able to edit them, just like I can in WordPress.  Some people make typos ( like me ), and I would like to be able to edit comments.  The Core only rewrites urls for Posts.  Not categories, not rss feeds, not tags.  And that not very user friendly or search engine friendly.  Since this project is developer centric and not end user centric, I don't think I have got one vote for my suggestion to rewrite feed url's

If some one is at my blog looking at all of my posts labeled "visual basic blog", ie: http://blog.alexanderhiggins.com/tags/visual-basic-blog,  I would like for them to be able to go to http://blog.alexanderhiggins.com/tags/visual-basic-blog/feed an get the RSS Feed for all of my posts that I have the tag Visual Basic Blog for.  I have the functionality now in WordPress and would like it in BlogEngine.Net.  My goal here is to help provide an viable alternative to WordPress.  And not viable becuase of the technology( PHP-CSharp-VB that doesn't matter) but in regards to functionality.

Also consider the people who may want to import their blogs from another platform.  Users have their feeds and pages bookmarked, search engines routinely crawl feeds and pages at certain urls and have given those pages a certian page rank in their search engine.  Asking them to migrate to a new blog platform and lose all of those things should not be acceptable.   I am still using WordPress.  I do have two different installations of BlogEngine.Net VB running, but I feel that I need to extend them to have some of the features that word press offers before I will migrate to BlogEngine.Net

Don't get me wrong, BlogEngine.Net is the best Open Source alternative to WordPress available at the moment, and their are only a few things, like being able to maintain existing urls and permalink structures, that stop me from porting my existing blog.  The changes I want to see do require that the core is modified. And they don't seem to be a major priority to anyone but me.  But that's the beauty of open source.  If I don't like it, I can change it.  And I would rather change using the language that I am comfortable using, and make the changes in a few minutes or a few hours, instead of dealing with a learning curve that will cause the changes to take a few days or a few weeks.

I have gone down that route before, hacking away at C++ dealing with Microsoft TAPI api, because I wanted to build a voice automated answering directory that could be administered via the web.  I ended up hacking code to get things working the way I wanted, but it took weeks and that the rate I was accomplishing my goals was unaccepetable.  Now, if there where a managed VB wrapper then I probably could have done what I wanted to do in a few days or few weeks.

Aug 2, 2008 at 1:32 AM
Here's a perfect example of something in the core that needs to be changed...

While Mad and Al did a wonderful job helping this guy import his blog into be.net, he has to write a post asking his current subscribers to update the url of their feed subscription http://joeon.net/post/I-have-a-New-Blog-Engine-and-RSS-FEED.aspx

Of couse he could set up his own redirect, either in IIS or Asp.Net, but that's not the point.  The typical end user that downloads the open source and uploads it to their GoDaddy site isn't going to have the know how to do all of that.
Aug 2, 2008 at 3:22 AM
Alex,
Your problem is not a functionality issue, but a documentation issue.

You can give a short cut to a specific tag... I don't know the url structure... but I'm pretty sure its possible, and if its not....

Write an extension (in VB no less) that does what you want.  Every issue you brought up can be addressed with an extension.
Aug 2, 2008 at 5:40 AM
Edited Aug 2, 2008 at 6:01 AM

Ckincincy, I agree with the documentation issue.  There's definitely room for improvement when it comes to documentation with this project.  The wiki little usable information on it. I just tried cleaning it up a bit, but I really couldn't manage to do much besides fix some gramatical and factual errors in the FAQ.  I also commented out some broken links that point to error pages.

Digging through the extenstion editor (in CS v 1.4 admin\extension manager\editor.ascx line 72) there is a line of code that looks for "VB_Code" in the assembly name and will load a .vb file as opposed to the default .cs file.  From that I gather that the developers on the project either have a) future plans for VB operability or b) have already implemented it, but have not documentented it. 

In any case, I do not know how to make "VB_Code" appear in the assembly name using a dynamically compiled class.  Anyone??

dscoduc: 

Context is everything.  This next snippet is one that I first read when researching the latest Artificial Intellegence Technologies.  AI is a dream of mine.  Call me crazy but AI is part of the reason I want to be involved with this project.  BlogEngine.Net and WordPress are two pioneers in the implementation of the next generation of what I call web 3.0 technologies such as soic and apml. At some point these technologies and others, like micro extenstions, will allow for a decentralized database that can be distrubuted accross mulitple platforms with no boundaries, no barriers.  Such a database is the true beginning for Aritficial Intellegence and a brand new era of technologies like the world has never seen before. 

Digg this, I had a visitor come but my blog because we both had very bad experiences with Cuil's Twiceler bot way before anyone ever even knew who they where.  Hey some people reading this thread may not know who they are. In any case, he leave a comment on my blog so I go see what he has on his blog.  He put together a Linguistics filter that searches twitter and creates movies reviews.  I find that so fascinating, programmatically tapping into the combined conscious of people all over the world tweeting about who know what and putting together pretty acurate movies reviews.  He uses Bayesian Filters as a lingustics processor, like that used to determine if an email is spam and applied it to twitter posts. I don't know, maybe I am really a nerd, by I find the concept fascinating.. here's the post http://blog.alexanderhiggins.com/2008/07/flixpulse-twitter-based-movie-reviews.html 


Any way, Back to Artificial Intellegent... I have envisioned creating a neural network of nodes, where each node is an Class Object, and planned on populating those nodes with text parsed by a crawler I am working on.  Basically the bot would read text and begin to dynamically add attributes, variables,  members,  functions to the node it is currently researching.  For example, \the bot visits a web page and reads "An apple is read".  It use "an" as an identifier to the noun apple and creates an Apple class.  "Is" is applied as a modifier of the apple class to create property for the apple as being red.  Basically, the bot teaches its self and modifies the Class Object via Dynamic Compilation and then shares that data with other bots in a discontiguous network like those proposed by the FOAF project.

So anyway, let me make my point.  In doing my research, I came across a wikipedia article on Natural Linguistics. One major issue with teaching computers to learn the way I envision my AI bots to learn is way is resolving ambiguity based on the context in which words are used. For example consider the sentence "I never said she stole my money" 

This is how the article breaks it down:

  • We will often imply additional information in spoken language by the way we place stress on words. The sentence "I never said she stole my money" demonstrates the importance stress can play in a sentence, and thus the inherent difficulty a natural language processor can have in parsing it. Depending on which word the speaker places the stress, this sentence could have several distinct meanings:
    • "I never said she stole my money" - Someone else said it, but I didn't.
    • "I never said she stole my money" - I simply didn't ever say it.
    • "I never said she stole my money" - I might have implied it in some way, but I never explicitly said it.
    • "I never said she stole my money" - I said someone took it; I didn't say it was she.
    • "I never said she stole my money" - I just said she probably borrowed it.
    • "I never said she stole my money" - I said she stole someone else's money.
    • "I never said she stole my money" - I said she stole something, but not my money.

    Its all about context.  And with written communication, its hard to understand which words the author is placing stress on, so the reader is left to draw their own conclusion as to what the authors intent was. 

    So maybe that's why ckincincy assumed that some one pissed in my cheerios. But again, its all about context.  Maybe I misunderstood ckincincy intentions, but I just don't want to watch a fellow programmer get bashed, and from my perspective that's what I saw going on.

    So back to BlogEngine... although I am offering a Visual Basic version, I still have much to learn about the project.  Hopefully we can get this documentation hiccup fixed. But I am have some difficulties find the information I am lookging for.  There's information in the forums here, information on Mads personal blog, information on the wiki, and information in a few other places....

    So please, no hard feelings anyone... 

  • Aug 2, 2008 at 6:20 AM
    Edited Aug 2, 2008 at 6:21 AM

    Also, I started babbling so 

    Alex,
    Your problem is not a functionality issue, but a documentation issue.


    I am probably wrong but I disagree.  I see a lot of funcationaliry hard coded into the core dll that can not be overriden.  Feel free to post C# snippets, I can read them and understand them.. But I am going to post some VB so you can see what I am looking at...

    In the web HttpModules I see this...

    Dim context As HttpContext = DirectCast(sender, HttpApplication).Context
               Dim path As String = context.Request.Path.ToUpperInvariant()
               Dim url As String = context.Request.RawUrl.ToUpperInvariant()
    
               If url.Contains(BlogSettings.Instance.FileExtension.ToUpperInvariant()) AndAlso Not url.Contains("ERROR404.ASPX") Then
                   If path = Utils.RelativeWebRoot.ToUpperInvariant() + "DEFAULT.ASPX" AndAlso context.Request.QueryString.Count = 0 Then
                       Dim front As Page = Page.GetFrontPage()
                       If front IsNot Nothing Then
                           url = front.RelativeLink.ToUpperInvariant()
                       End If
                   End If
    
                   If context.Request.Path.Contains("/blog.aspx") Then
                       context.RewritePath(Utils.RelativeWebRoot + "default.aspx?blog=true" + GetQueryString(context))
                   ElseIf url.Contains("/POST/") Then
                       RewritePost(context, url)
                   ElseIf url.Contains("/CATEGORY/") Then
                       RewriteCategory(context, url)
                   ElseIf url.Contains("/PAGE/") Then
                       RewritePage(context, url)
                   ElseIf url.Contains("/CALENDAR/") Then
                       context.RewritePath(Utils.RelativeWebRoot + "default.aspx?calendar=show", False)
                   ElseIf url.Contains("/DEFAULT" + BlogSettings.Instance.FileExtension.ToUpperInvariant()) Then
                       RewriteDefault(context)
                   ElseIf url.Contains("/AUTHOR/") Then
                       Dim author As String = ExtractTitle(context, url)
                       context.RewritePath(Utils.RelativeWebRoot + "default" + BlogSettings.Instance.FileExtension + "?name=" + author + GetQueryString(context), False)
                   End If
               End If

     I understande that RewritePost really rewrites an IPublishable item and not a post.... But am I wrong here?? The Url Rewritter is hard coded to rewrite Post, Page, Calender, and Author.

    When it comes to blogs its all about the categories, tags, and feeds...  So if i wanted to implement any of these via widget (Ie, no modifications to the core code then:

    1.  I need to setup my own custom 404 error page
    2. Implemen the current functionality in the error404 class
    3. Have my custom custom 404 page load my widget.
    4. Perform Url Rewriting from inside of my widget  

    That seems very hackish to me.  I would be much easier and cleaner to modify the core.  But a key feature of this project it the extensions.  Seriously, that's what is going to sell it. That's why WordPress is so great.  As far as default out of the box features, BlogEngine.Net is really neck and Neck with WordPress as far as functionality.  BlogEngine.Net looses when themes, plugins, marketing and community come into play. Those all easily addressable. 

    Am I wrong??? Can I override the urlrewriting that takes place in the Core.DLL from inside my widget??   Again, Be.Net is new game to me so please, I need some Skoolin...

    Aug 3, 2008 at 7:41 AM

    Ok, so I am wrong I figured this out...

    If you create your extenstion and have it set to Implement IHttpModule, in the web.config if you add your module before: 
    <add name="UrlRewrite" type="BlogEngine.Core.Web.HttpModules.UrlRewrite, BlogEngine.Core"/>

    You can entirly override the core.dll urlrewrite.  Even though that's a work around, I still stepping outside of the extension framework.. but I can live with that