WEBVTT

00:00.000 --> 00:09.460
This is dedicated to all the hackers and the crackers, to the hackers and the crackers.

00:09.760 --> 00:15.520
I see in binary, I speak source code, step on my toes, I'll post a million jpegs of you

00:15.520 --> 00:20.780
and a fag pwned, in your digital stance getting firewalled ho, cause I'm riding the net in

00:20.780 --> 00:26.440
my six-fold, I was a dick with my 56, now with my cable I'm able to get that stable,

00:26.440 --> 00:31.740
on the out, my name is Ace and I'm a Leo, on the digital highway, my name is Neo and

00:31.740 --> 00:37.240
I'm a hero, in a flash, I'll screw you on burning dreamcast, you need some ISO, let me through

00:37.240 --> 00:42.680
my hard drive rifle, our exchange you could never stifle, in a digital hug, you just caught

00:42.680 --> 00:48.940
the love bug, I bootlegged your CD, I caused a fight between Un and Jay-Z, your CG, it's

00:48.940 --> 00:53.460
all gonna be free, whether we take it by force or we take it nicely, you feel that rattling

00:53.460 --> 00:58.140
your phones, when I tell you we just hacked out Jones, and NASDAQ leaves you flat on your

00:58.140 --> 01:03.440
back, cause I am he who loves to hack and crack, cause I am he who loves to hack and crack.

01:03.940 --> 01:11.160
This is dedicated to the hackers and the crackers, serial codes, source codes, ISOs, RANs, SIFs,

01:11.160 --> 01:14.200
SIFs, this is dedicated to the hackers and the crack.

01:14.340 --> 01:20.240
Welcome to Binary Revolution Radio episode, I think 195, I really don't know that either,

01:20.240 --> 01:27.780
last one I had recorded was 194, so I think that's where we left off, so 195 today is,

01:27.880 --> 01:35.680
let's see, you're hearing this June 5th, Tuesday June 5th, 2007, Not Theory is on the phone

01:35.680 --> 01:40.020
with us for the episode this week, I'm at the house, what's up?

01:40.020 --> 01:46.540
In the hazy, and if we can actually get through this episode without totally cutting up and

01:46.540 --> 01:52.600
ruining the entire thing, as we've done how many times in the last 10 minutes, let's see,

01:52.700 --> 01:57.020
let's do some housekeeping, got any Bell's Mind housekeeping? I noticed the mysterious circle

01:57.020 --> 01:59.980
that we mentioned on the last episode has disappeared.

02:01.080 --> 02:05.820
Yeah, I don't really want to talk about it too much, it's top secret, but the people who figured

02:05.820 --> 02:08.820
out the Easter egg, they all know what's up.

02:09.100 --> 02:13.080
Alright, well, I guess that, we'll leave it at that, you got any other updates to Bell's

02:13.080 --> 02:13.680
Mind to talk about?

02:16.220 --> 02:22.320
Nope, things are back online, they had a little hit at downtown, somebody contacted me actually

02:22.320 --> 02:28.020
recently, just a couple days ago, asking how the hell to parse out all this crazy JavaScript

02:28.020 --> 02:33.060
content that's a site that's now, ignore all the JavaScript, if you're trying to scrape

02:33.060 --> 02:38.600
stuff from Bell's Mind, basically, do an NPA search, and find the links off of there,

02:38.720 --> 02:43.060
all of the links are still straight HTML, eventually there will be an API, if you're interested in

02:43.060 --> 02:47.800
it, email me, otherwise, keep scraping the site, it's no big deal, do it as much as you

02:47.800 --> 02:48.020
like.

02:48.680 --> 02:53.900
And speaking of contacting you, there are right ways and wrong ways, why don't you yell at

02:53.900 --> 02:57.900
everybody about the right ways to contact you with information or questions about Bell's

02:57.900 --> 02:58.180
Mind?

02:58.180 --> 03:03.480
The wrong way to contact me is to not contact me and ask somebody else what's wrong with

03:03.480 --> 03:05.260
Bell's Mind, that doesn't work.

03:05.480 --> 03:06.620
As in the forums?

03:07.400 --> 03:07.840
What's that?

03:08.040 --> 03:09.800
As in posting to the forums?

03:10.640 --> 03:15.160
Yeah, for anybody who doesn't know, I realize that I'm kind of like an absentee hacktor at

03:15.160 --> 03:19.560
this point, because I pretty much just work all the time, so if you don't know me, I'm

03:19.560 --> 03:27.100
the guy who runs Bell's Mind, so email me, N, the letter N, theory, at Bell's Mind dot

03:27.100 --> 03:32.140
net, and if you put Bell's Mind in the subject line, I will actually read your email and

03:32.140 --> 03:35.760
reply to it, and if I promise that I'll do something the same day, and I'll get to it

03:35.760 --> 03:36.700
like four or five days later.

03:37.160 --> 03:41.120
Yeah, you'll reply, you'll lie your ass off, but you will actually reply.

03:41.920 --> 03:45.920
No, the two people that emailed me, one guy had a crazy long handle that I can't remember,

03:46.080 --> 03:49.700
but I'm going to post some of this code on the site soon, so you'll all know who he

03:49.700 --> 03:49.920
is.

03:49.920 --> 03:55.120
I got back there pretty quickly, and I still have a pretty good response, he's having some

03:55.120 --> 03:58.700
account problems, but if you're having account problems, if you can't register, can't sign

03:58.700 --> 03:59.760
in, let me know.

03:59.880 --> 04:01.800
If you can't get to the site, let me know.

04:02.380 --> 04:07.960
If you can't hear Binary Revolution Radio, then you're pretty much SOL, so let me know.

04:08.860 --> 04:13.180
I guess if you can't hear Binary Revolution Radio, let me know, but that doesn't make any

04:13.180 --> 04:21.420
sense either, but anyway, let's see, what else in the housekeeping, obviously, we had

04:21.420 --> 04:26.200
another few weeks hiatus there, I was out of town for vacation, and we are pretty much

04:26.200 --> 04:29.960
at the point where I'm the only one doing the show these days, nobody else has time

04:29.960 --> 04:37.140
or is able to fill in and do the show, so we are not weekly these days, we are, whenever

04:37.140 --> 04:41.280
I can get a show out, that's pretty much all I can tell you right now, planned ahead

04:41.280 --> 04:46.400
for this, and as usual, plans fall through for one reason or another, so unfortunately,

04:46.560 --> 04:50.620
there's nothing I can do about it, always took pride in having the show come out regularly

04:50.620 --> 04:55.800
and every week, but just not going to happen, so I'm just telling you up front, disclosing

04:55.800 --> 04:57.240
to you that it's not going to happen.

04:57.340 --> 05:00.620
Speaking of things that aren't going to happen, in Bell's mind, where's Freak Factor?

05:02.020 --> 05:06.380
I don't know, it's pretty much the same place that like eight episodes of Binary Revolution

05:06.380 --> 05:08.180
are, but nowhere.

05:08.180 --> 05:12.220
And they're recorded and just haven't been released yet?

05:13.420 --> 05:18.700
Oh yeah, yeah, we did some Secret Bell's mind, Freak Factor recording, and nobody knows

05:18.700 --> 05:23.940
about it, but the tapes, as they were, were lost, so.

05:24.180 --> 05:28.020
There are actually some recordings on your box, but that's a whole other story altogether.

05:28.240 --> 05:28.380
Yeah.

05:28.380 --> 05:32.520
There are actually a lot of recordings, believe it or not, some people have recorded radio

05:32.520 --> 05:36.680
shows on there from some interface I set up a long time ago, and they're still sitting

05:36.680 --> 05:36.860
there.

05:36.900 --> 05:40.640
I don't think they know how to get to them anymore, because they never cleaned them out,

05:40.780 --> 05:44.660
so I don't know what the hell's up with that, but anyway, whatever.

05:44.660 --> 05:45.880
There you go.

05:46.240 --> 05:50.260
Well, as for the main topic this week, I'm not even sure if we're going to have time

05:50.260 --> 05:56.420
to get to a main topic anyway, so I will mention it later if we have time in the show, but because

05:56.420 --> 06:02.460
of the long hiatus, and because of the fact that I purposely saved a few emails from the

06:02.460 --> 06:07.300
last episode that you and I did, where the topic was Java, I purposely saved some emails

06:07.300 --> 06:11.620
from then, and we've had some other emails since then, so this may end up being an old

06:11.620 --> 06:18.820
email show, a Java redux, Java part two, a redo, if you will, and if we have some more

06:18.820 --> 06:20.280
time, we'll go into a main topic later.

06:20.340 --> 06:23.240
We do have one, but we may just sit on it until the next episode.

06:23.760 --> 06:27.600
So, that being said, let's do some email.

06:37.300 --> 06:54.420
Okay, email for this week, which is, there's quite a bit of it, so, and quite a bit of

06:54.420 --> 06:58.980
it's very long, so not theory, I'm going to just basically, let's go ahead and set a ground

06:58.980 --> 07:03.960
rule right now, that we're just going to start reading it, and interrupt, jump in any time

07:03.960 --> 07:08.420
when there's a point we want to respond to, because if we read the whole email, and wait

07:08.420 --> 07:12.160
to respond at the end, we're going to forget things, they're really long and detailed this

07:12.160 --> 07:16.040
time, which is very cool, actually, it's very good, so let me just start reading, and you

07:16.040 --> 07:21.180
just yell and interrupt, and, I don't know, scream out Armageddon, that's our safe word,

07:21.240 --> 07:24.080
you can scream out Armageddon and interrupt me if you want to add a point to this.

07:24.840 --> 07:25.360
All righty.

07:25.440 --> 07:32.260
All right, first email this week comes from, we're going to call him KG, because he dropped

07:32.260 --> 07:37.140
his docs, I don't know if it's real docs, or if he probably is okay with us reading

07:37.140 --> 07:39.500
it, but we're going to call him KJ, did I say KG?

07:39.580 --> 07:42.360
KJ, just to be safe.

07:42.920 --> 07:49.040
KJ says, I think that this discussion was a bit loose, and he was referring to our Java

07:49.040 --> 07:52.100
episode, I think that this discussion was a bit loose.

07:52.100 --> 07:57.340
I hate Java's guts, is too complex, verbose, and convoluted language.

07:57.920 --> 08:02.140
However, when you said about write once, run everywhere, I think you could have approached

08:02.140 --> 08:08.900
it better, I'm going to correct this as we go along, maybe KJ could approach his English

08:08.900 --> 08:13.540
better, but, I mean, you got stuck on the write once, run everywhere, as long as you

08:13.540 --> 08:14.220
have a VM.

08:15.380 --> 08:16.260
Did I get stuck on that?

08:16.340 --> 08:18.240
I know I brought that up, did I get stuck on that?

08:18.940 --> 08:22.880
No, I don't think so, I mean, we definitely brought it up, but I'm, I don't know, that's

08:22.880 --> 08:25.520
the big deal about Java, there's really not much else to talk about.

08:25.520 --> 08:26.580
Well, true.

08:27.020 --> 08:28.900
I think this is very logical.

08:30.020 --> 08:31.800
I guess he means to say illogical.

08:31.880 --> 08:33.380
I think this is very illogical.

08:33.880 --> 08:35.960
I mean, you can say the same thing about Flash.

08:36.160 --> 08:42.060
You write a SWF once, and it will run on everywhere, as long as you have the Flash player.

08:42.440 --> 08:45.580
So the platform is independent, which makes your code portable.

08:46.380 --> 08:53.120
You can say the same about, and HTML is a write once, run everywhere.

08:53.120 --> 08:56.160
Armageddon, Armageddon, I disagree.

08:56.420 --> 08:57.380
As long as you have a browser.

08:57.900 --> 09:04.800
Now, Flash, on the one hand, yeah, it's write once, and it runs the same, almost the same,

09:05.320 --> 09:05.740
everywhere.

09:06.160 --> 09:07.900
Same with Java, runs very, very similar.

09:08.060 --> 09:15.440
HTML, there are no sets that you could possibly be safe on, but HTML is different.

09:15.440 --> 09:19.220
It's different in one version of Firefox, so HTML doesn't really fit that.

09:19.220 --> 09:24.260
But I thought we had mentioned that Flash was very similar to Java, and that you could

09:24.260 --> 09:27.160
write it, and it would look very similar on most architectures.

09:27.660 --> 09:31.480
Well, I think I even brought up, I think my example was the same thing with .NET.

09:31.620 --> 09:36.400
You have to have the .NET framework installed to be able to use all that stuff as well.

09:37.120 --> 09:38.820
So, I mean, I think that's a fair comparison.

09:38.920 --> 09:40.200
I think we definitely talked about that.

09:40.280 --> 09:43.200
Maybe he wrote the email before he listened to the full episode or something, I don't know.

09:43.300 --> 09:44.900
But we definitely brought some of that up.

09:44.900 --> 09:48.260
Now, I'm going to actually defend him a little bit and play devil's advocate.

09:48.260 --> 09:50.900
Actually, no, I kind of, well, let me see what you think about this.

09:50.940 --> 09:58.640
When he says HTML write once, run everywhere, if you use HTML 3.0, 4.0 standards and no custom

09:58.640 --> 10:01.200
browser markups and stuff like that, do you still disagree?

10:02.400 --> 10:04.080
No, yeah, I don't really think so.

10:04.220 --> 10:07.100
I think that some things do render slightly differently.

10:07.780 --> 10:11.600
I mean, if you did everything like absolute positioning and all that kind of stuff, yeah, it does look

10:11.600 --> 10:17.140
the same pretty much everywhere, but I'm sure that there's some quirk in some browser that

10:17.140 --> 10:18.560
just makes it non-match up.

10:19.560 --> 10:24.440
But you know what, HTML, HTML and Java and Flash, they're very different things.

10:24.560 --> 10:28.960
Java and Flash are much closer to each other than HTML because there's no, there's no virtual

10:28.960 --> 10:30.380
machine in HTML.

10:30.640 --> 10:33.160
Like, it's a format that you parse and you display it.

10:33.380 --> 10:33.700
Right.

10:33.800 --> 10:37.120
But the whole virtual machine thing is very different.

10:37.120 --> 10:42.620
Well, right, well, it's right there in the definition, HTML is a markup language, so it's

10:42.620 --> 10:43.780
interpreted on the fly.

10:44.460 --> 10:50.640
All these other things are either pre-compiled, depending on, again, what flavor of Java and

10:50.640 --> 10:54.320
Applet and all that other stuff we want, we'll back off of that because we're going to talk

10:54.320 --> 10:57.000
about it later, or it's compiled on the fly.

10:58.460 --> 10:58.900
Right.

10:59.100 --> 11:04.520
You know, so it's like, not compare, it's not, I don't know, it's not a good comparison

11:04.520 --> 11:06.320
with HTML as far as that goes anyway.

11:06.320 --> 11:06.960
I don't know.

11:08.100 --> 11:12.660
Ah, let's see, so, um, um, um, um, um, um, where was I?

11:12.700 --> 11:21.020
Okay, just as HTML3.x dump developers start using Java, I guess dumb developers, that's

11:21.020 --> 11:27.540
an irony statement, ironic statement right there, dump developers start using Java and encapsulating

11:27.540 --> 11:29.460
on a Windows-specific environment.

11:30.000 --> 11:35.300
So a Java app will be on a exe installer, which makes it unusable in Linux.

11:35.300 --> 11:39.040
This happens on clients such as TalkShoe.

11:39.460 --> 11:43.780
The installer is useless to Linux, so to make it work, you have to install it to Windows and

11:43.780 --> 11:48.140
then move the installation folder to Linux, and only then Java on Linux can run the client.

11:48.540 --> 11:54.220
Many banks also have some crappy IE-specific web applications which won't work on the Linux.

11:54.220 --> 11:57.660
Now wait a second, wait a second.

11:57.740 --> 11:59.260
He's talking about IE-specific.

11:59.440 --> 12:04.500
Is he talking about, like, IE and ActiveX application?

12:04.700 --> 12:06.100
Like, that's not Java.

12:06.200 --> 12:07.340
That's not what we're talking about here.

12:07.340 --> 12:10.860
Right, I, I, he's not really giving us enough information.

12:10.860 --> 12:16.960
I'm assuming he means Java apps written specifically for Internet Explorer, possibly using the IE libraries

12:16.960 --> 12:18.620
and displays libraries or something?

12:18.740 --> 12:19.480
I don't, I don't know.

12:19.580 --> 12:23.460
Maybe, maybe I'm too much of a Java dupe, but I didn't really think you could make an applet

12:23.460 --> 12:27.080
that, that ran on IE if it's run on Firefox.

12:27.080 --> 12:30.080
But, I've just never seen that before.

12:30.240 --> 12:31.960
I honestly don't know the answer to that either.

12:32.320 --> 12:36.520
And that's, the whole thing is there's so much to Java that's, there's so much overwhelming

12:36.520 --> 12:38.420
information, I just don't know what to believe.

12:38.580 --> 12:41.380
So much conflicting information too, and I think we're going to find that out through some

12:41.380 --> 12:43.200
of these upcoming emails.

12:44.360 --> 12:51.180
Let's see, to go on with KJ's email here, on the Mono versus .NET versus Java, well, Mono

12:51.180 --> 12:53.960
has some philosophical goals to justify its existence.

12:53.960 --> 12:57.620
What is true is that Mono is more like a framework.

12:58.160 --> 13:03.680
You can run Java in Mono, as well as other languages like Perl, Python, C++, etc.

13:05.380 --> 13:13.400
The so-called Windows Forms versus GTK toolkits, GTK sharps toolkits, and how to map each widget

13:13.400 --> 13:14.560
with the next.

13:17.560 --> 13:23.680
Yeah, I, not to be a dick, but that was really broken English through the whole email, so

13:23.680 --> 13:27.280
just trying to understand what some of these things were.

13:27.340 --> 13:28.680
It really jumped around a lot.

13:29.480 --> 13:32.900
So, I don't know, some of those things I think we did talk about.

13:33.680 --> 13:36.860
I don't remember us doing a Mono versus .NET versus job.

13:36.940 --> 13:41.140
I think we mentioned all three of those things, but I don't know that we did a quote versus.

13:42.680 --> 13:43.140
Did we?

13:43.140 --> 13:47.480
Yeah, you know, man, I don't know that I could really say that I know enough about, I mean,

13:47.520 --> 13:51.320
I've used .NET plenty, but I haven't really used Mono all that much, so I don't really

13:51.320 --> 13:54.760
think I'd be qualified to make any type of comparison on that.

13:54.960 --> 13:55.300
Yeah.

13:55.300 --> 14:01.280
I mean, I think we might have simply mentioned that Mono is the attempt at making code written

14:01.280 --> 14:06.420
in .NET portable over to Linux, so that you can use the same function calls that you would

14:06.420 --> 14:12.480
use in .NET, even if it's called, you know, resize underscore win, or whatever, and I'm

14:12.480 --> 14:13.160
just making that up.

14:13.220 --> 14:15.020
I don't know if that's real, so don't email me about that.

14:15.020 --> 14:20.360
But if it's called that in .NET on a Windows environment, they're trying to make that same

14:20.360 --> 14:26.140
function call with the same parameters over in the Linux environment.

14:26.260 --> 14:31.440
Now, they may have to write the code behind it to do it a little differently, but at least

14:31.440 --> 14:36.340
keep the names and function calls the same so that the code will port straight over there

14:36.340 --> 14:43.020
without having to rewrite specific Linux-only versions of the same thing to draw a Windows

14:43.020 --> 14:48.380
version where it's ex-Windows, GNOME, KDE, et cetera, et cetera.

14:49.780 --> 14:49.980
Yeah.

14:49.980 --> 14:56.060
But, yeah, that's definitely something that I have not, I have never done anything in

14:56.060 --> 14:57.440
Mono, so I'll say that up front.

14:57.720 --> 14:57.960
Yeah.

14:58.080 --> 15:01.620
Actually, the only thing I've tried to do in Mono is I've tried to take a .NET application

15:01.620 --> 15:06.200
that's done it with Mono, but apparently Mono doesn't implement the Microsoft, like, Windows

15:06.200 --> 15:10.760
forms, so this thing tried to put up a message box or something like that, and it just

15:10.760 --> 15:15.700
wouldn't, it would give me some error saying that it couldn't find Microsoft.messagebox.show,

15:15.820 --> 15:18.980
or Microsoft.visualbasics.messagebox.show, or something like that.

15:19.100 --> 15:19.940
So, I don't know.

15:20.060 --> 15:24.180
Mono seems like a bit more of a disaster to me than Java right now, just from the little

15:24.180 --> 15:24.860
bit that I've seen.

15:24.940 --> 15:28.500
I'm not saying that it is definitely, but I haven't seen anything great that runs it.

15:28.580 --> 15:32.140
I've seen, I actually heard, I forget the name of the music player, but suppose that there's

15:32.140 --> 15:35.140
something like Mono Music Player for Linux that's just fantastic.

15:35.140 --> 15:39.620
So, I want to check that out, actually, tonight, to see what it's all about, but so far, Mono

15:39.620 --> 15:41.780
hasn't really blown me out of the water.

15:42.180 --> 15:45.180
But that actually brings me to an important side.

15:45.400 --> 15:52.580
For anybody out there who is a .NET wizard and who uses, or at least knows about VisualBasic.NET,

15:53.740 --> 16:01.360
please email us, or me, or somebody, and let me know if VisualBasic.NET supports incremental

16:01.360 --> 16:01.820
builds.

16:01.820 --> 16:06.580
Because I'm working on a huge VB.NET project for somebody that I really hate, and anytime

16:06.580 --> 16:12.180
I change anything, it takes, like, fucking two minutes for the damn thing to just stop

16:12.180 --> 16:15.140
maxing out the processor to let me use the editor again.

16:15.260 --> 16:18.000
So, I just had to throw that in there.

16:18.120 --> 16:20.640
I don't think it does support incremental builds from seeing this.

16:20.780 --> 16:26.800
VisualStudio.NET 2005, and anytime I change anything, I just piss away minutes of my time,

16:27.100 --> 16:28.920
and it makes developing pretty much possible.

16:30.220 --> 16:31.340
All right, there you go.

16:31.820 --> 16:38.760
All right, on that, let's move ahead to a next email from Vati, who was nice enough

16:38.760 --> 16:42.860
to give me a pronunciation for his handle, so take note, people.

16:43.580 --> 16:51.400
Vati says, background, I've been coding primarily in Java, Gawk, G-A-W-K, and PHP for five years,

16:51.640 --> 16:53.520
miscellaneous other languages longer.

16:53.520 --> 16:56.520
Okay, so he's established credibility, so I like the start of this email.

16:57.520 --> 17:05.180
One of Java's great aspects is its stock API, collections of pre-existing objects like GUI components or database connectors.

17:05.180 --> 17:12.340
There are three sizes, quote-unquote, sizes available, so you don't waste drive space with extraneous features.

17:13.120 --> 17:19.500
J2-ME is micro, J2-SE is standard, and J2-EE is enterprise tons of stuff.

17:19.500 --> 17:23.920
So, let's see, keep your target audience in mind.

17:24.020 --> 17:29.520
If your program includes objects in a larger slash newer API than they have, it'll die.

17:30.060 --> 17:36.180
Stick to basics, and your EE dev environment can probably compile apps that run on ME phones.

17:36.180 --> 17:40.360
Most people run 1.4 SE and up.

17:40.620 --> 17:47.440
Compilers have switches to dumb themselves down, but instead, I stay a couple generations behind to be safe.

17:48.980 --> 17:50.180
I'm going to stop right there.

17:50.220 --> 17:51.440
Do we have any reply to that?

17:51.520 --> 17:57.060
I think we kind of bitched and made some comments along those lines,

17:57.120 --> 17:59.080
but I think he actually explained it a little bit better.

18:00.380 --> 18:01.740
Yeah, so far, I'm with this guy.

18:01.740 --> 18:07.000
Yeah, I think that's clear, the way he worded it is probably better than we did.

18:07.700 --> 18:11.480
And actually, I think we were kind of questioning that anyway, so that kind of clarifies some things.

18:11.780 --> 18:17.380
And staying a couple generations behind, see, I don't like the idea of that.

18:17.460 --> 18:21.400
That's not good backwards compatibility when you're scared to upgrade and stuff like that,

18:21.440 --> 18:23.360
but that's a whole, I guess, a whole other topic.

18:23.360 --> 18:31.820
So, he's saying, basically, that just get the J2EE edition or 1.4 SE or above,

18:32.120 --> 18:37.120
and if you're going to develop a micro application, I guess, to use this terminology,

18:37.260 --> 18:41.740
or an ME for something for a cell phone, a portable PDA or something like that,

18:42.060 --> 18:47.720
to just be careful to only use the micro libraries for things that you want to do.

18:47.800 --> 18:49.360
Is that what I'm reading into this?

18:49.380 --> 18:50.620
Is that what he's saying, he or she?

18:50.620 --> 18:57.240
No, I kind of thought that he was saying, basically, use the smallest functions that's possible,

18:57.400 --> 18:59.380
and you may turn out you don't need all that.

19:00.000 --> 19:06.000
You know, if your application is written as J2SE, you might be able to get by with just the J2ME functionality.

19:06.820 --> 19:12.700
But if you were making a J2ME application, and you try to use an SE function or EE function,

19:12.840 --> 19:13.620
it just won't compile.

19:13.980 --> 19:15.400
It will just tell you, I can't find this.

19:15.400 --> 19:22.580
Well, if you tried to code that in the IDE, it's not going to find the libraries that come with SE or EE

19:22.580 --> 19:23.760
because you didn't install them.

19:24.420 --> 19:25.240
Right, right, right.

19:25.320 --> 19:26.200
So they rolled downhill.

19:26.320 --> 19:29.560
The EE should come with everything that the SE and the ME comes with.

19:30.180 --> 19:30.580
Right.

19:30.860 --> 19:31.280
Is that right?

19:31.280 --> 19:38.860
So why not just always use the J2EE and just be knowledgeable and understand which libraries you're going to need

19:38.860 --> 19:40.760
for which applications you're going to write?

19:41.100 --> 19:43.300
Why do they have to break it up into three different things?

19:43.380 --> 19:46.740
Why not just have, you know, project-based?

19:46.840 --> 19:48.260
What type of project are you writing?

19:48.360 --> 19:51.980
Just have one IDE, J2EE, Enterprise whatever edition,

19:51.980 --> 19:58.600
and then when you start a new project, program, whatever nomenclate you want to use, select.

19:58.720 --> 20:01.180
Are you writing something for a portable object?

20:01.360 --> 20:08.020
If so, I'll only demonstrate and show you the available objects and libraries for that type of application.

20:08.600 --> 20:10.480
That's something that's an issue we handle in the IDE.

20:10.740 --> 20:10.860
Oh, yeah, actually, Eclipse does that.

20:10.980 --> 20:13.380
Eclipse will let you set project-specific and say,

20:13.720 --> 20:19.660
okay, for this project I want to use Java 1.3 with only these particular settings,

20:19.660 --> 20:23.320
and I want, you know, I want to be able to auto-complete these different libraries.

20:23.840 --> 20:25.640
Yeah, Eclipse definitely does that.

20:25.700 --> 20:28.960
You have one editor that does M-E-S-E-E-E.

20:29.260 --> 20:30.660
It's exactly what you're talking about.

20:31.300 --> 20:35.560
All right, so that should just, it seems to me like we don't have a need for J2M-E-S-E-E.

20:35.680 --> 20:40.400
Just have one fucking development environment and let the users select what they're doing.

20:40.800 --> 20:42.340
You know, this is for programmers.

20:42.460 --> 20:45.660
If you can't figure that out as a programmer, then...

20:45.660 --> 20:50.500
But I think you're confusing the development environment and the run time.

20:50.620 --> 20:53.300
The point is the development environment can support all of them.

20:53.620 --> 20:55.880
You can let your app, whichever application you want.

20:56.000 --> 20:56.340
Right.

20:56.380 --> 20:58.540
Or whichever standard, M-E-S-E-E-E.

20:58.660 --> 21:01.960
But if you're running something on a phone, it only has the M-E run time,

21:02.040 --> 21:05.400
which means it has this very small subset of functions they can use.

21:05.400 --> 21:09.860
So if you try to use something that's S-E-E-E, it's just not going to run.

21:09.860 --> 21:15.240
All right, I hear you, but I'm saying that when I, let's say I use, again, the E-E,

21:15.360 --> 21:18.880
let's call that the I-D-E, we're going to call it J2-E-E or whatever.

21:19.800 --> 21:20.480
I don't know.

21:20.520 --> 21:21.620
What was the name?

21:21.740 --> 21:24.500
Is there a name of the actual development environment itself?

21:25.340 --> 21:25.980
Yeah, Eclipse.

21:26.200 --> 21:27.100
Eclipse, okay, I'm sorry.

21:27.200 --> 21:28.860
Maybe I'm using, maybe my names are...

21:28.860 --> 21:31.240
So let's say you're in Eclipse and you want to write a program.

21:32.000 --> 21:36.380
Why not just have one super version of Eclipse that has E-E libraries, S-E libraries,

21:36.500 --> 21:37.880
and M-E libraries, all of them?

21:37.880 --> 21:39.120
And I say...

21:39.120 --> 21:39.380
That's what I'm saying.

21:39.580 --> 21:40.900
Eclipse has that already.

21:41.020 --> 21:42.560
That's exactly what Eclipse does.

21:42.720 --> 21:46.480
Well, then why does J2-M-E and S-E and E-E, why are they all separated?

21:47.800 --> 21:49.200
Because they're different run times.

21:49.460 --> 21:51.360
You might have a device that runs E-E.

21:51.480 --> 21:53.300
You might have a phone that runs S-E.

21:53.400 --> 21:55.300
You might have like a web server that runs E-E.

21:55.460 --> 21:56.400
It needs to do a lot of stuff.

21:56.600 --> 21:57.860
Oh, so this is not...

21:57.860 --> 21:59.340
When you download a development environment,

21:59.420 --> 22:04.840
you're not downloading only the J2-M-E Eclipse with only J2-M-E libraries?

22:04.840 --> 22:10.960
No, you might be able to download like a J2-M-E or J2-S-E, like SDK,

22:11.240 --> 22:13.140
but Eclipse comes with everything all together.

22:13.500 --> 22:14.640
Okay, well, that's...

22:14.640 --> 22:15.220
What is Eclipse?

22:15.360 --> 22:16.900
Does that come from Sun?

22:18.020 --> 22:20.080
No, Eclipse is an IDE that was like...

22:20.080 --> 22:20.980
It's an open source IDE.

22:21.540 --> 22:25.140
Actually, it's a framework for building editors that you can...

22:25.140 --> 22:26.940
That they've built this Java IDE off of,

22:26.940 --> 22:29.400
and I think it's kind of sponsored by IBM or stuff like that.

22:29.440 --> 22:30.220
But it's all open source.

22:30.320 --> 22:31.540
It's actually written in Java,

22:31.540 --> 22:33.280
and it's like a really...

22:33.280 --> 22:34.520
It's a really amazing development.

22:34.720 --> 22:35.600
Well, that's great.

22:35.720 --> 22:37.240
I mean, it sounds like there was a need for that.

22:37.260 --> 22:37.800
It's a great thing.

22:37.840 --> 22:39.440
But let's take that back out of the equation

22:39.440 --> 22:44.120
because it's not something that Sun delivers as something for Java.

22:44.180 --> 22:45.340
It's a third-party thing.

22:46.120 --> 22:46.560
Oh, yeah.

22:46.660 --> 22:47.540
So it sounds great.

22:47.560 --> 22:48.780
I can't say much about Sun.

22:48.960 --> 22:50.960
I don't know what to say about those guys.

22:51.380 --> 22:54.060
Yeah, I mean, from what I've seen in my experience,

22:54.060 --> 22:55.860
I go to the website to download a development,

22:56.320 --> 22:57.940
and I have to download one of those three.

22:58.120 --> 22:59.300
At least the last time I looked,

22:59.300 --> 23:01.860
and I got so frustrated, as we've talked about in the other show,

23:02.500 --> 23:05.540
it's like, geez, why can't I just download one thing

23:05.540 --> 23:08.520
and then let me wade through and read the RTFM

23:08.520 --> 23:10.280
and figure out what libraries I need to use

23:10.280 --> 23:12.460
for what application I need to develop?

23:12.900 --> 23:15.540
So it sounds like that need was so in demand

23:15.540 --> 23:18.040
that third-party people, open source, whatever,

23:18.180 --> 23:21.960
have developed Eclipse to do exactly what I'm describing to do,

23:22.020 --> 23:22.760
which is great,

23:23.140 --> 23:26.280
but let's not give credit to Sun or to Java for doing that.

23:26.280 --> 23:28.160
They obviously missed that need,

23:28.480 --> 23:30.760
and thus there was a need for third-party people,

23:30.960 --> 23:32.280
whether it was IBM or whatever,

23:32.380 --> 23:33.860
to come in and develop that.

23:33.940 --> 23:34.960
So that's a good solution.

23:35.140 --> 23:36.040
I like the idea of that,

23:36.100 --> 23:38.800
but let's not give credit to Sun or to Java for that,

23:38.860 --> 23:39.560
in my opinion.

23:40.500 --> 23:41.260
Okay, fair enough.

23:41.420 --> 23:41.700
All right.

23:42.480 --> 23:42.820
All right.

23:43.120 --> 23:45.220
And, yes, we're going to get a lot more hate mail for this,

23:45.320 --> 23:45.920
but that's all right.

23:45.980 --> 23:47.160
That's the way I feel about it,

23:47.180 --> 23:48.380
so what can I tell you?

23:49.380 --> 23:50.300
Let's see.

23:50.600 --> 23:51.840
Where did I leave off here?

23:52.940 --> 23:57.060
SE has got more than enough for general purposes.

23:57.500 --> 24:00.080
I've rarely needed to look for libraries outside the API

24:00.080 --> 24:01.460
to include with my app.

24:02.000 --> 24:07.100
JDOM is a particularly nice XML parser live by the O'Reilly guys.

24:07.240 --> 24:08.080
That's J-D-O-M.

24:09.800 --> 24:10.380
And, actually, you know,

24:10.460 --> 24:11.420
actually one other question,

24:11.540 --> 24:14.680
because you kind of mentioned this about most people run 1.4 SE and up.

24:14.680 --> 24:16.680
As far as the runtime environment,

24:17.620 --> 24:18.600
you have to be careful.

24:19.180 --> 24:24.940
I mean, you can't assume that everybody has the latest version of the Java runtime stuff, right?

24:25.680 --> 24:26.460
Right, exactly.

24:26.660 --> 24:30.760
So if I run with the just absolute cutting-edge latest version of Java,

24:31.740 --> 24:37.220
anybody that wants to run that Java app is going to have to download that latest runtime library, right?

24:37.240 --> 24:38.920
That's why Java is all the time being updated.

24:39.640 --> 24:40.260
Yeah, exactly.

24:40.260 --> 24:46.860
So it's easy to say something is run anywhere when the quote-unquote anywhere is constantly being updated and changed.

24:48.940 --> 24:49.820
Yeah, exactly.

24:50.180 --> 24:54.720
It's not exactly a perfect system, but the best they've got right now.

24:54.800 --> 24:55.700
But it's not run anywhere.

24:55.820 --> 24:58.520
That's the point I made all along, and people seem to be trying to defend.

24:58.740 --> 25:00.280
The bottom line is it's not run anywhere.

25:00.540 --> 25:06.060
It's run anywhere that has the latest runtime environment updated and installed, you know?

25:07.080 --> 25:07.520
Right.

25:07.520 --> 25:10.140
I mean, I understand it's the nature of it.

25:10.180 --> 25:10.800
Don't get me wrong.

25:10.880 --> 25:11.900
I understand the nature of it.

25:11.940 --> 25:13.980
But let's just be honest and not call it run anywhere.

25:14.300 --> 25:19.520
It's run anywhere that has the proper version and the proper runtime library type,

25:19.680 --> 25:21.060
whether it's M, E, S, E, or whatever,

25:21.320 --> 25:24.800
and the proper version or higher that you need.

25:25.760 --> 25:26.040
Right.

25:26.140 --> 25:28.300
But the point of the whole virtual machine thing

25:28.300 --> 25:32.160
is so that somebody can do the implementation of the virtual machine on that platform once,

25:32.560 --> 25:34.300
and then all of those other things can run on it.

25:34.300 --> 25:37.060
Whereas if you're writing a C application, C is portable, right?

25:37.420 --> 25:42.520
But everybody who writes a C application needs to know about all these quirks of different operating systems

25:42.520 --> 25:45.380
to make it run on those other operating systems.

25:45.640 --> 25:48.320
Whereas a Java virtual machine is supposed to take care of that for you.

25:48.440 --> 25:53.200
And despite what you may think, it really does a pretty good job of that, I think.

25:53.280 --> 25:53.820
No, I think...

25:53.820 --> 25:54.820
At least on the platforms I've seen.

25:54.820 --> 25:56.960
Oh, I definitely think it does it better.

25:57.060 --> 25:57.820
No doubt about that.

25:57.880 --> 26:00.260
I'm not completely saying that it's garbage or anything.

26:00.360 --> 26:01.940
I'm just saying let's put it in perspective.

26:02.140 --> 26:03.100
Let's not...

26:03.100 --> 26:07.060
You know, some of these Java zealots will just put it up on a pedestal like it's the greatest thing ever.

26:07.240 --> 26:08.200
It has flaws, too.

26:09.280 --> 26:10.320
Yeah, everything has flaws.

26:10.440 --> 26:11.360
Yeah, so there's nuances.

26:12.820 --> 26:13.940
Yeah, yeah, right.

26:14.020 --> 26:15.880
The mysterious circle.

26:16.020 --> 26:16.940
That's all I have to say.

26:18.860 --> 26:19.940
It's totally mysterious.

26:20.280 --> 26:21.640
It can take apart guns with its mind.

26:21.640 --> 26:25.640
But keep your eyes on, it may come back in the future, listeners, if you find it.

26:26.960 --> 26:27.860
Behold its power.

26:28.680 --> 26:32.420
Another nice thing is that the whole API source code is available.

26:32.600 --> 26:33.640
Well, of course, that's a great thing.

26:34.120 --> 26:36.480
You can see the guts of a J button or linked list.

26:36.580 --> 26:39.880
You can start by coding RAD style, which is rapid access development.

26:40.200 --> 26:46.820
RAD style, and then eventually streamline by copy-pasting to create an identical but custom object and stripping out methods.

26:46.820 --> 26:52.360
Or if a new Java 1.x introduces a bug, you can make an old-school button from the previous source.

26:53.260 --> 26:54.520
Totally feel you on that one.

26:54.700 --> 26:56.180
That's definitely straightforward.

26:56.540 --> 26:56.700
Cool.

26:57.420 --> 27:02.700
As mentioned before, the write once run everywhere means your users don't need to troubleshoot compiler errors.

27:03.060 --> 27:05.260
They do have to install a virtual machine once.

27:06.540 --> 27:07.420
Okay, I'm going to stop.

27:07.560 --> 27:08.040
Armageddon!

27:08.280 --> 27:08.760
Armageddon!

27:09.480 --> 27:09.920
Armageddon!

27:10.140 --> 27:11.800
They have to install a VM once.

27:12.320 --> 27:15.980
I'm going to insert and constantly upgrade it as new releases come out.

27:16.800 --> 27:20.820
Oh, you don't have to worry about updating it because Java Update does that for you like 15 times a day.

27:20.900 --> 27:21.920
I know, constantly.

27:22.100 --> 27:23.940
I swear to God, I am not joking.

27:24.040 --> 27:26.800
I did that before we started recording and rebooted my freaking machine.

27:27.540 --> 27:27.940
Of course.

27:29.580 --> 27:30.140
Let's see.

27:30.140 --> 27:36.720
They do have to install a virtual machine once, but from then on, they just run your JAR, and it behaves the same on any virtual machine.

27:36.720 --> 27:44.180
And again, correct me if I'm wrong on this or if you know this, but we're going back to what he said.

27:44.180 --> 27:52.080
I think that's within the parameters he laid out earlier of only using the standard stick-to-basics that he says earlier.

27:52.200 --> 27:55.620
Your EE dev environment can compile apps that run on, blah, blah, blah.

27:57.100 --> 28:01.020
So sticking with the libraries and the APIs that it comes with, not using any third-party.

28:01.120 --> 28:03.620
And actually, I'll throw that question out to the interweb listeners.

28:03.620 --> 28:08.140
Are there third-party, are there libraries that don't come with it?

28:08.180 --> 28:11.280
It may come with a lot, but are there third-party libraries?

28:11.400 --> 28:26.320
I know with Visual Basic and a lot of the other visual languages, you can buy third-party libraries that you pay for for things like doing extra graphics functions or 3D graphics and game development, things like that, that you can buy third-party libraries to use.

28:27.080 --> 28:29.960
Is that the same for Java, or do you know the answer to that in our theory?

28:31.040 --> 28:33.380
If you can buy third-party libraries, absolutely.

28:33.620 --> 28:34.360
Yeah, there's tons of them.

28:34.700 --> 28:35.240
For Java?

28:36.560 --> 28:37.800
Yeah, for Java, definitely.

28:38.120 --> 28:38.440
Okay.

28:39.160 --> 28:39.520
Interesting.

28:39.780 --> 28:52.180
Now, if you do that, if you buy third-party libraries to develop, say, I don't know, a game, so you buy third-party libraries that have some tools that help you in programming games like animation or something, and then I want to distribute that.

28:52.180 --> 28:58.140
How do I get those third-party libraries to work on a virtual machine of somebody that didn't have them?

28:58.200 --> 29:03.640
Are they included in the JAR file so that when they get there, they'll load into the virtual machine somehow?

29:04.460 --> 29:10.080
Yeah, you could put them, you could include the JAR files, or you could include those classes in your JAR file.

29:10.440 --> 29:17.720
So, yeah, the distribution of that is all, the package builder, the JAR builder that you have in Eclipse will handle all of that kind of stuff for you.

29:18.420 --> 29:24.560
Now, see, that, now that I know that, that, I think, would alleviate a lot of my frustrations if more people did that.

29:24.640 --> 29:30.700
Is that, sounds to me like that should be something that's a standard programming practice, include any external libraries.

29:30.700 --> 29:37.900
Because, when you, when you put something to a JAR file, I assume there's some sort of packaging process that will put everything you need into that JAR file?

29:38.560 --> 29:39.200
Yeah, exactly.

29:39.920 --> 29:41.440
Hmm, very interesting.

29:42.400 --> 29:42.620
That?

29:42.740 --> 29:49.180
But, honestly, the, the applications that I've worked with, you know, I, I deploy what's called a WAR file.

29:49.340 --> 29:51.040
It's a web JAR, basically.

29:51.340 --> 29:51.620
Mm-hmm.

29:51.620 --> 29:57.720
And I have some external libraries that are required for that, Postgres library, and, and things along, along that line.

29:57.720 --> 30:03.360
But, uh, I actually just put those on the server, and I don't include them with my, uh, with my WAR file.

30:03.460 --> 30:10.740
So, I haven't done it before, but I'm pretty sure that you can just tell it, include these files, and, and stuff them into the JAR, and it should be just fine.

30:10.780 --> 30:14.880
But if you can't, you can distribute them alongside of the, uh, of the JAR file.

30:16.400 --> 30:18.000
So, there is, there is a way to do it.

30:18.000 --> 30:24.760
But, but you have to go, do you have to go out of your way to tell it to include those, or isn't it smart enough to automatically say,

30:24.760 --> 30:30.960
hey, these are not part of my standard runtime library, these APIs, or something separate, and automatically include them?

30:32.300 --> 30:37.940
Well, you know, like I said, I've never packaged a JAR like that before, but Eclipse is definitely smart enough to know when things are missing.

30:38.360 --> 30:39.360
So, once again.

30:39.460 --> 30:41.700
So, if Eclipse exists, Eclipse doesn't.

30:41.900 --> 30:43.360
So, Eclipse saves the day again.

30:44.040 --> 30:49.880
Yeah, Eclipse actually is supposedly IntelliJ, which is, uh, another editor, or another IDE for Java.

30:50.000 --> 30:54.880
It's supposed to be a million times better than Eclipse, which I don't understand how it's possible, but that's what people tell me.

30:54.960 --> 30:58.640
So, if you want, maybe you should just check that out from the start, see what it can do.

30:58.960 --> 30:59.320
Cool.

30:59.640 --> 31:01.780
All right, well, so far, I'm, I'm enjoying this email.

31:01.780 --> 31:04.020
I'm actually learning a couple things I didn't realize before.

31:04.240 --> 31:08.000
So, Vati, you got the, you got the good email of the week award so far.

31:09.220 --> 31:10.460
Uh, let's see, where else?

31:10.580 --> 31:12.520
And we're only halfway through this email, a little over.

31:12.520 --> 31:15.200
Uh, a note on virtual machines.

31:15.440 --> 31:17.960
Uh, let's see, am I, did I pick up the right place?

31:19.520 --> 31:21.820
Yeah, a note on virtual machines.

31:21.960 --> 31:24.220
Technically, they're portable in the USB sense.

31:24.740 --> 31:28.880
The installer's mainly for file associations, browser integration, and path variables.

31:28.880 --> 31:45.260
You can simply copy the virtual machines folder around with your app and use a shell script to run dot myvm slash bin java exe space jar space minus jar space dot my app dot jar.

31:45.260 --> 31:47.880
I'm not sure about licensing issues on that, though.

31:47.980 --> 31:53.380
Similarly, you can have several different virtual machines on the same box if you run them that way.

31:53.380 --> 31:56.920
So, actually, there's another stopping point, if I may.

31:57.500 --> 32:03.000
Do you know anything about, why, why would you need multiple virtual machines for Java on the same box?

32:03.060 --> 32:06.240
If Java's so great, why wasn't, why doesn't one virtual machine do the job?

32:06.240 --> 32:13.440
Uh, you know, I think one virtual machine would do the job, but I think that there might be some breaking changes between versions.

32:13.980 --> 32:18.140
So, some things may work or be quirky if you don't have the same version they implemented.

32:18.280 --> 32:21.200
But it shouldn't really be that way, but that's a possibility.

32:21.200 --> 32:33.200
The other reason is that maybe you've got one particular virtual machine that's optimized, that runs, like, I know there's, like, the Sun virtual machine, and there's, like, the Blackdown.

32:33.380 --> 32:34.460
I think it's called Blackdown.

32:34.660 --> 32:36.740
It's another Java runtime environment.

32:36.840 --> 32:38.840
It might be optimized better to do certain things.

32:39.260 --> 32:42.320
So, you might say, if I'm running this type of application, let me use Blackdown.

32:42.440 --> 32:43.880
If I'm using this one, let me use Sun.

32:43.960 --> 32:45.240
If I'm using this one, let me use IBM.

32:46.300 --> 32:49.960
From what I can understand, it would probably just be performance that you'd be worried about.

32:49.960 --> 32:53.320
But maybe there are other reasons that I'm not clear on.

32:54.560 --> 32:57.740
Yeah, I mean, you've got to maintain backwards compatibility.

32:58.080 --> 33:03.760
I mean, if you want enterprises and big companies to use this, but every time you upgrade it, it's going to break stuff.

33:03.820 --> 33:06.340
And I have seen that happen on multiple occasions.

33:06.440 --> 33:10.460
And then they have to release patches, and it automatically updates 50 times a day, et cetera, et cetera.

33:11.100 --> 33:12.880
And then the updates break more things.

33:12.880 --> 33:16.980
So, that's poor implementation by Sun.

33:17.140 --> 33:20.460
But it is certainly another thing that frustrates people.

33:21.020 --> 33:22.600
And that's, again, kind of the conversation.

33:22.720 --> 33:25.500
It's not necessarily me or even us.

33:25.860 --> 33:28.040
You know, we've had issues with Java in the past.

33:28.080 --> 33:29.000
We've talked about it on the show.

33:29.100 --> 33:32.660
But the whole point of the show is let's give Java a fair shake.

33:32.780 --> 33:33.820
Tell me what I'm missing.

33:33.980 --> 33:38.600
Explain to me some of the things that are frustrating and I'm confused by about Java.

33:38.660 --> 33:39.620
And explain them to me.

33:39.620 --> 33:42.420
That's why we've got a lot of great email this week to talk about that.

33:42.540 --> 33:47.060
So, I'm picking up a few good things that I didn't realize, but some of them I still haven't been convinced.

33:48.180 --> 33:49.960
Let me finish this email here.

33:50.360 --> 33:51.000
Let's see.

33:51.400 --> 33:55.160
Yes, Java is usually more of a memory hog and a bit slower than native apps.

33:55.560 --> 33:59.940
It's a tradeoff for end-user convenience and rapid access development, RAD, for devs.

34:00.300 --> 34:03.380
Some third-party virtual machines try to remedy that with optimizations.

34:03.940 --> 34:08.340
Also, don't confuse IE's slow applet startup times with virtual machine sluggishness.

34:08.340 --> 34:12.420
I don't know what IE's problem is, but Opera runs applets instantly for me.

34:14.260 --> 34:19.760
I would assume, not theory, that that's because Opera probably loads it when you boot Opera for the first time,

34:19.840 --> 34:27.440
so that when you do hit a Java applet, a jar file or whatever, that it already has it loaded into memory when it booted the browser,

34:27.560 --> 34:31.140
so therefore it can run immediately and IE probably doesn't load it at startup.

34:31.140 --> 34:33.460
Yeah, that's a possibility.

34:33.640 --> 34:40.640
I think also IE has like a weird mechanism for starting up the Java runtime because, you know,

34:40.680 --> 34:46.940
Java doesn't come with Windows anymore, so I think it's kind of like a clunky process for IE to fire it up.

34:47.060 --> 34:51.120
Like there might be some like helper ActiveX control or something that does it,

34:51.120 --> 34:55.440
so there's like an extra layer or there's an extra step that it needs to go to in order to start that up.

34:55.580 --> 35:01.240
But yeah, I've seen Java applet performance in, I mean, even in Firefox seems faster than IE,

35:01.480 --> 35:06.380
so it's probably just some bad programming at Microsoft's part.

35:06.460 --> 35:08.120
I know that's not possible, but...

35:08.120 --> 35:12.940
Well, I was going to say, then we go back to the old Microsoft released their virtual machine

35:12.940 --> 35:18.360
and that whole mess that it came from that.

35:19.180 --> 35:19.580
Yeah.

35:20.000 --> 35:21.960
So, yeah, I don't even want to go there.

35:22.700 --> 35:28.040
Anyway, and actually, and I'm just thinking out loud here, I don't know if I'm saying this is correct or not,

35:28.060 --> 35:32.780
but as far as a memory hog, is that because the nature of a virtual machine is you have to load

35:32.780 --> 35:37.720
all of the possible libraries that may be needed in a virtual machine into memory,

35:37.840 --> 35:40.480
into the runtime environment, in case they're used?

35:40.540 --> 35:42.440
Do you have to load every possible one?

35:43.300 --> 35:45.060
No, it can load them on the fly.

35:45.140 --> 35:46.000
It can, okay.

35:46.540 --> 35:46.820
Yeah.

35:47.300 --> 35:48.700
So what else could be causing...

35:48.700 --> 35:55.320
I mean, everybody knows, it's common knowledge that Java apps are more memory intensive and CPU intensive.

35:55.940 --> 35:56.680
Why is that?

35:57.920 --> 36:00.200
Well, there's a couple of reasons I can think of that.

36:00.200 --> 36:06.580
But the first would be that, essentially, you've got that extra layer of virtualization going on.

36:06.660 --> 36:12.660
Because I think of resources, whether it's CPU or hard drive space or RAM, that's some of it there.

36:12.740 --> 36:17.000
But also the Java garbage collector doesn't always run when you think it should.

36:17.140 --> 36:21.700
So, like, if you create a bunch of objects and then you destroy them, you think you get that memory back.

36:21.780 --> 36:24.340
But in Java, you really don't until the garbage parts are run.

36:24.340 --> 36:29.360
So it could just be that the application is poorly designed and it's allocating too many things.

36:29.360 --> 36:37.660
That's not, you know, not being as efficient as it could, which I don't know if that's just a Java programmer thing to do or what.

36:37.780 --> 36:44.920
But if you have an application that you notice that way and you have the source code to it, you can, you know, sprinkle coal into the garbage.

36:44.920 --> 36:48.280
You can force the garbage collector to run and see if that helps it.

36:48.280 --> 36:59.660
But, yeah, in general, I'm not really sure exactly what causes – I couldn't say with 100% certainty what causes the memory bloat and Java applications.

36:59.860 --> 37:01.140
But it's definitely there.

37:01.300 --> 37:01.640
I see it.

37:01.740 --> 37:05.640
The application that I've heard, like the Bellspot application, seems to be pretty lean.

37:05.640 --> 37:09.680
But, you know, the PHP application definitely took up a bus pathway.

37:10.620 --> 37:10.900
Hmm.

37:11.500 --> 37:13.420
But it also did a whole hell of a lot less.

37:13.920 --> 37:16.480
So it's really hard to compare, I think.

37:16.960 --> 37:27.240
If you're – so if you are very careful programming, are you saying things like making sure you have destructors every time you no longer need an object?

37:27.240 --> 37:37.180
Do you make sure you destruct everything you've constructed along the way and that will free the memory back up and not let it sit there and wait to be closed by the machine itself?

37:37.940 --> 37:38.680
Well, actually, no.

37:38.800 --> 37:45.580
In Java, what they do, instead of you having to worry about, like, destroying your objects and things like that, they do what's called reference counting.

37:46.040 --> 37:50.760
So, like, let's say I create an object, right, that has a reference count now of one.

37:51.240 --> 37:51.420
Right.

37:51.420 --> 37:57.580
Somebody else, you know, I pass a – or I pass a pointer, kind of, not really, but somebody else gets a reference to that object.

37:57.700 --> 37:59.860
So we're both looking at that object.

38:00.020 --> 38:02.160
So now the object has a reference count of two.

38:02.900 --> 38:07.900
Well, when I dispose of it, when I tell Java I'm done with it, Java decrements the reference counter.

38:08.000 --> 38:15.820
If the reference counter goes to zero, it's supposed to kind of take that memory space and say, okay, nobody's using this anymore.

38:15.820 --> 38:19.100
Let me free it up and, you know, give it back to the system.

38:19.100 --> 38:24.280
But running the garbage collector to do that is, like, a CPU-intensive process.

38:24.600 --> 38:31.060
So they try to avoid it on third virtual machines, especially, like, the J2ME virtual machines that run on your phone.

38:31.520 --> 38:34.680
Like, running the garbage collector on a phone is really CPU-intensive.

38:34.820 --> 38:36.580
So they like to avoid it as much as possible.

38:36.580 --> 38:49.200
So even if your object has a reference count of zero and it's been disposed of and nobody's looking at it anymore, the system knows that that RAM is earmarked to be free, but only the next time the garbage collector runs.

38:49.320 --> 38:52.380
And unless you run it explicitly, there's no way to be sure when it runs.

38:52.840 --> 38:55.820
Sometimes it will only run when the machine runs out of RAM completely.

38:55.820 --> 39:04.140
So that's why, even when you're disposed of an object, it's still there until you actually explicitly garbage collect it.

39:04.340 --> 39:04.680
Gotcha.

39:04.680 --> 39:05.140
Does that make sense?

39:05.500 --> 39:05.720
Yep.

39:05.900 --> 39:06.540
Perfect sense.

39:07.380 --> 39:07.720
Okay.

39:07.940 --> 39:08.540
I love you.

39:09.440 --> 39:10.680
Oh, let's get married.

39:12.560 --> 39:13.220
Let's see.

39:14.320 --> 39:14.680
Email.

39:15.040 --> 39:16.080
A note on applets.

39:16.200 --> 39:17.240
And we're almost to the end of this.

39:17.540 --> 39:18.400
A note on applets.

39:18.520 --> 39:22.880
Applets are different from applications in that their powers are limited for security reasons.

39:22.880 --> 39:34.100
And while applications are isolated, applets within a browser can talk to each other and share static classes slash variables.

39:38.500 --> 39:41.640
All right.

39:41.900 --> 39:47.680
I just popped a thought into my head, and this may be way off because I once again admit that I'm a complete noob at this.

39:47.680 --> 39:54.500
But if it's persistent, what happens if you open two different tabs with two different applets in them?

39:54.580 --> 39:55.240
Can they share?

39:55.360 --> 40:02.460
Are they using shared memory locations where they can read and write from something that's going on in another tabbed window somewhere?

40:02.560 --> 40:07.340
A Java applet over here that, I don't know, has my credit card information or something like that?

40:07.400 --> 40:15.240
Can I write another Java app that, if opened in another browser tab, can read said memory and pull it over there and deliver it to a different site?

40:15.240 --> 40:22.960
I think the way that the Java security model works is that applets from, like, different domains probably can't talk to each other.

40:23.020 --> 40:24.220
I'm not totally sure about this.

40:24.300 --> 40:28.720
But I think when they came up with that security model, nobody really had tabbed browsers.

40:28.880 --> 40:29.700
So that's an interesting question.

40:29.820 --> 40:30.240
I don't know.

40:31.020 --> 40:35.420
Maybe if you had two tabs open to the same website, those applications would talk back and forth,

40:35.500 --> 40:39.600
but maybe each tab is considered, like, a separate applet container or something.

40:39.680 --> 40:40.480
I'm not really sure.

40:41.180 --> 40:43.000
That would be really cool.

40:43.140 --> 40:44.540
Yeah, that could be pretty awesome.

40:45.240 --> 40:50.280
Yeah, actually, one thing I learned about Java that I didn't, you know, maybe I did realize it before,

40:50.420 --> 40:56.100
but wasn't totally sure about it, is that Java applications can actually manipulate the page that they're on

40:56.100 --> 40:57.440
and, like, screw around with the DOM.

40:57.580 --> 40:58.220
So I don't know.

40:58.640 --> 41:00.680
There's got to be some type of security application there.

41:00.780 --> 41:06.600
Like, can a Java applet, like, dynamically create JavaScript that does, you know, scary things,

41:06.600 --> 41:11.260
like posting to your home and doing weird stuff like that, you know, cross-site scripting, whatever?

41:11.260 --> 41:17.300
I don't know that either, but I know that definitely Java can, you know, mess around with the DOM

41:17.300 --> 41:20.020
and, like, turn check boxes on and off and do scary things.

41:20.660 --> 41:23.860
So if anybody knows the answer to that question, we should write in and let them know.

41:23.860 --> 41:28.880
Or, yeah, if it can just, if it can do that kind of thing, I mean, you could have a trigger waiting for a certain event

41:28.880 --> 41:33.740
in JavaScript, waiting for a Java applet to do something.

41:34.860 --> 41:35.120
I don't know.

41:35.520 --> 41:38.800
Anyway, now that I understand a lot of this, now a bunch of questions are coming to my head,

41:38.820 --> 41:42.960
and these are probably, you know, people that know Java really well from a security side

41:42.960 --> 41:44.300
probably already know a lot of this too.

41:44.300 --> 41:48.740
So please, by all means, email me, because now I'm, I can't believe I'm going to say this not there.

41:48.820 --> 41:53.760
You might have to fly down here and kill me, but I actually think I'm starting to get interested in Java now.

41:54.420 --> 41:57.140
Yeah, Java's the best language ever.

41:57.280 --> 41:59.620
Whoa, okay, now let's not go all crazy now.

42:00.460 --> 42:01.500
Armageddon, Armageddon!

42:02.560 --> 42:06.360
Let's not, let's keep, let's keep this.

42:06.360 --> 42:07.280
It's the best language ever.

42:07.620 --> 42:11.380
You know what, right now, for me, it's the best language that I'm using, to tell you the truth.

42:11.380 --> 42:18.300
But, uh, but it's really neat to, to program in, and I think, uh, I think it keeps, keeps things running smoothly on my side.

42:18.960 --> 42:21.820
Yeah, it really, no, joking aside, I really am becoming more interested.

42:21.960 --> 42:23.540
I understand a little bit more about it now.

42:24.320 --> 42:26.020
So, uh, let's see.

42:26.040 --> 42:26.600
You drank the Kool-Aid.

42:27.160 --> 42:29.360
I took the red pill, or was it the blue pill?

42:29.880 --> 42:30.120
Whatever.

42:30.240 --> 42:30.700
I don't know.

42:31.240 --> 42:35.580
Um, when people complain that it's slow, I always think of this, this fun exception.

42:35.800 --> 42:37.560
Jake 2, a Quake 2 port.

42:37.840 --> 42:40.960
Check out its benchmark comparison against C.

42:41.680 --> 42:43.120
Uh, and he gives a URL.

42:43.240 --> 42:44.200
I'm not going to read it on the air.

42:44.620 --> 42:48.580
Uh, we'll try to put it in the show notes, if we ever get those up to.

42:48.920 --> 42:54.020
Finally, for a convenient reference, here are API docs and monolithic CHM help files.

42:54.100 --> 43:00.580
And once again, I'll try to put that up in the, uh, show notes as well, because it's kind of a long URL.

43:00.580 --> 43:02.100
And I'm lazy, and we're running out of time.

43:02.160 --> 43:06.900
Can you believe we're, like, well over halfway through the show, 40 plus minutes into the show,

43:06.900 --> 43:09.120
and we're only in a second email?

43:10.280 --> 43:11.520
Yeah, that's pretty big.

43:11.760 --> 43:12.320
Yeah, but you know what?

43:12.540 --> 43:14.200
The second email was really good, that's why.

43:14.500 --> 43:14.860
Exactly.

43:15.080 --> 43:19.220
Vati, not only do you win the Email of the Week award so far, and I still got some more coming up,

43:19.720 --> 43:24.140
but since this is the only episode this month, that means by default you win the Email of the Month award.

43:24.920 --> 43:26.600
And quite possibly, this was a good email.

43:26.720 --> 43:29.260
It answered a lot of questions, it explained a lot of things.

43:29.840 --> 43:32.360
Um, maybe the Email of the Year award so far.

43:32.420 --> 43:33.100
What do you think of that?

43:34.700 --> 43:35.060
Whoa.

43:35.060 --> 43:38.940
We don't really have such awards or anything, but I'm making it up right now.

43:40.380 --> 43:43.800
So, uh, let's move on to another long email about Java.

43:44.720 --> 43:46.240
This email is from Pixel.

43:47.280 --> 43:48.000
Pixel says,

43:48.100 --> 43:49.120
ThankDog and co-host.

43:49.760 --> 43:51.600
Regarding episode 192,

43:51.700 --> 43:53.000
wow, is this back on 192?

43:53.080 --> 43:54.300
We're only on 195 now?

43:54.660 --> 43:56.880
Boy, we are not very fast.

43:57.440 --> 44:01.060
Um, I wanted to help clarify a few of your Java questions.

44:01.180 --> 44:01.580
Please do.

44:01.580 --> 44:05.980
There are three flavors of Java, J2SE, J2ME, and J2EE.

44:06.640 --> 44:10.020
Actually, the two has been dropped with the release of Java 5 and 6.

44:10.180 --> 44:11.660
Oh yeah, that's going to clear things up.

44:11.700 --> 44:14.620
Let's just start fucking dropping numbers, renaming shit even further.

44:14.820 --> 44:16.080
That'll always clear things up.

44:16.140 --> 44:16.760
Clear as mud.

44:18.140 --> 44:18.860
Alright, whatever.

44:19.380 --> 44:24.060
J2SE is the standard edition that allows you to create command line applications and GUI applications.

44:25.460 --> 44:28.320
J2ME is a micro edition targeted at mobile devices.

44:28.320 --> 44:34.520
J2ME is a set of standards for defining additions to the standard edition to allow certain mobile-specific functionality,

44:35.020 --> 44:39.280
such as mobile phone camera access, sending SMS messages, etc.

44:40.740 --> 44:46.380
It is more or less the equivalent to installing the Windows Mobile Smartphone SDK on top of standard .NET.

44:46.380 --> 44:50.320
Alright, so I, okay, Armageddon, hold on, I got a question.

44:51.140 --> 44:51.460
Okay.

44:51.740 --> 45:02.540
I thought on cell phones, and you might know this, I thought on cell phones that all this played in its own sandbox and could not, in fact, access things like sending SMS messages.

45:02.540 --> 45:04.240
No, no, no, no, no, no, no.

45:04.240 --> 45:06.420
Actually, you're going to love this.

45:06.580 --> 45:06.960
Oh, no.

45:06.960 --> 45:17.100
There are extensions for cell phones that let them access different functionality on even, like, different model phones.

45:17.360 --> 45:26.920
So you could have one phone that has a GPS and another phone doesn't, but has some, like, assisted GPS where the cell phone network can tell it where it is and all kinds of stuff like that.

45:26.920 --> 45:33.260
So they have standard, this is semi-standardized called some of these things, and I think they're called JSRs.

45:33.260 --> 45:45.100
I don't know what JSR stands for, but, like, if you Google around for something like JSR 139, I don't know what 139 is, but I'm sure it'll say, like, you know, an interface to a camera phone through Java.

45:45.260 --> 45:55.160
So it's some way that you can use Java and get to that native device hardware, but the device has the ability to limit you.

45:55.160 --> 46:02.380
Like, you can pop up a box to the user, print the JVM, and say, do you want this application to be able to use the camera?

46:03.100 --> 46:11.160
And you can say, yes, always, yes, once, no, this time, or no, always, you know, something like that.

46:12.120 --> 46:18.840
So, yeah, Java applets can get to all kinds of stuff on phone, from GPS to the camera to sending text messages.

46:18.840 --> 46:24.380
Sending text messages is very common in standard of across phones now, but those other things, not so much.

46:25.160 --> 46:29.620
So what I just heard was never trust a Java applet on your cell phone.

46:30.540 --> 46:32.860
Well, here's the thing.

46:32.960 --> 46:43.900
The applets are required to prompt you about certain different things, and a lot of these JSRs, they're not accessible on the device unless your code is signed.

46:43.900 --> 46:52.780
So if you have, let's say, a Verizon Razor phone, if you're just a regular Java developer, you can't get to the location API.

46:52.980 --> 47:01.080
You can't, you know, have the phone figure out where it is by GPS or whatever, and then send that information out over a port and, like, spy on somebody.

47:01.440 --> 47:04.940
You need to send your application to Verizon to get it approved.

47:04.940 --> 47:09.580
They have to, like, check it out, make sure you're legit, and then they'll send you a signed copy back.

47:09.720 --> 47:12.640
You can distribute to people that then has access to those APIs.

47:13.280 --> 47:14.020
It won't just...

47:14.020 --> 47:18.660
But that's how they try to assure you security, because, of course, everyone trusts Verizon.

47:19.320 --> 47:19.740
So I wouldn't worry about it.

47:19.740 --> 47:24.700
And I assume they do code review on that to make sure it's not doing anything fishy?

47:25.600 --> 47:27.040
Actually, I think that they do.

47:27.160 --> 47:29.920
I think there's, like, a certification process if you want to...

47:29.920 --> 47:39.920
Specifically, if you want to use the Verizon vocation-based API, I think that there is some type of code review or some type of approval.

47:40.060 --> 47:43.540
Maybe they give it to people who debated that, but I'm not totally sure.

47:43.620 --> 47:49.460
But I wanted to write something that was, you know, location-aware for Verizon, and I looked at their forms.

47:49.460 --> 47:51.780
You had to fill out all the bullshit you had to go through,

47:51.780 --> 47:55.420
and they have a policy where if somebody else has a similar application already,

47:56.000 --> 48:00.260
that chances are they're not going to grant you the ability to write a similar application,

48:00.420 --> 48:03.940
because Lord knows you couldn't have two applications that did similar things,

48:04.020 --> 48:05.180
but one was better than the other.

48:05.900 --> 48:13.820
So, yeah, there is some form of certification and some pseudo-guarantee that the application is not going to, you know,

48:13.840 --> 48:15.720
go crazy and insult you.

48:16.940 --> 48:20.700
And there's no way to install unsigned applications?

48:20.700 --> 48:25.120
It won't just pop up a dialogue like it does when you try to install certain Windows plug-ins,

48:25.180 --> 48:29.200
saying it hasn't passed Microsoft Authent certification, warning, warning,

48:29.380 --> 48:31.240
and you say, yeah, install anyway?

48:31.480 --> 48:33.020
It was not going to allow me to do that?

48:33.960 --> 48:35.340
You know, I'm not totally sure.

48:35.500 --> 48:41.420
There may be hacks to do that, or maybe certain, like, maybe Sprint will let you do that,

48:41.500 --> 48:42.480
but maybe not Verizon.

48:42.480 --> 48:46.440
And I'm not sure how that portion of the security model works.

48:46.600 --> 48:50.860
But I'm sure somebody out there does, and hopefully they'll email us, but it's not.

48:51.440 --> 48:53.300
And we'll get to it in another month or two.

48:54.280 --> 48:54.640
Yeah.

48:54.640 --> 48:57.200
Okay, so let's see.

48:57.260 --> 48:58.060
I left off J2ME.

48:58.220 --> 49:02.400
J2EE is the Enterprise Edition and provides a set of standards for Enterprise features,

49:02.520 --> 49:06.040
including web servlets, message queues, and clustered features.

49:07.120 --> 49:07.560
Okay.

49:08.540 --> 49:12.960
J2SE is created by Sun, and obviously I'm back reading the email here from Pixel,

49:13.080 --> 49:14.100
in case you didn't figure that out.

49:14.960 --> 49:16.460
J2SE is created by Sun.

49:16.460 --> 49:24.480
J2ME and J2EE are implemented by other vendors on top of J2SE to provide specific installations.

49:25.120 --> 49:31.740
For example, Nokia mobile phones have a Nokia implementation of J2ME written for their hardware.

49:31.860 --> 49:32.560
Oh, that's interesting.

49:33.860 --> 49:39.200
Any application which is written to the standard will run on any of the appropriate platforms.

49:39.720 --> 49:44.760
There are some issues with J2ME, but these mostly relate to the different screen resolutions of different devices.

49:44.760 --> 49:51.920
For example, a web application written to standard will run on either Tomcat or Jetty web servers on Linux, Windows, Solaris, or even Mac.

49:52.220 --> 49:56.540
A simple J2ME application would run on a Nokia or Sony Ericsson mobile phone.

49:57.040 --> 50:04.100
Obviously, this is broken when you start including vendor-specific code, but this practice is only really common with J2ME.

50:05.760 --> 50:11.300
And that's kind of what I was alluding to about Java applets in general and vendor-specific code.

50:11.300 --> 50:14.000
In this case, he's talking about cell phones in the ME environment.

50:14.000 --> 50:19.300
But the same potential exists or does not exist in the PC environment.

50:19.420 --> 50:27.340
Like I said earlier, if you've got external third-party libraries that you can buy or something like that, won't the same situation come up?

50:29.820 --> 50:34.960
Or support for PC hardware, drivers, things like that?

50:34.960 --> 50:40.980
I mean, does it use – see, we're probably getting into way too many nuts and bolts details of it at this point, though.

50:42.040 --> 50:44.520
So maybe I should just back off those questions for another day.

50:45.020 --> 50:50.680
If you're looking – if your question – I'm not totally clear on what you're asking, but if you're asking,

50:50.680 --> 50:59.100
is there a way for a Java applet or application or something like that to get to, like, hardware-specific functionality on your PC,

50:59.280 --> 51:01.600
like maybe access some type of USB device?

51:01.700 --> 51:02.640
Yes, there is, actually.

51:03.240 --> 51:03.480
Right.

51:03.580 --> 51:10.340
And would that – if you use those – and it's not part of the standard API – if you use those on Windows,

51:10.340 --> 51:14.360
they're not necessarily going to port over.

51:14.520 --> 51:16.380
So not theory, obviously, just got dropped.

51:16.900 --> 51:20.700
So I'm going to keep talking and wait for him to call back in or hope that he calls back in.

51:21.480 --> 51:24.700
And then I'm probably going to have to repeat all of this to him when he does call back in.

51:24.780 --> 51:30.780
So let's see how long I can stall and keep the show going and hear my wonderful, wonderful redneck voice

51:30.780 --> 51:34.760
before we get the Yankee back on the phone.

51:35.620 --> 51:36.600
Hey, what's up?

51:36.600 --> 51:45.600
I am on the beautiful New York State subway, and I just got cut off at mile marker 117.

51:46.420 --> 51:47.500
So I'll remember it next time.

51:47.600 --> 51:48.900
117, it says bye.

51:49.080 --> 51:49.640
There you go.

51:50.160 --> 51:50.420
All right.

51:50.480 --> 51:57.180
Well, I was just talking and saying that, you know, if there are drivers or whatever to interface with a USB device

51:57.180 --> 52:01.400
or whatever you talked about, they would work in Windows, but they would or would not necessarily work

52:01.400 --> 52:04.860
if you wanted to port that same Java applet over to Linux.

52:04.860 --> 52:09.860
I would think that they wouldn't because the way Windows interfaces with devices is different

52:09.860 --> 52:12.380
than the way that Linux interfaces with devices.

52:12.520 --> 52:15.440
So therefore, I would think that that makes your code immediately non-portable.

52:16.520 --> 52:18.160
Well, hold on a second.

52:18.740 --> 52:19.080
Okay.

52:19.660 --> 52:20.040
Okay.

52:20.040 --> 52:26.280
I forgot exactly where I saw this, but I think it was Microsoft Robotics.

52:26.380 --> 52:33.920
If you Google Microsoft Robotics, I believe they have a board that you can hook up to your PC

52:33.920 --> 52:38.940
that has like, you know, 10 relays or something on it as you control different devices.

52:39.520 --> 52:43.500
Now, you can program this thing in C Sharp or Visual Basic.net or whatever,

52:43.500 --> 52:47.040
but they actually also have Java support for it too, which confused me.

52:47.120 --> 52:50.740
I was like, okay, USB piece of hardware that's got some weird stuff all over it.

52:50.740 --> 52:51.780
How does that fit Java?

52:52.500 --> 52:57.720
Well, they wrote drivers for Windows and they wrote drivers for Linux,

52:57.960 --> 53:01.200
and there's this thing called JNI, which is the Java Native Interface,

53:01.640 --> 53:07.380
which is basically a way that Java can have an interface on Windows, on DLL,

53:07.380 --> 53:10.720
or on linuxa.so file.

53:10.920 --> 53:15.380
So the thing is, your application's always talking to that JNI object,

53:15.960 --> 53:18.060
so it doesn't care whether it's on Windows or Linux.

53:18.200 --> 53:19.500
Your application is portable.

53:19.660 --> 53:25.760
You just need to have that DLL or SO on the machine and that JNI library to do it.

53:25.800 --> 53:29.120
So you do need, there is like kind of like a middleware piece that connects them,

53:29.500 --> 53:32.140
that connects Java to the driver, but as long as you have that,

53:32.220 --> 53:34.940
the actual application that you deploy doesn't change at all.

53:35.640 --> 53:37.380
So it's a piece of middleware.

53:37.500 --> 53:40.520
It's another, basically a plug-in or another part of the virtual machine.

53:40.640 --> 53:44.480
It's another virtual machine, or it's, you have to have the libraries.

53:44.560 --> 53:47.780
And that's why I was saying earlier about can't those be packaged into the JAR files

53:47.780 --> 53:51.880
so you don't have to deliver or expect people to have those extra things.

53:52.540 --> 53:56.420
I don't think that those can be packaged into the JAR files because, again,

53:56.500 --> 54:00.200
I think for security reasons they don't want you to be able to distribute something to somebody.

54:00.580 --> 54:01.940
Like the whole point of Java is that you're sandboxed.

54:01.940 --> 54:09.400
So unless the person wants to go out of their way to install this library that can get direct access

54:09.400 --> 54:12.780
to their USB hardware, you're not going to be able to get to it.

54:12.780 --> 54:21.160
So I think that in that case you wouldn't be able to do that to install that create your JAR file.

54:21.740 --> 54:22.980
I think that makes sense, though.

54:23.040 --> 54:25.140
Like if you want to get to the hardware, there's got to be,

54:25.700 --> 54:31.140
there has to be some type of connection for you to get from this protected language to, you know,

54:31.220 --> 54:33.600
C or whatever the drivers have to do.

54:33.680 --> 54:34.720
That I'm fine with it.

54:34.800 --> 54:36.220
I think that's okay.

54:36.220 --> 54:41.880
Well, especially that makes sense, and that goes back to what he was saying in the email about for mobile environments,

54:41.960 --> 54:47.380
yeah, you have to have the stuff from Nokia to access their hardware, et cetera.

54:47.680 --> 54:49.360
So that makes perfect sense, yeah.

54:50.960 --> 54:54.880
All right, we are never going to get through, we're not even going to get through the emails,

54:55.000 --> 54:56.040
let alone the main topic.

54:56.120 --> 55:00.580
So I'm going to try to read faster and not stop every five seconds, Armageddon.

55:01.600 --> 55:02.000
Armageddon.

55:02.000 --> 55:03.660
All right, let's see.

55:04.040 --> 55:07.340
When talking about Java, everyone gets hung up on the virtual machine.

55:07.940 --> 55:12.780
While it is true that you have to download and install a Java virtual machine in order to run any Java application,

55:13.200 --> 55:16.280
you also have to install the .NET framework to run a .NET application.

55:16.400 --> 55:17.360
I think we said that before.

55:17.820 --> 55:20.200
.NET uses the CLR, or Common Language Runtime,

55:20.280 --> 55:23.380
which executes the .NET equivalent to Java bytecode on the system.

55:23.780 --> 55:27.980
This is how .NET code can be written in C Sharp or VB.NET and even run on Linux using Mono.

55:27.980 --> 55:31.960
The same goes for pre- .NET VB days when you need the Visual Basic Runtime files installed.

55:32.560 --> 55:36.720
Absolutely, I don't think we mentioned Visual Basic, but we have absolutely the same thing.

55:37.240 --> 55:40.740
To run a J2EE application, you don't use a J2EE virtual machine.

55:40.840 --> 55:48.880
You use the standard virtual machine, the J2EE container, e.g. Tomcat, such as Comcat,

55:49.040 --> 55:51.160
which will have the J2EE libraries.

55:51.280 --> 55:54.680
It is even possible to get microchips with Java virtual machines on them,

55:54.840 --> 55:58.480
allowing them to execute Java at a hardware level for embedded systems.

55:58.480 --> 56:12.300
For example, the IMSYSNAP model, TinyURL36QEQD, is a tiny embedded system like the Gumsticks,

56:12.440 --> 56:16.480
G-U-M-S-T-I-X.com, which runs native Java.

56:16.480 --> 56:21.440
I've got to tell everybody, by the way, if you haven't seen the Gumsticks platform before,

56:21.920 --> 56:24.380
I used it a little bit in my last job.

56:24.700 --> 56:25.740
It is really cool.

56:25.840 --> 56:32.220
It's pretty cheap, and it's got a decent amount of functionality, and they're pretty damn reliable.

56:32.360 --> 56:37.240
So I think it's like $99, and there's like a $50 add-on sound card, stuff like that.

56:37.280 --> 56:41.480
If you want to play with an extended Linux device cheaply, that's the way to do it.

56:41.480 --> 56:43.840
Another one is BlackSpan.

56:44.020 --> 56:45.560
If you Google BlackSpan, you'll see it.

56:45.960 --> 56:52.100
But like this guy was talking about, there is hardware out there that implements Java natively,

56:52.420 --> 56:55.440
and one of them is called the JSTAMP.

56:55.520 --> 56:56.860
There's a company called Parallax.

56:56.940 --> 57:01.720
They make a basic stamp that runs basic, but they make a JSTAMP, I believe, that runs Java as well.

57:01.760 --> 57:03.280
And I think it's decently fast.

57:03.720 --> 57:06.760
So Java isn't just for these big slow business apps.

57:06.860 --> 57:10.600
Like, you can really do a better program with it now, and it runs just fine.

57:12.480 --> 57:12.960
Cool.

57:14.240 --> 57:15.020
Let's see.

57:15.160 --> 57:18.080
Any class in Java extends from the base object.

57:18.200 --> 57:22.340
A Java bean is simply a Java object, which contains strings, numbers, and other objects,

57:22.660 --> 57:28.480
which meets the bean specification of having get and set methods for all its public variables.

57:29.820 --> 57:30.300
Ah.

57:31.080 --> 57:31.560
Interesting.

57:31.840 --> 57:32.720
I did not know that.

57:33.500 --> 57:36.900
You know, because I've asked a lot of people, what in the world is a bean?

57:37.680 --> 57:39.400
And nobody can really tell me.

57:39.400 --> 57:44.860
It sounds like it's just a predetermined specification, and if it falls within those parameters, it's called a bean?

57:44.940 --> 57:45.600
It's just a label?

57:46.600 --> 57:53.900
Well, I mean, it sounds to me like maybe something that's considered a bean has no publicly accessible data members

57:53.900 --> 57:56.800
except through, like, get and set method.

57:57.160 --> 58:05.000
So if you had, like, an elevator object, you could have, like, a get floor instead of accessing, like, you know, elevator.floor directly,

58:05.240 --> 58:05.960
something like that.

58:06.000 --> 58:08.140
So everything is wrapped behind one of those functions.

58:08.140 --> 58:10.880
So that's what it sounds like to me, but I could be wrong.

58:11.400 --> 58:15.520
Well, and that's something that, again, I would expect the IDE to have if I tell it,

58:15.660 --> 58:18.540
okay, I know in advance the application that I'm developing,

58:18.780 --> 58:23.040
and I know it to fit within the limitations of a quote-unquote bean.

58:23.040 --> 58:29.520
So I would think that there would be a way for it to make it easier for me to develop that by limiting

58:29.520 --> 58:36.180
or helping me get started writing something that falls within those bean restricted functionality.

58:36.180 --> 58:42.040
Yeah, I don't know that Eclipse does that, but Eclipse does make, you know,

58:42.100 --> 58:44.160
writing, like, getters and setters like that a lot easier.

58:44.280 --> 58:49.140
Like, you can just define all of your variables, and you can tell it generates all the getters and setters for me,

58:49.160 --> 58:51.520
and it just goes off because it writes a lot of code for you.

58:51.560 --> 58:57.720
So Eclipse is kind of there, and I guess if this really is conforming to the bean standard,

58:57.860 --> 59:00.360
Eclipse is kind of there and doing it all for you.

59:00.360 --> 59:05.500
But I'm sure that, you know, maybe there's some plug-in that I don't have that really does take care of all that.

59:06.180 --> 59:08.940
Okay, let's see.

59:09.020 --> 59:10.900
An applet, let's see, did we do that?

59:10.980 --> 59:12.340
A class, a Java bean.

59:12.360 --> 59:16.180
Okay, an applet is deployable Java application designed to run client-side in a web browser

59:16.180 --> 59:18.540
and has a restricted functionality for security purpose.

59:18.980 --> 59:22.940
A servlet is a Java application designed solely to run inside a web server.

59:23.100 --> 59:24.560
I think we did get those right.

59:25.240 --> 59:31.820
While it is possible to use JSPs, JSPs, JSPs, JSPs in the same way as ASP,

59:32.060 --> 59:34.280
with code included in, quote, scriptlets.

59:34.280 --> 59:36.940
Oh, yeah, great, another Java term, just what we needed.

59:37.600 --> 59:39.260
This is not the preferred behavior.

59:39.400 --> 59:42.860
The normal method is to have a servlet, which performs all the logic of an application

59:42.860 --> 59:45.820
and then calls a JSP, which will format and display this information.

59:46.280 --> 59:49.900
This is similar to the .NET method of, quote, code behind,

59:50.600 --> 59:54.080
where the ASPX page calls a DLL to perform business logic,

59:54.220 --> 59:57.600
but from a, quote, code in front method.

59:58.220 --> 01:00:00.880
Now, I'm not familiar with those terms in relation to .NET,

01:00:00.880 --> 01:00:02.320
but that makes sense to me, so.

01:00:04.100 --> 01:00:07.600
JBoss, WebSphere, and WebLogic are all Java application servers,

01:00:07.700 --> 01:00:10.020
which implement the complete J2EE specification,

01:00:10.720 --> 01:00:12.620
whereas Tomcat and Jetty are web servers

01:00:12.620 --> 01:00:16.640
and only implement the more basic web-based parts of the J2EE specification.

01:00:17.140 --> 01:00:20.500
For hosting a web application, JBoss and the others are seriously overkill

01:00:20.500 --> 01:00:21.760
and only really necessary,

01:00:22.260 --> 01:00:26.180
where the web presents a small proportion of your application requirements.

01:00:26.180 --> 01:00:30.120
By the way, JBoss was bought by Red Hat about 12 months ago.

01:00:30.600 --> 01:00:32.520
Thanks for the excellent show, Pixel.

01:00:34.100 --> 01:00:34.540
Okay.

01:00:35.800 --> 01:00:36.780
Another good email.

01:00:38.160 --> 01:00:38.840
Yeah, definitely.

01:00:39.040 --> 01:00:41.000
I learned a lot more from that one, too.

01:00:41.080 --> 01:00:41.680
Thank you, Pixel.

01:00:41.820 --> 01:00:44.040
Excellent show because you guys are writing in great emails,

01:00:44.240 --> 01:00:49.200
and, you know, once again, this show is about us learning a lot of this stuff, too,

01:00:49.200 --> 01:00:52.060
you know, and opening the dialogue with people out there

01:00:52.060 --> 01:00:56.080
that definitely have more, obviously have more experience and knowledge

01:00:56.080 --> 01:00:57.340
in a certain subject matter,

01:00:57.400 --> 01:00:58.980
and this is definitely one of them for me.

01:00:59.960 --> 01:01:01.140
So, that is cool.

01:01:01.220 --> 01:01:02.720
Now, we're like an hour in.

01:01:02.940 --> 01:01:05.000
There is another enormously long email.

01:01:05.180 --> 01:01:05.960
I'm going to,

01:01:07.180 --> 01:01:08.600
I'm going to try.

01:01:08.740 --> 01:01:09.840
We're never going to get through with it,

01:01:09.860 --> 01:01:11.500
so I'm going to read this one super fast,

01:01:11.560 --> 01:01:13.120
and I'm probably going to skip over some parts.

01:01:13.780 --> 01:01:15.600
So, this email from Pernikin,

01:01:15.880 --> 01:01:16.580
I apologize.

01:01:16.880 --> 01:01:19.900
I'm going to chop it up for the sake of time.

01:01:21.360 --> 01:01:21.860
Let's see.

01:01:21.900 --> 01:01:22.540
Pernikin says,

01:01:22.660 --> 01:01:26.420
Props to the DDP for showing that hacking is about gaining knowledge

01:01:26.420 --> 01:01:27.760
and understanding through experimentation,

01:01:28.060 --> 01:01:30.360
not about abusing technology for personal advancement.

01:01:30.740 --> 01:01:33.540
I've been listening to the Minerip podcast for a good while now,

01:01:33.560 --> 01:01:34.280
and I've learned a lot.

01:01:34.840 --> 01:01:38.080
Also, props to Stankdog and Not Theory for giving Java a chance.

01:01:38.900 --> 01:01:39.260
Armageddon!

01:01:40.420 --> 01:01:41.060
Oh, no, wait.

01:01:41.140 --> 01:01:43.100
I guess we are giving Java a chance.

01:01:43.120 --> 01:01:44.680
Actually, I give everything a chance.

01:01:44.760 --> 01:01:47.000
I just need somebody to answer my questions.

01:01:47.120 --> 01:01:47.520
When I say,

01:01:47.680 --> 01:01:48.840
Why the fuck doesn't this work?

01:01:48.880 --> 01:01:49.840
Or, Why doesn't that work?

01:01:49.860 --> 01:01:50.780
Or, Why is this happening?

01:01:51.260 --> 01:01:53.620
And no one can ever explain it to me.

01:01:54.240 --> 01:01:56.620
Then, yeah, I have a tendency to dismiss Java and say,

01:01:56.700 --> 01:01:59.320
Look, nobody seems to know what the hell Java is all about.

01:01:59.560 --> 01:02:01.600
So, yeah, I kind of get frustrated and dismiss it.

01:02:01.740 --> 01:02:04.260
So, I'm glad we did bring this back up.

01:02:05.860 --> 01:02:06.420
Let's see.

01:02:06.540 --> 01:02:09.640
Now, he asked the audience to write in and explain some of the main ideas.

01:02:10.820 --> 01:02:12.780
I've been programming Java for about five years.

01:02:12.780 --> 01:02:14.000
It's professional and it's a hobby.

01:02:14.740 --> 01:02:20.720
First of all, the word Java is used as a sort of universal moniker that can cause a lot of confusion for newcomers.

01:02:20.760 --> 01:02:23.540
When someone says Java, they can be referring to at least one of three things.

01:02:24.300 --> 01:02:25.540
One, the Java language.

01:02:25.800 --> 01:02:26.080
Okay.

01:02:26.080 --> 01:02:27.620
I understand the difference.

01:02:28.140 --> 01:02:30.180
Java API, which depends on your platform.

01:02:30.280 --> 01:02:30.980
I'll explain below.

01:02:31.420 --> 01:02:32.780
And the Java virtual machine.

01:02:32.900 --> 01:02:35.520
And we talked about all of them earlier in the show.

01:02:36.160 --> 01:02:40.860
So, let me skim through some of this because we've already clarified those three separate portions.

01:02:41.000 --> 01:02:43.240
Which I'm glad, him breaking it down is very good too though.

01:02:43.240 --> 01:02:47.100
So, the Java language refers to the actual language, etc.

01:02:48.480 --> 01:02:50.820
On the show, you talk about the Java object class.

01:02:50.920 --> 01:02:58.540
This is kind of a technicality, but the base Java class, the object class, serves as a super class for all object types defined in Java.

01:02:58.540 --> 01:03:00.200
And it has a number of public methods.

01:03:00.340 --> 01:03:03.580
Every object type or class in Java inherits these methods.

01:03:04.000 --> 01:03:07.080
And they choose to override some subset of them.

01:03:07.900 --> 01:03:10.580
I think that's getting into some detail about Java coding.

01:03:10.840 --> 01:03:14.280
And I'm going to have to, we don't have time to go into that, unfortunately.

01:03:16.580 --> 01:03:21.440
Without getting into the details of object-oriented program, here are some differences between Java and C++.

01:03:22.120 --> 01:03:24.280
Which most BinRev listeners are probably familiar with.

01:03:24.400 --> 01:03:26.220
One, Java is type safe.

01:03:26.220 --> 01:03:29.820
Java is strongly object-oriented.

01:03:30.000 --> 01:03:32.700
All user-defined data types are derivatives of the object class.

01:03:32.780 --> 01:03:33.440
We just said that.

01:03:34.640 --> 01:03:37.420
There's some built-in language support for multi-threaded applications.

01:03:38.040 --> 01:03:39.140
Better exception handling.

01:03:39.440 --> 01:03:42.180
And garbage collection, which you talked about earlier as well.

01:03:43.880 --> 01:03:50.140
And he puts in parentheses, which is actually implemented in the virtual machine, but the language assumes that garbage collection occurs.

01:03:51.180 --> 01:03:52.600
So, we did mention that earlier.

01:03:53.320 --> 01:03:53.520
Right.

01:03:53.520 --> 01:03:59.760
Okay, the second, the Java API refers to the library of classes that are available for the programmer to work with in the Java language.

01:04:00.300 --> 01:04:03.480
Again, sorry to chop up your email, but we did talk about that a little bit earlier.

01:04:03.480 --> 01:04:10.260
And that's where we talked about using the standard APIs that come with it to do just about anything you want to do.

01:04:10.260 --> 01:04:14.680
And it sounds like, from what I've heard from everybody, that they'll do just about anything you want.

01:04:14.740 --> 01:04:25.980
If you're going outside of that standard API, you're doing something different and unusual where you have to use these other things, like the Nokia development kit or whatever specific thing you're doing.

01:04:26.040 --> 01:04:27.880
You're going to need something on top of that.

01:04:27.880 --> 01:04:31.860
But generally speaking, it sounds like it's got quite a bit of the base stuff with it.

01:04:33.540 --> 01:04:36.780
If you want to write for your mobile device, you're going to have support for that.

01:04:36.920 --> 01:04:39.000
Okay, yeah, we just kind of alluded to that.

01:04:39.960 --> 01:04:43.240
As not theory put it, J2EE is for building huge bloated enterprise apps.

01:04:43.320 --> 01:04:45.560
And I'm still not sure what a Java bean is.

01:04:46.240 --> 01:04:47.200
Well, guess what?

01:04:47.200 --> 01:04:47.920
Now you know.

01:04:49.920 --> 01:04:53.180
So, see, we're all learning, see, as we go along here.

01:04:53.800 --> 01:04:57.040
The third thing that people use the word Java for is the Java virtual machine.

01:04:57.340 --> 01:04:59.180
Again, sorry, we talked about that.

01:05:00.420 --> 01:05:04.020
Actually, no, I'm going to read this because he's got some things in here I think he's more clear about.

01:05:05.300 --> 01:05:08.900
Java is, in theory, right, once run everywhere, which is definitely an overstatement.

01:05:09.020 --> 01:05:11.740
See, here's an experienced Java person admitting and agreeing with me.

01:05:11.940 --> 01:05:12.660
It's an overstatement.

01:05:12.800 --> 01:05:17.180
It uses a software interpreter program called the virtual machine to allow cross-platform support.

01:05:18.120 --> 01:05:23.420
Basically, Java code is written to run in the virtual machine, which handles all or at least a lot of the platform-specific details.

01:05:23.820 --> 01:05:27.540
When one compiles a Java program, the Java source code is compiled into an inter...

01:05:27.540 --> 01:05:28.340
And this is important.

01:05:28.900 --> 01:05:37.000
When one compiles a Java program, the Java source code is compiled into an intermediate format called bytecode,

01:05:37.560 --> 01:05:40.160
which is in turn executed by the virtual machine.

01:05:40.620 --> 01:05:45.080
The idea is that by writing a program in the Java language using the Java APIs for that platform,

01:05:45.080 --> 01:05:49.460
it can be run on any platform device that has the virtual machine software installed.

01:05:49.940 --> 01:05:54.080
There are many virtual machines available, but the most popular is Sun's Hotspot JVM,

01:05:54.160 --> 01:05:56.460
but that's not to say that it's the best.

01:05:58.640 --> 01:05:58.960
Okay.

01:06:00.060 --> 01:06:00.540
I don't...

01:06:00.540 --> 01:06:01.340
You know what I forgot to do?

01:06:01.380 --> 01:06:03.120
I forgot to get on my iced tea before we did the show,

01:06:03.220 --> 01:06:05.840
so my voice is starting to get out here a little bit.

01:06:07.520 --> 01:06:10.320
Don't forget, you can scream at Armageddon at any time, even though I'm going quickly.

01:06:11.120 --> 01:06:12.680
No, I didn't want to interrupt you, so...

01:06:12.680 --> 01:06:13.080
Okay.

01:06:13.340 --> 01:06:16.960
Also, you touched on this in the show, but Java is useful for more than just web stuff.

01:06:17.760 --> 01:06:19.140
Yep, we did talk about that.

01:06:19.220 --> 01:06:21.840
Applet, Servlets, JSP, we just went through that, unfortunately.

01:06:22.100 --> 01:06:22.900
Gosh, I hate...

01:06:22.900 --> 01:06:23.320
This guy's...

01:06:23.320 --> 01:06:24.560
He wrote a long email.

01:06:24.660 --> 01:06:27.500
I might post this in the forums or something, because it's got a lot of great stuff,

01:06:28.500 --> 01:06:32.340
where he breaks down the differences between applets and servlets and JSP,

01:06:32.340 --> 01:06:35.100
but I think we were right about that the first time.

01:06:35.220 --> 01:06:37.600
I think when we talked about all of them, we were pretty accurate with that,

01:06:37.700 --> 01:06:39.640
and we've confirmed that, so I'm going to skip that.

01:06:41.020 --> 01:06:45.180
The last thing he mentions here is, going back to write once, run anywhere.

01:06:45.960 --> 01:06:49.220
Java is very far from being entirely cross-platform.

01:06:49.680 --> 01:06:52.820
The quote, write once, run anywhere, quote, end quote,

01:06:52.900 --> 01:06:56.700
is completely impossible to achieve on the breadth of platforms that Java supports.

01:06:56.980 --> 01:06:58.060
And that's all I've ever said.

01:06:59.480 --> 01:07:00.820
I wasn't dismissing it.

01:07:00.820 --> 01:07:03.620
When I say that statement, I'm just saying, let's be truthful.

01:07:03.820 --> 01:07:07.680
It's write once, run in a lot of places, but not quite anywhere.

01:07:07.880 --> 01:07:09.200
That's what I think I should say.

01:07:09.980 --> 01:07:10.500
That's true.

01:07:11.340 --> 01:07:12.940
Run most anywhere.

01:07:13.180 --> 01:07:13.980
Run most places.

01:07:15.620 --> 01:07:19.380
Of course, you're not going to be able to write software for your Linux box that runs on your phone,

01:07:19.440 --> 01:07:22.540
but if you wanted to write a graphical application that runs on both Linux and Windows,

01:07:22.600 --> 01:07:23.740
you can do so with Java.

01:07:24.420 --> 01:07:26.900
This is why I first got into Java for my personal projects,

01:07:26.980 --> 01:07:29.280
because I didn't want my programs to be limited to just Windows or Linux.

01:07:29.280 --> 01:07:35.700
Of course, very admirable, you know, what it's attempted to do, very admirable idea, just not quite delivered.

01:07:36.560 --> 01:07:37.900
Java offered me a way to do that.

01:07:37.980 --> 01:07:39.980
Sure, you have to download and install a virtual machine.

01:07:40.100 --> 01:07:40.520
Big deal.

01:07:40.760 --> 01:07:41.920
And, yeah, I agree with that, too.

01:07:41.940 --> 01:07:42.260
Big deal.

01:07:42.620 --> 01:07:46.700
You have to have an operating system with properly installed drivers on your computer for other software to run,

01:07:46.700 --> 01:07:48.660
and this is obviously commonly accepted.

01:07:49.560 --> 01:07:50.120
Oh, wait a minute.

01:07:50.160 --> 01:07:51.020
No, holy crap.

01:07:51.120 --> 01:07:51.480
I got...

01:07:51.480 --> 01:07:52.320
Yeah, okay.

01:07:52.380 --> 01:07:52.980
I didn't...

01:07:52.980 --> 01:07:54.580
I thought I skipped a sentence there, but no.

01:07:54.780 --> 01:07:55.920
I agree with that completely.

01:07:56.040 --> 01:07:56.840
So, let me...

01:07:56.840 --> 01:08:00.620
In case I came across wrong before, it's not a big deal.

01:08:01.480 --> 01:08:02.780
I'm not saying it's a problem.

01:08:02.780 --> 01:08:08.400
I'm just saying that people need to understand that you do have to go out of your way to do some installation

01:08:08.400 --> 01:08:11.900
and to do prepare your environment a lot.

01:08:12.440 --> 01:08:14.060
I'm not saying it's bad or wrong.

01:08:14.140 --> 01:08:18.040
I'm just saying let's not forget to make that point when we talk about how great Java is

01:08:18.040 --> 01:08:20.280
that you do have to do a lot of setup work.

01:08:20.500 --> 01:08:23.980
We also mentioned on that last show that you'd have to do the same thing for .NET.

01:08:24.120 --> 01:08:24.680
I'm not naive.

01:08:24.680 --> 01:08:27.160
I'm not saying it's better, worse, different than anything else.

01:08:27.720 --> 01:08:28.420
It's the same.

01:08:28.580 --> 01:08:30.920
It's similar to everything else as far as that goes.

01:08:32.480 --> 01:08:33.540
Last paragraph here.

01:08:33.860 --> 01:08:36.820
But the write-once-run-anywhere idea breaks down for another reason.

01:08:37.240 --> 01:08:40.880
Even if there is a flawless virtual machine available for every Java platform,

01:08:41.020 --> 01:08:44.240
which perfectly implements the Java API for that platform,

01:08:44.580 --> 01:08:47.420
it's still hard to make your own code cross-platform.

01:08:47.820 --> 01:08:51.300
A lot of the shortcuts that you might want to take won't work well in every environment,

01:08:51.560 --> 01:08:53.740
and that limits the portability of your code as well.

01:08:53.740 --> 01:09:00.840
But in my experience, Java satisfies my niche requirement of cross-platformity between Windows and Linux quite well.

01:09:01.680 --> 01:09:03.480
Anyway, I guess this turned into a long email.

01:09:03.600 --> 01:09:04.220
Gee, I think.

01:09:04.540 --> 01:09:05.880
And I skipped most of it.

01:09:06.120 --> 01:09:08.100
But I hope it helped explain some more about Java.

01:09:08.700 --> 01:09:09.820
I really dig this show.

01:09:09.820 --> 01:09:12.520
Another great email.

01:09:12.640 --> 01:09:14.840
Wow, this is probably the best email show we've ever had.

01:09:14.960 --> 01:09:17.300
So, Pernikin, big shouts out to you.

01:09:17.420 --> 01:09:17.920
Great email.

01:09:18.080 --> 01:09:19.860
Sorry I had to jump through quite a bit of it.

01:09:20.460 --> 01:09:22.700
But I might have to put this up in the forums if you don't mind.

01:09:22.740 --> 01:09:25.240
Or maybe I'll ask you to post it in the forums.

01:09:25.320 --> 01:09:28.140
That way you're inherently giving permission to post it there.

01:09:28.140 --> 01:09:31.440
Anyway, let's see.

01:09:31.480 --> 01:09:32.680
How are we on time here?

01:09:33.840 --> 01:09:35.660
We did have a couple other emails.

01:09:35.880 --> 01:09:39.480
I'm going to skip over those because I think we've beaten Java to death for this episode.

01:09:40.180 --> 01:09:41.300
So, that's definitely our main topic.

01:09:41.400 --> 01:09:45.600
Ended up being Java, the redux, redux, redo, whatever.

01:09:46.480 --> 01:09:47.040
I've heard it.

01:09:47.040 --> 01:09:49.640
Let's see.

01:09:49.720 --> 01:09:52.220
We'll do a couple quick emails since we have a little bit of time here.

01:09:52.300 --> 01:09:53.760
An email from Iron Geek.

01:09:54.220 --> 01:09:54.900
Iron Geek says,

01:09:55.000 --> 01:09:57.060
Hi, stank-a-dank-a-dee-dank.

01:09:57.200 --> 01:09:57.880
And co-host.

01:09:58.660 --> 01:10:01.140
One caveat to the asking about a person's accent.

01:10:01.240 --> 01:10:04.020
To try to endear yourself to them while S-E-ing.

01:10:04.080 --> 01:10:08.960
So, he's referring to the social engineering episode we did last, well, last month, I guess.

01:10:09.000 --> 01:10:09.880
I can't say last week.

01:10:10.220 --> 01:10:10.920
Last episode.

01:10:12.440 --> 01:10:14.500
Sometimes an accent isn't really an accent.

01:10:14.620 --> 01:10:15.540
It's a speech impediment.

01:10:15.540 --> 01:10:18.160
I have people ask me all the time where I'm from.

01:10:18.640 --> 01:10:21.360
My buddy says I should tell women I'm from Latveria.

01:10:21.580 --> 01:10:22.640
Keep up the good work.

01:10:23.780 --> 01:10:25.100
And he has a link to Wikipedia.

01:10:25.260 --> 01:10:26.940
You can go to Wikipedia and look up Latveria.

01:10:27.020 --> 01:10:30.900
But, of course, Latveria is the home of Dr. Doom himself.

01:10:31.320 --> 01:10:32.440
So, I don't know.

01:10:33.420 --> 01:10:37.060
If I lived in Latveria, I'd have to kick Dr. Doom's ass and take the place over.

01:10:37.180 --> 01:10:37.920
But that's just me.

01:10:39.360 --> 01:10:40.380
You ever been to Latveria?

01:10:41.960 --> 01:10:43.660
I've never even heard of it.

01:10:43.660 --> 01:10:44.620
That's because it's fictional.

01:10:45.540 --> 01:10:48.720
I know that, but you've obviously heard of it.

01:10:48.920 --> 01:10:50.360
I was wishing you would say yes.

01:10:50.400 --> 01:10:51.020
That would have been cool.

01:10:51.920 --> 01:10:53.700
But, no, you can't play along with the joke.

01:10:53.780 --> 01:10:54.640
You've got to be difficult.

01:10:54.960 --> 01:10:56.440
Why do I ever have you on the show?

01:10:56.540 --> 01:10:57.160
I swear to God.

01:10:57.200 --> 01:10:58.480
I should just hang up on you right now.

01:10:59.060 --> 01:10:59.640
Wait a second.

01:10:59.780 --> 01:11:00.380
We're on the show.

01:11:01.840 --> 01:11:04.060
Actually, it would have been funny there if you would have hung up on me.

01:11:04.060 --> 01:11:06.660
Okay, but don't do it now.

01:11:06.740 --> 01:11:07.500
Okay, we're almost done.

01:11:07.660 --> 01:11:08.220
Here we go.

01:11:08.640 --> 01:11:11.720
Next email comes from CyberPig.

01:11:12.880 --> 01:11:13.560
CyberPig says,

01:11:13.620 --> 01:11:15.920
Been listening to BinRev for a while now and enjoy the show.

01:11:16.280 --> 01:11:18.580
I'm listening to episode 194 about social engineering.

01:11:18.740 --> 01:11:20.060
And a question popped into my head.

01:11:20.120 --> 01:11:23.240
How does one know they're being socially engineered and to counter it?

01:11:23.240 --> 01:11:26.200
P.S., in case someone hasn't told you,

01:11:26.260 --> 01:11:29.160
the reference to LAMO was connected to the government-run computer forensic school

01:11:29.160 --> 01:11:31.820
in Hoover, Alabama in episode 193.

01:11:31.880 --> 01:11:33.420
I was wondering where the hell that came from.

01:11:34.240 --> 01:11:35.900
So, thanks for letting me know that, CyberPig.

01:11:35.940 --> 01:11:36.580
How do you know?

01:11:36.720 --> 01:11:37.140
Not theory.

01:11:37.200 --> 01:11:38.020
I'll let you feel that one.

01:11:38.020 --> 01:11:39.720
How do you know that you're being social engineered?

01:11:40.780 --> 01:11:41.860
Well, here's the thing.

01:11:41.860 --> 01:11:46.720
I can't ever be sure that I'm being social engineered, so I have a tactic.

01:11:47.120 --> 01:11:50.800
Anyone that I'm talking to, I lie about everything just in case.

01:11:51.120 --> 01:11:51.880
Just in case.

01:11:52.560 --> 01:11:53.120
Just in case.

01:11:53.200 --> 01:11:55.220
That way, if they can social engineering, they're all they want.

01:11:55.300 --> 01:11:56.540
They're never going to get the truth out.

01:11:56.820 --> 01:11:57.100
Well?

01:11:58.240 --> 01:12:01.500
It's, you know, it's obviously, it's hard to tell somebody who's social engineering,

01:12:01.600 --> 01:12:02.740
because that's the whole point.

01:12:02.900 --> 01:12:04.200
Like, they don't want you to tell.

01:12:04.360 --> 01:12:06.140
I actually do have a trick for this.

01:12:06.300 --> 01:12:09.060
I have a great trick that works for me every time.

01:12:10.300 --> 01:12:17.660
I carry with me at all times, no matter where I am, at all times of the day,

01:12:17.660 --> 01:12:19.300
whether I'm in my car, I'm in the office,

01:12:19.680 --> 01:12:21.460
I carry with me a small cactus.

01:12:22.680 --> 01:12:25.960
And any time I'm talking to people, and I think they might be lying,

01:12:26.020 --> 01:12:27.680
I just look at them and I go, cactus, cactus?

01:12:29.220 --> 01:12:31.560
And if they're telling a lie...

01:12:31.560 --> 01:12:33.160
All right, look, I'm giving a little shout out there.

01:12:33.200 --> 01:12:33.480
Shut up.

01:12:34.080 --> 01:12:35.020
All right, next email.

01:12:35.020 --> 01:12:36.960
The answer is, you're right.

01:12:37.040 --> 01:12:38.780
You can't know whether you're being social engineered.

01:12:38.900 --> 01:12:39.720
It's just a skill.

01:12:40.420 --> 01:12:43.140
I mean, it's just like, can you ever tell that you're being lied to?

01:12:43.200 --> 01:12:46.020
And if somebody's really good at it, it's harder to detect.

01:12:46.400 --> 01:12:48.940
The way to find out is to always question them.

01:12:49.020 --> 01:12:51.160
Don't let them use some of those techniques.

01:12:51.160 --> 01:12:54.740
If they're asking, if they're giving you vague responses or evasive in their answers,

01:12:55.380 --> 01:12:56.200
press a little bit harder.

01:12:56.300 --> 01:12:57.620
Don't be afraid and don't give up.

01:12:57.720 --> 01:12:58.480
Don't be lazy.

01:12:59.040 --> 01:13:02.060
A lot of times it's to your laziness you get tired of being asked questions.

01:13:02.160 --> 01:13:07.320
And I even mentioned that as a tactic to wear people down until they finally give up and don't care anymore.

01:13:07.720 --> 01:13:08.980
Don't let that happen to you.

01:13:10.760 --> 01:13:12.720
And yeah, it's just a feeling.

01:13:12.900 --> 01:13:15.420
It's just something you have to be able to tell and to have in you.

01:13:15.500 --> 01:13:18.700
So I really wish there was something easier to tell you how to detect it.

01:13:19.340 --> 01:13:23.120
The only answer I can say is to be thorough and ask a lot of questions.

01:13:23.260 --> 01:13:27.080
Make sure you ask enough questions so that you're comfortable.

01:13:27.340 --> 01:13:28.920
And now I have the hiccups at the end of the episode.

01:13:29.000 --> 01:13:29.680
That's going to be great.

01:13:30.140 --> 01:13:30.740
All right, perfect.

01:13:30.880 --> 01:13:31.660
This is good radio.

01:13:32.780 --> 01:13:33.980
My voice is giving away.

01:13:34.100 --> 01:13:34.800
I have the hiccups.

01:13:34.800 --> 01:13:36.200
I'm talking really fast.

01:13:37.320 --> 01:13:41.120
And we haven't had phone sex or yet, so.

01:13:41.960 --> 01:13:43.120
Why don't you cry about it?

01:13:43.780 --> 01:13:44.660
I just might.

01:13:44.960 --> 01:13:46.580
I'm going to wait until I get off the air, though.

01:13:46.780 --> 01:13:47.040
I'm not.

01:13:47.380 --> 01:13:49.440
I promised myself I wouldn't do this on the show.

01:13:51.120 --> 01:13:52.180
I'm getting perclept.

01:13:53.300 --> 01:13:54.280
Okay, it's fine.

01:13:54.720 --> 01:13:56.340
Next email comes from Crate.

01:13:56.700 --> 01:13:59.560
Crate says, okay, what the hell happened to episode 193?

01:13:59.660 --> 01:14:01.440
Is this the Children of BinRev episode?

01:14:02.120 --> 01:14:06.160
Actually, I quite enjoyed it and found it a refreshing reprieve from Stank's random innuendo,

01:14:06.160 --> 01:14:09.580
proving once again that Stank really is a dirty old man.

01:14:10.420 --> 01:14:11.700
I resent that fact.

01:14:11.960 --> 01:14:12.200
I am.

01:14:12.720 --> 01:14:14.780
No, I guess I exactly am a dirty old man.

01:14:15.640 --> 01:14:16.840
Everyone did a great job.

01:14:16.920 --> 01:14:17.260
I laughed.

01:14:17.340 --> 01:14:17.740
I had fun.

01:14:17.800 --> 01:14:20.340
And I learned, as I'm sure others did, wonderful job.

01:14:20.460 --> 01:14:24.280
So shout outs to everybody who helped out on episode 193.

01:14:24.500 --> 01:14:25.720
People did enjoy that.

01:14:25.720 --> 01:14:28.520
So good to hear some props every once in a while.

01:14:28.680 --> 01:14:34.240
Everybody likes to hear that somebody listened to and appreciated their work.

01:14:34.500 --> 01:14:37.320
So I will second that email from Crate.

01:14:39.680 --> 01:14:40.540
And let's see.

01:14:40.600 --> 01:14:41.220
Two more emails.

01:14:41.540 --> 01:14:43.140
Next email from DJ Mollisk.

01:14:43.980 --> 01:14:49.000
DJ Mollisk says, while listening to episode 194, Social Engineering, I had a BinRevgasm.

01:14:49.000 --> 01:14:51.700
Um, okay.

01:14:53.420 --> 01:14:54.100
All right.

01:14:54.540 --> 01:14:57.680
I've been waiting for the topic of what is social engineering to be addressed.

01:14:57.820 --> 01:15:00.860
Back in the days of Radio Freak America, there was an episode where this was discussed.

01:15:01.440 --> 01:15:05.020
Rax, who I have respect for, gave one of the most horrible responses, and that has stuck with me.

01:15:05.100 --> 01:15:07.920
Rax said that social engineering was a fancy euphemism for lying.

01:15:09.400 --> 01:15:09.760
Armageddon.

01:15:09.820 --> 01:15:10.420
Okay, let me interrupt.

01:15:10.420 --> 01:15:17.200
I agree with you completely, and Rax saying that, and he and I would argue about that off the show all the time,

01:15:17.300 --> 01:15:20.900
and he'd always make jokes about that's all it was, and I always hated that,

01:15:20.960 --> 01:15:22.480
so it's another reason I wanted to do that episode.

01:15:23.280 --> 01:15:24.420
So I feel you on that one.

01:15:24.860 --> 01:15:27.940
I noticed on episode 194 that things started to go in that direction as well,

01:15:28.000 --> 01:15:29.660
putting social engineering in the bed with lying.

01:15:30.120 --> 01:15:31.880
You can use social engineering without lying.

01:15:31.940 --> 01:15:34.080
I think we purposely tried to emphasize that.

01:15:34.320 --> 01:15:36.760
My whole thing was about social engineering with integrity.

01:15:36.760 --> 01:15:39.860
You do not have to sell yourself out and completely lie.

01:15:40.420 --> 01:15:44.040
You can tell someone the truth, but adjust the way you speak so that the person thinks it's a lie.

01:15:44.560 --> 01:15:47.540
Also, if you break it down, social engineering really is just using psychology.

01:15:47.740 --> 01:15:49.600
Absolutely, there are aspects of it for sure.

01:15:50.520 --> 01:15:53.500
Anticipating the response of others based on your actions.

01:15:54.020 --> 01:15:58.680
Once you break it down like that, it should be clear that social engineering is used everyone,

01:15:58.900 --> 01:16:00.580
everywhere, I think he means to say, with everyone.

01:16:01.000 --> 01:16:03.100
It is just part of our psychological defense system.

01:16:03.100 --> 01:16:08.340
Just because hackers can use it and use it to their means doesn't make it a hacker qualifier.

01:16:08.340 --> 01:16:11.500
So, thank you, DJ Mollusk.

01:16:11.500 --> 01:16:13.440
I don't think there's really anything more to say to that.

01:16:14.540 --> 01:16:20.460
And our last email this week is actually, this is actually an email from the future, not theory.

01:16:20.520 --> 01:16:22.040
This is actually kind of interesting.

01:16:22.900 --> 01:16:24.640
This email comes from King Vegeta.

01:16:24.640 --> 01:16:29.000
King Vegeta, I think it's pronounced Vegeta, I remember.

01:16:29.360 --> 01:16:33.920
King Vegeta, who says, in response to episode 220.

01:16:35.640 --> 01:16:39.940
Dear Stank, I'm writing to you in response to the piece of shit episode 220.

01:16:40.120 --> 01:16:41.100
That sucked, man.

01:16:41.220 --> 01:16:47.380
Your rants on how you prefer latex to rubber and butt plugs instead of cock pumps were sick.

01:16:47.880 --> 01:16:49.140
You are a perverted man.

01:16:49.140 --> 01:16:51.360
I will never listen to your show again.

01:16:51.920 --> 01:16:53.920
Note, this message is from the future.

01:16:57.480 --> 01:17:00.460
So, I guess we have to adjust.

01:17:00.580 --> 01:17:03.080
We actually had planned ahead for episode 220.

01:17:03.240 --> 01:17:04.700
It was going to be called the butt plug episode.

01:17:04.840 --> 01:17:09.080
And I guess, should we change that and risk changing the future?

01:17:09.200 --> 01:17:16.680
You know, if you kill a butterfly in the past, should we risk changing the topic for 220 now in advance, now that he's told us?

01:17:16.680 --> 01:17:19.460
Has he killed the butterfly and doomed us for all eternity?

01:17:22.100 --> 01:17:34.280
Or, are we now committed that we have to absolutely do episode 220, and it has to be about latex versus rubber and butt plugs and cock pumps, so we don't change the course of time?

01:17:34.320 --> 01:17:36.040
That's a lot of pressure to put on me, man.

01:17:36.480 --> 01:17:37.720
I'm just trying to do a radio show.

01:17:37.740 --> 01:17:39.080
Well, I just hope that we're forced to do that episode.

01:17:39.200 --> 01:17:40.180
It sounds like a great one.

01:17:40.500 --> 01:17:42.760
We might just do that one next week, Mr. Man.

01:17:43.280 --> 01:17:44.720
We might do that off the air.

01:17:44.720 --> 01:17:48.440
We might do that as soon as we stop recording in about five more minutes.

01:17:49.040 --> 01:17:49.360
Okay.

01:17:50.160 --> 01:17:53.000
So, yeah, well, one thanks.

01:17:53.120 --> 01:17:55.300
Back to the future you, by the way, King Vegeta.

01:17:55.440 --> 01:17:56.240
Thanks for the handjob.

01:17:56.420 --> 01:17:57.200
I appreciate that.

01:17:57.340 --> 01:17:58.360
That worked out really well.

01:17:59.240 --> 01:18:00.800
And also, I've got to ask, though.

01:18:01.400 --> 01:18:06.320
I guess sometime between now and episode 220, he changes from Prince Vegeta to King Vegeta.

01:18:06.320 --> 01:18:16.920
So, there's, somebody's kicking the bucket between now and 220, so I'm not sure what the backstory to that is, but he's King Vegeta in this email, and previous emails were, I think, Prince Vegeta.

01:18:16.920 --> 01:18:27.280
But, if he's the king, then, actually, I guess I should ask him, I wonder how I'm doing in my future position as supreme ruler of the universe.

01:18:28.000 --> 01:18:31.620
Because I'm hoping that by episode 220, I should be ruling with an iron fist.

01:18:31.620 --> 01:18:40.520
So, I guess let us know how that works out in the future, King Vegeta, if you do feel the need to write back.

01:18:41.440 --> 01:18:44.300
So, that's going to wrap up the show for this week.

01:18:45.220 --> 01:18:45.940
Let's see.

01:18:46.280 --> 01:18:47.180
No main topic.

01:18:47.420 --> 01:18:52.180
I guess that was our main topic, like I said before, so we'll bump this topic for a future episode.

01:18:52.840 --> 01:18:55.060
And I won't even say what it was, so how do you like that?

01:18:55.880 --> 01:18:56.860
Shouts for this week.

01:18:56.940 --> 01:19:00.300
I'll go ahead and give my shouts to all the people who emailed us earlier.

01:19:00.420 --> 01:19:01.100
Great emails.

01:19:01.240 --> 01:19:08.120
Probably the best email content show we've had in almost four complete seasons now that we're coming up on the end of our fourth season.

01:19:08.820 --> 01:19:12.000
Probably the best email episode we've ever had from day one.

01:19:12.140 --> 01:19:15.940
So, my shouts go to our listeners, one and all.

01:19:16.040 --> 01:19:23.480
Even if I didn't read your email on the show, you guys are giving a lot of great feedback, and I'm learning from the show every week as well, and that's why I enjoy doing it.

01:19:24.160 --> 01:19:25.800
What kind of shouts you got there, buddy?

01:19:27.080 --> 01:19:37.700
I got shouts to the people I got feedback from, Thorpe Freaker and the other guy whose handle I can't remember because it's too long, and Rigel.

01:19:37.880 --> 01:19:41.820
I haven't talked to Rigel in a while until this week, but caught up with him a bit.

01:19:42.000 --> 01:19:42.760
Seems to be doing well.

01:19:43.240 --> 01:19:44.700
I'll give some shouts to Decoder.

01:19:44.860 --> 01:19:46.040
I haven't done that on the air in a while.

01:19:46.100 --> 01:19:47.100
We talked a couple days ago.

01:19:48.060 --> 01:19:49.320
We talk once in a while.

01:19:49.540 --> 01:19:50.240
Shouts to Decoder.

01:19:50.960 --> 01:19:51.640
You know what?

01:19:51.700 --> 01:19:52.480
Shouts to Rosebud.

01:19:52.480 --> 01:19:54.300
Pass some shouts on to Rosebud for me, will you?

01:19:55.140 --> 01:19:55.560
All right.

01:19:55.640 --> 01:19:56.140
All right.

01:19:56.440 --> 01:19:57.320
And let's see.

01:19:57.560 --> 01:20:01.740
Hosting for Binary Revolution Radio is provided by caro.net.

01:20:01.940 --> 01:20:05.480
So, if you need hosting managed or otherwise, check them out.

01:20:05.920 --> 01:20:08.180
We appreciate them providing our bandwidth and hosting.

01:20:08.180 --> 01:20:13.020
Site of the week for this week is streetviewer.com.

01:20:13.060 --> 01:20:18.320
That's S-T-R-E-E-T-V-I-E-W-R.com.

01:20:18.380 --> 01:20:19.320
That's not W-E-R.

01:20:19.440 --> 01:20:21.920
That's V-I-E-W-R.com.

01:20:21.920 --> 01:20:27.260
And that is some pretty interesting pictures that people have found using that new Google

01:20:27.260 --> 01:20:33.840
Streets functionality Google added to Google Maps where you can actually see what it looks

01:20:33.840 --> 01:20:34.920
like from the street level.

01:20:35.040 --> 01:20:37.500
You can look at buildings and people on the sidewalks and stuff.

01:20:37.500 --> 01:20:41.660
And they actually captured some pretty interesting things that they probably didn't mean to

01:20:41.660 --> 01:20:45.580
or realize and didn't catch in the editing process if there was one.

01:20:46.260 --> 01:20:48.580
So, a lot of people have found some pretty funny pictures.

01:20:48.720 --> 01:20:49.740
So, go check that out.

01:20:50.240 --> 01:20:52.860
And by all means, share any other ones you may find.

01:20:52.860 --> 01:21:00.780
And, let's see, email us feedback of any kind to radio at binrev.com or you can contact

01:21:00.780 --> 01:21:06.100
nottheory directly at ntheory at bellsmind.net.

01:21:06.520 --> 01:21:10.820
So, if you have any feedback for Bell's Mind, as he said earlier, he only checks the forums,

01:21:10.920 --> 01:21:12.960
what, once a week, a couple times a week these days?

01:21:14.600 --> 01:21:16.320
Maybe twice a week at this point.

01:21:16.400 --> 01:21:18.840
Not the best place to get in contact with him.

01:21:18.940 --> 01:21:21.060
Email him if it's something about Bell's Mind.

01:21:21.060 --> 01:21:25.600
Don't let it be down for a week and not tell him about it.

01:21:25.860 --> 01:21:29.480
How many times have I called you and you're like, how long has it been down?

01:21:29.560 --> 01:21:30.640
No one has told you anything.

01:21:31.960 --> 01:21:34.240
Yeah, that's been quite a few times.

01:21:34.340 --> 01:21:34.700
Yep.

01:21:35.640 --> 01:21:37.460
And then we have phone sex until 3 a.m.

01:21:38.040 --> 01:21:41.720
Closing music this week is from, I don't think I've used this before.

01:21:41.840 --> 01:21:43.520
If I have, well, you're getting it again.

01:21:43.620 --> 01:21:45.700
This is from Emergency Pizza Party.

01:21:45.760 --> 01:21:49.480
This is actually a local, local to me here in Orlando or near,

01:21:49.480 --> 01:21:54.540
I think they're in the Orlando slash Tampa area, local nerdcore group, if you will.

01:21:54.880 --> 01:21:58.540
Emergency Pizza Party, the, well, the name I have on here is GAL.

01:21:58.720 --> 01:22:00.760
I don't know if that's an acronym or initials for something,

01:22:00.880 --> 01:22:02.860
but that's the closing track for this week.

01:22:03.580 --> 01:22:06.240
And, not theory, we are running out of time.

01:22:06.280 --> 01:22:06.960
We've got a couple minutes.

01:22:07.020 --> 01:22:07.640
You got anything else?

01:22:07.680 --> 01:22:09.080
You got any words of wisdom to impart?

01:22:09.080 --> 01:22:14.880
I've kind of been talking over the whole second half of the episode trying to pound this through.

01:22:15.100 --> 01:22:16.660
So, what else you got for us?

01:22:16.660 --> 01:22:17.120
Anything good?

01:22:18.400 --> 01:22:18.800
No.

01:22:19.040 --> 01:22:22.680
No, I'm just drained on the shell of my former self.

01:22:22.960 --> 01:22:24.020
There's nothing left to me.

01:22:24.300 --> 01:22:26.400
You want to sing Baby, Baby, Baby, I'm a Hacksaw?

01:22:28.400 --> 01:22:31.680
Baby, Baby, Baby, I'm a Hacksaw.

01:22:32.380 --> 01:22:32.960
How about Lollipra?

01:22:32.960 --> 01:22:33.380
You're good.

01:22:33.680 --> 01:22:34.300
You want to sing Lollipra?

01:22:34.300 --> 01:22:35.460
There's songs in that.

01:22:35.880 --> 01:22:36.700
I got Lollipra on.

01:22:36.700 --> 01:22:37.700
You want to sing Lollipra on with me?

01:22:37.700 --> 01:22:41.100
Maybe we'll save that for the...

01:22:41.100 --> 01:22:42.060
Come on, sing it with me.

01:22:42.100 --> 01:22:42.480
Grow a pair.

01:22:42.560 --> 01:22:42.840
Let's go.

01:22:42.900 --> 01:22:43.280
We're going to sing.

01:22:43.340 --> 01:22:43.480
Ready?

01:22:43.820 --> 01:22:44.940
One, two, three.

01:22:45.760 --> 01:22:49.740
Lollipra on, Lollipra on, oh, Lolli, Lolli, Lolli, Lollipra on.

01:22:51.020 --> 01:22:53.340
Oh, that makes it gross, though, the popping sound.

01:22:54.320 --> 01:22:57.460
Yeah, well, gross, hot, whatever you want to say.

01:22:59.020 --> 01:23:01.340
Gross, sexy, you know, whatever floats your boat.

01:23:02.780 --> 01:23:03.180
Seriously.

01:23:03.560 --> 01:23:04.480
How's that for a meme?

01:23:04.480 --> 01:23:07.720
Am I going to have everybody across the global interweb singing Lollipra on now?

01:23:08.420 --> 01:23:09.140
I sure hope so.

01:23:09.340 --> 01:23:10.020
I hope so, too.

01:23:10.080 --> 01:23:12.880
Please send in your renditions to RadioFinRev.com.

01:23:13.400 --> 01:23:18.440
And that is going to do it for us this week, possibly this month, this year.

01:23:18.540 --> 01:23:19.980
I don't know when we'll do another episode.

01:23:20.140 --> 01:23:21.380
We'll try to get one out next week.

01:23:21.480 --> 01:23:24.920
But if we don't, we will see you sometime in the near future.

01:23:25.440 --> 01:23:26.300
Same hack time.

01:23:27.260 --> 01:23:28.200
Same hack channel.

01:23:29.880 --> 01:23:30.520
Lollipra on.

01:23:30.520 --> 01:23:48.580
Your music is poop.

01:23:48.820 --> 01:23:50.560
Your music is poop.

01:23:50.560 --> 01:23:52.660
Your music is poop.

01:23:52.940 --> 01:23:54.660
We're wrapping the poop.

01:23:54.660 --> 01:23:58.940
Benjamin Bear, why do you hate nerdcore?

01:23:59.560 --> 01:24:03.340
Benjamin Bear, he's covered in cold sores.

01:24:03.460 --> 01:24:05.100
Well, if you don't like it, listen to the track.

01:24:05.180 --> 01:24:07.320
Don't be flippin' on me, cause my music is whack.

01:24:07.620 --> 01:24:09.420
I didn't know that I was so disliked.

01:24:09.660 --> 01:24:11.400
Maybe I should just put down the mic.

01:24:11.700 --> 01:24:15.100
Benjamin Bear, you need to get a life.

01:24:15.640 --> 01:24:17.540
Benjamin Bear, you're a big fat jerk.

01:24:17.600 --> 01:24:19.540
When you spit your shit, the microphone gets covered in turns.

01:24:19.660 --> 01:24:21.560
Everybody on the BBS knows you suck.

01:24:21.560 --> 01:24:23.680
And stop feelin' up on my boyfriend's butt.

01:24:23.900 --> 01:24:25.620
It's time for you to get a life that you don't care.

01:24:25.720 --> 01:24:27.620
Cause you're gettin' more plays than the average bear.

01:24:27.740 --> 01:24:29.720
Put your panties back on, we don't wanna see that.

01:24:29.800 --> 01:24:31.760
Don't flaunt that red-haired baby rap.

01:24:32.080 --> 01:24:33.860
Why you got me spittin' on this?

01:24:34.120 --> 01:24:35.900
Benjamin Bear sounds like a bitch.

01:24:36.020 --> 01:24:38.000
Skip this track, I'd rather smoke crack.

01:24:38.200 --> 01:24:39.940
Compare me, yeah, that's fair.

01:24:40.120 --> 01:24:42.200
110% better than B-Bear.

01:24:42.260 --> 01:24:44.080
I'm the one that brings the flair.

01:24:44.340 --> 01:24:46.020
Benjamin Bear, I hit and miss.

01:24:46.160 --> 01:24:48.140
I'd rather drink a jar of piss.

01:24:48.140 --> 01:24:49.560
Your music is poop.

01:24:49.920 --> 01:24:51.580
Your music is poop.

01:24:52.060 --> 01:24:53.660
Your music is poop.

01:24:54.080 --> 01:24:55.680
We're wrapping the poop.

01:24:56.440 --> 01:24:59.940
Benjamin Bear, why do you hate nerdcore?

01:25:00.480 --> 01:25:04.280
Benjamin Bear, he's covered in cold sores.

01:25:04.480 --> 01:25:06.140
Well, if you don't like it, listen to the track.

01:25:06.220 --> 01:25:08.340
Don't be flippin' on me, cause my music is whack.

01:25:08.340 --> 01:25:10.480
I didn't know that I was so disliked.

01:25:10.680 --> 01:25:12.480
Maybe I should just put down my mic.

01:25:12.760 --> 01:25:16.120
Benjamin Bear, you need to get a life.

01:25:16.720 --> 01:25:18.800
Yo, B-Bear, time to make you a bitch.

01:25:18.920 --> 01:25:20.560
Red hair, so we burn you like a witch.

01:25:20.600 --> 01:25:22.540
You got a smaller dick than any bear should.

01:25:22.740 --> 01:25:24.220
This track gives both feet the end.

01:25:24.300 --> 01:25:25.700
Shellwood, oh, does it burn?

01:25:25.780 --> 01:25:26.200
Does it sting?

01:25:26.260 --> 01:25:26.720
Does it hurt?

01:25:26.920 --> 01:25:28.220
All the good stuff and darks.

01:25:28.220 --> 01:25:28.940
I came from rain thirst.

01:25:29.060 --> 01:25:30.200
Does a bear shit in the woods?

01:25:30.260 --> 01:25:30.920
You might ask.

01:25:31.040 --> 01:25:32.820
Nah, B-Bear, he shits on the track.

01:25:33.020 --> 01:25:34.820
Benjamin Bear, you need to get yourself a life.

01:25:34.900 --> 01:25:36.880
You need to stop hittin' rocks from the crack pipe.

01:25:36.880 --> 01:25:38.920
You've been hurtin' nerdcore from day one.

01:25:39.000 --> 01:25:40.920
Your raps are poop and your beats are dumb.

01:25:41.000 --> 01:25:42.020
But I don't give a fuck.

01:25:42.080 --> 01:25:43.200
All this, you don't beat all.

01:25:43.280 --> 01:25:45.000
Look, you've been banned from the nerdcore documentary.

01:25:45.180 --> 01:25:47.040
It's gonna be a fault if we lose a song fight.

01:25:47.260 --> 01:25:49.060
Suck, B-Bear, you need to get a life.

01:25:49.220 --> 01:25:50.580
Your music is poop.

01:25:50.900 --> 01:25:52.600
Your music is poop.

01:25:53.080 --> 01:25:54.660
Your music is poop.

01:25:55.120 --> 01:25:56.640
We're rapping to poop.

01:25:57.520 --> 01:26:00.920
Benjamin Bear, why do you hate nerdcore?

01:26:01.640 --> 01:26:05.360
Benjamin Bear, he's covered in cold sores.

01:26:05.360 --> 01:26:07.380
Well, if you don't like it, let's send the track back.

01:26:07.460 --> 01:26:09.360
Don't be flippin' on me, cause my music is whack.

01:26:09.660 --> 01:26:11.480
I didn't know that I was so disliked.

01:26:11.700 --> 01:26:13.460
Maybe I should just put down the mic.

01:26:13.700 --> 01:26:17.140
Benjamin Bear, you need to get a life.

01:26:17.660 --> 01:26:19.580
Hangin' tops like a new kid on the block.

01:26:19.780 --> 01:26:21.920
Benjamin Bear, he be givin' no fuck.

01:26:22.080 --> 01:26:23.400
You're a stupid dumb cock.

01:26:23.560 --> 01:26:25.480
You can't even make this mic rock.

01:26:25.880 --> 01:26:26.880
Tryna bust a flow.

01:26:26.980 --> 01:26:27.900
You're an happy ass hoe.

01:26:27.980 --> 01:26:30.060
You blippin' us and I'm not that soul.

01:26:30.240 --> 01:26:31.560
Don't even try to rap.

01:26:31.560 --> 01:26:34.100
You're a nerd called Pussy, change your maxi pad.

01:26:34.340 --> 01:26:35.860
Make way for the worst in the game.

01:26:36.120 --> 01:26:37.740
Benjamin Bear, send it in for lame.

01:26:37.780 --> 01:26:39.680
I got the worst rhymes and the worst beats.

01:26:40.140 --> 01:26:41.880
Movin' a fight in the dark cold sea.

01:26:41.980 --> 01:26:43.980
When you're back down, Ben, you know what you can't rap.

01:26:44.220 --> 01:26:46.000
Self-enjoyin' when you rock that crap.

01:26:46.200 --> 01:26:48.020
Everyone knows that you're the worst in the land.

01:26:48.080 --> 01:26:50.120
Come up here right now, we're starting to jump in.

01:26:50.120 --> 01:26:55.220
You Conan O'Brien, AB1-lookin' motherfucker.

01:26:55.960 --> 01:26:58.220
You call yourself a bear.

01:26:59.000 --> 01:27:02.060
Benjamin Bear, you suck.

01:27:02.060 --> 01:27:13.620
Move an act when you rock that crap.

01:27:13.620 --> 01:27:43.600
Thank you.

