text:
Discussion point: What kind of game deserves a high score in Sounds and Graphics?
By The TAG Team
Sounds and Graphics
There's a central dilemma in reviewing this category: should the scale reflect the technological development or be completely independent of it? In other words, should an EGA game always score worse than a VGA game? There are clear arguments for both sides. Certainly CGA graphics and PC beeper are hellish innovations and since then we've moved on to something much better.
Even monochrome would be better than this
Then again, one might say that we shouldn't judge the worth of the artist on the tools they have in their use. And indeed, whatever the tools are (monochrome, EGA, VGA, 3D graphics etc.), there are better and worse uses of them.
Unless the second picture with its angular style is trying
to recreate Picasso, I am in favour of the first picture
Other questions you might consider are:
How much subjective opinion should be allowed in evaluating this category? For instance, if a reviewer finds a graphical style or a music genre not to their taste, can this be reflected in the score?
Is the increase of realism in graphics always a positive thing? Could we give a game with cubistic, surrealist or abstract graphics a high score in this category?
Should we review the sounds and the graphics independently of the rest of the game, just deciding how beautiful or agreeable we think they are? Or should we be more interested in how well they enhance the game? In other words, if the music and the graphics disconcert us, but they are clearly meant to do so, is this a positive or a negative?
What emphasis should be given to the two aspects of the category? Should the score be divided 50-50 for sounds and graphics? Or could there be e.g. a game made in silent flick style, which would get a high score just for its graphics?
Posted by Ilmari Jauhiainen at 23:00
Labels: Discussion Point, The TAG Team
Rowan Lipkovits 8 June 2018 at 02:16
"should an EGA game always score worse than a VGA game?"
Ahem: Loom.
Michael 9 June 2018 at 10:15
Also: back when I was 11, I still had a CGA monitor. I played games on it, and din't know anything better, until I got a VGA monitor a couple of years later. At the time, who knew? My first graphical adventure I played was PQ1, in 6th grade, in CGA. The first time I replayed it on a VGA monitor (seeing the EGA graphics) was incredible, but I still enjoyed the game.
Digression aside, I agree with Rowan 110%. Compare, say, EGA Monkey Island to VGA Les Manley: In Search for the King. I don't think there's any room for debate on this one.
Ilmari Jauhiainen 9 June 2018 at 14:08
It's easy to say that VGA Les Manley looks worse than EGA Monkey Island, but a more interesting question is what we should do with remakes: should we rate their graphics and sounds against the original game or against the "current" games. We've had difficulties with this...
Laukku 10 June 2018 at 17:08
Les Manley 1 was barely VGA. It was still limited to 16 colours, and the only difference was that the palette could be modified in VGA mode to allow things like slightly more natural skin tones.
Michael 10 June 2018 at 20:29
My point exactly. Les Manley 1 claimed to be VGA but was pathetic looking even for EGA.
Kirinn 8 June 2018 at 08:27
Realism isn't really the goal of visual media anyway, since then you might as well as keep watching real life. Games, much like movies, try in various ways to be larger than life, with colors that pop and imperfections smoothed out.
Graphics really only deserve a bad score if the artists, with all due respect, just weren't yet very experienced at their craft. Especially in games of the 80's and 90's, game developers mostly had more enthusiasm than hard talent, and they couldn't afford experienced artists from established media, and no one really knew how to do computer art to best effect yet.
But if it looks good, it looks good.
Actually, if I were setting scores, I'd just go with a 0-4 star rating on everything. It's much easier then to affix labels to the ratings: 0 = didn't even try, 1 = well, they tried, 2 = serviceable, 3 = appealing, 4 = really nice. And save half-star ratings for when I can't decide between two ratings. (Of course, the blog can't go changing rating scales one third of the way through history.)
If a game deliberately eschews sound, I'd suggest taking that part of the category entirely out from the total maximum score possible, so the game's entirely evaluated on those merits it did put forth.
Laukku 8 June 2018 at 16:21
>If a game deliberately eschews sound, I'd suggest
>taking that part of the category entirely out from
>the total maximum score possible, so the game's
>entirely evaluated on those merits it did put forth.
I don't think I said (typed?) it out loud at the time, but I did have a problem with Trickster's complaint of the minimal music in Colonel's Bequest. There was instead a focus on ambient noise, and the lack of constant music created an atmosphere of unease and anticipation. And when you found a body or traveled the underground passage, there *would* be music to enhance the mood. The Chzo mythos uses the same aesthetic principle. Pacing is important: The high moments won't stand out if there are no surrounding low-key moments to contrast them.
That said, I would put some soft upper limit for games lacking sound and good music (maybe 8), because the very best games in a certain category should excel in most if not all areas in that category.
Kirinn: I would point out that there have been a lot of different realist movements in various forms of visual art, which have explicitly tried to represent mere life as it is. I am not saying it is necessarily better way of doing visual art than any other, but it does exist. In adventure games, I suppose the use of FMV has often tried to give a semblance of realism to games.
You are, of course, correct. Actually, I was to an art museum some months ago, and they had various very realistic paintings from around the 1600's. It struck me that even then they tended to use more saturated colors than strictly realistic, subtly enhancing the depiction.
But I don't know enough about specific art styles to argue strongly one way or the other...
The lower pic of Elaine, by the way, feels like a textbook example of the uncanny valley.
Laukku, I tend to agree with Trickster on that point (Colonel's Bequest). By the time that game was released, Sierra was advanced enough to have background music constantly (see, for example, LSL3) and the quiet I found to be more annoying than mood creating. I suspect that a lot of people turned on music in the background, because who wants to play a near-silent game? A subtle, eerie background theme would have been better than nothing at all.
"who wants to play a near-silent game?"
This might have been just a rhetorical question, but at least CRPG addict has clearly said that he prefers games with no background music, because the music just distracts him from gaming.
Brad 8 June 2018 at 10:08
I remember being own away the first time I saw Monkey Island in VGA after playing everything previously in EGA. Same for Prince of Persia.
MisterKerr 8 June 2018 at 11:05
Interesting that you use those two images of Elaine Marley for your comparison, as the second one hails from that period of the late 90's and early 2000's where 3D polygonal graphics looked terrible almost no matter what the skills of the artist were. Which begs the issue that hasn't come up on the site yet since this time period hasn't been reached, but should games like Escape from Monkey Island, Gabriel Knight 3, or even the soon-to-be-reviewed Alone in the Dark be docked because the technology wasn't up to snuff? Or should you compare 2D games to other 2D games, FMV games to other FMV games, 3D rendered games to other 3D rendered games, etc.?
Also some games were able to turn the weaknesses of a certain technology into strengths due to the storyline involved. Grim Fandango, for example, turned everyone into calaca dolls which were far easier to render than a human would've been at the time. Would that be a point for graphics itself, or a point elsewhere since the storyline is what enabled the 3D graphics to remain simple enough to render effectively?
ShaddamIVth 8 June 2018 at 18:46
I think the Grim Fandango point is really hitting it on the head. Even with basic technology they were able to create a unique visual style that really fits the games' atmosphere.
When games started going 3D there were so many that were horrible because the developer didn't understand the technology but simply made their new game 3D for the sake of being able to call it 3D. A lot of games in this transition period suffered because of this, where games like FF7 and FF8 tried mixing static and 3D effects to play to both's strengths, to good effect in my opinion. Personally I think if they couldn't make the limited tech look good they should not have tried to adopt it while it was clearly too early and they didn't have the right talent to handle it.
Realism was certainly not more appropriate all the time. Sometimes, it was great -- think PQ3, it certainly was a good match for the subject matter and setting. Unlike the article though, I think going away from the realism in the Monkey Island games matched the spirit of the games a lot better.
Better comparison -- Maniac Mansion to Day of the Tentacle. Yes, I know there was years of technological change in-between, but certainly, as good a game as MM was, if it was in the DOTT art style, that would have been incredible.
This category more than others, I think it needs to be be heavily weighed against other games of the time period -- because it isn't fair to fault a game for either technical limitations of the time, or limitations in the player's budgets (game companies often waited a while before adopting some features, because none of their customers could afford them yet). The example of Monkey Island in the article shows a beautifully rendered scene that used the hardware of the time as best as possible. COmpare that maybe to the game Altered Destiny, from the crack team that brought us Les Manley.... this image should make the point: https://www.abandonwaredos.com/public/aban_img_screens/altereddestiny-3.jpg
I don't think it's the unrealism of the second Elaine that makes the picture somewhat less palatable than the original Elaine. Indeed, the more cartoonish style of the Curse of the Monkey Island is quite OK in my eyes (see for instance: https://vignette.wikia.nocookie.net/monkeyisland/images/c/c5/Curse-elaine.jpg/revision/latest?cb=20120422155924). The problem is more that the 3D Elaine has a hexagonal ear, her hands appear to be encased in blocks of marble and a wooden spike has been glued on to her forehead.
Sounds & Music -- again, some leniency should be given for games made BSB (before SoundBlaster[tm] ), and for the same reasons. There's no way, for example, that Leisure Suit Larry 1 could have given us any better music, both because a) sound cards weren't a thing yet, so the only instrument available was the PC speaker and b) disk space would have prevented it anyways. The games of that era were made to be played from a floppy, because not everyone could afford a 10MB hard disk that cost hundreds and hundreds of dollars. Certainly, a game of that era like LSL1 deserves at least a few extra points for having a few songs (disco, theme, alley music, etc) making good sounding music working with a crappy instrument, while another game from that year, Maniac Mansion, did nearly nothing with music (but had a lot of good sound effects...)
That brings up another question: should music/sound games be judged on the most common hardware setup at the time, or the best? Early AGI games sounded far better on a Tandy than the single beeps and boops from a PC Speaker (the Tandy version of the Space Quest I theme is still one of my favorites), and mid-period Sierra games sounded way better when using a Roland MT-32 than a simple Adlib/Soundblaster. Many people didn't have Tandys, though, and MT-32 machines were (and are) even rarer, so it's not how most people would've experienced these games, so which standard do you go by?
The impression I got that most reviewers have so far gone with whatever were the default (or easiest) settings, usually Adlib/SoundBlaster.
Trickster complained about the music in King's Quest 3, not realising he missed the polyphony in the 3-voice Tandy version. It was deliberately composed in contrapuntal baroque style, and the intro piece is particularly heartwrenching with its rich harmonies. One could also argue that Sierra should've done a better internal speaker conversion.
Tough call, this. I suspect, if I was reviewing one of the games, I would default to using my MT-32 because I would want to experience what they felt was the best presentation of their game. Certainly now, with the use of emulators and such, we should be able to have a reviewer at least touch upon the different qualities. Some games were well translated in all musical directions (Monkey Island, LSL3 are a couple that come to mind, where the SOundBlaster versions of the music are not bad at all, and don't leave you depressed for not owning an MT-32.)
Laukku -
> One could also argue that Sierra should've done a better internal speaker conversion.
Except that, when it came to PCs, Sierra didn't know what brand of compatible someone was playing on, so they had to write the software to work on all hardware, which means lowest common denominator...
Firstly, I'd note that all reviewers are not accustomed to tinker with the more advanced emulator settings, so they just hear what comes out of the "standard" setting of DosBOX.
Secondly, some reviewers might also not have that strong opinions about the quality of music - that is, if the music just isn't awful and distracting, they might have difficulties to differentiate between, say, SoundBlaster and MT-32 versions of music.
>> One could also argue that Sierra should've done a better internal speaker conversion.
> Except that, when it came to PCs, Sierra didn't know what brand of
> compatible someone was playing on, so they had to write the software
> to work on all hardware, which means lowest common denominator...
True in most cases, but to be specific, the PC speaker was a very standardised part that worked exactly the same on every IBM compatible. The speaker itself has a 1-bit input - low or high. The input is normally hooked up to one of the PC's programmable interrupt chips, and its frequency is controlled by a simple 16-bit port.
This means if you were willing to do a bit of software mixing, you could totally output multiple notes together on a speaker. Of course, that was too expensive CPU-wise at the time, but another option would've been to make your speaker code mix, say, 4 channels by arpeggiating any combined notes. This would've been totally possible with minimal cpu power. And Sierra could've written the driver just once, since their games shared drivers. But I guess it didn't occur to them, or didn't seem worth the effort.
> And Sierra could've written the driver just once, since their games shared drivers. But I guess it didn't occur to them, or didn't seem worth the effort.
Honestly, I doubt it would have occurred to them. The minimal amount of sound in those games was, compared to some other publishers, plentiful. And their only real musician employee pre-SCI was Al Lowe.
Another issue complicating the matter is that not all games sounded better on "more powerful" hardware. Dune was composed for the AdLib Gold and sounded merely decent on the MT-32. The OPL2 (AdLib/SoundBlaster) conversion, while still a downgrade, sounds more faithful to the original.
AdLib Gold
OPL2
Roland MT-32
I think reviewers can go with "common" hardware settings supported in vanilla DOSBox (SoundBlaster 16), and only if it's SO much inferior to other options as to become a legitimate problem should the companions point it out, and the reviewer can listen to YouTube samples for comparison or something. Few games have particularly horrible AdLib/SoundBlaster conversions, so this shouldn't be much of an issue.
That brings up another interesting "feature" of the times, and one that's harder to emulate today. Lucasfilm Games (among a few others) had this habit of releasing CD versions of some games with the soundtrack pre-recorded as CD tracks. Loom, Monkey Island, among a few others got this treatment. In the case of those games, the soundtrack you heard from your CD-ROM, assuming all the cables were set up correctly, was somewhat equivalent to a clean MT-32 setup, with some tweaks made to perfect the recording. Not sure I cared for it, but I did have copies of those CDs at some point...
CD tracks do require a little more DOSBox know-how, but only a little. You should be okay if you mount the .cue file of a bin/cue pair, or the physical CD-ROM (and setup the game correctly).
Will Death Gate be among the first games to get a 10? Current record-holders (score of 9) are limited to 320x200 pixels and 256 colours, whereas Death Gate has a higher resolution of 640x480. It looks pretty damn gorgeous with its use of scanned artwork and it sports impressive animated sequences (mild spoilers) in a painterly style (although in a lower resolution). The soundtrack (while much better adventure game soundtracks do exist) is very skillfully made too, with plenty of memorable and appropriately emotional themes:
https://youtu.be/9jmDGxinzZ0
https://youtu.be/i55Ui60nC-g
https://youtu.be/yNiZK2JhHbc
https://youtu.be/wa-PFiG63tA
https://youtu.be/y4gG6iF6L-Q
https://youtu.be/rHbVCy1tDRk
The highest EGA score is Loom (8), and no CGA game has scored higher than 3 as far as I can see. I think that at or above the 640x480 & 256 colour specs we are hitting diminishing returns, at least in 2D, and further technical improvements become irrelevant compared to things like art direction and artistic skill. Will a 320x200-resolution game ever get a 10?
Sorry if I'm starting to sound like a YU-NO fanboy/shill, but I cannot resist gushing about its soundtrack.
https://youtu.be/hUWV26uXeis
https://youtu.be/6yRNQVH413o
https://youtu.be/gN2QTxKIBmY
https://youtu.be/2VzSEyDqK-E
https://youtu.be/X3qSB7ddlVY
https://youtu.be/3ZS8wsBi0Y8
The full OST is 5 hours, covering all kinds of emotions, overt and subtle, atmospheric and catchy, with a consistent virtuosity; inventively twisting harmony, tonality and melody. A tour-de-force of musical composition and FM synthesis.
The main composer, Ryu Umemoto, was a legitimate genius, a math prodigy. He was extremely industrious and would often write hundreds of pages of musical notes and ideas for a single game project. The way he incorporated math and religious symbolism into his music even kinda resembles how J. S. Bach did it.
Read more about him at these links:
https://www.gamasutra.com/view/feature/178187/memorial_composer_ryu_umemoto.php
http://www.originalsoundversion.com/r-i-p-ryu-umemoto-1974-2011-memories-of-a-friend/
Umemoto is, in my opinion, one of the very best video game composers, rivaling the likes of Nobuo Uematsu. In fact, the way I discovered the game and the composer was by randomly stumbling onto one of the more abstract YU-NO compositions on YouTube; I was impressed enough to want to know more about the composer and what kind of a person could have possibly made it.
Hero-U: Rogue to Redemption Review
Game 98: King's Quest VI: Heir Today, Gone Tomorro...
Discussion point: What kind of game deserves a hig...
Game 97: Spellcasting 301: Spring Break (1992) - I...
Inspector Gadget - Final Rating
B.A.T. II - Won!
Inspector Gadget - Won!
B.A.T. II - Final Rating
B.A.T. II - Lost!
Inspector Gadget - Home of the Shiny Green Suit
B.A.T. II - The Simulator Conspiracy
B.A.T.II - The Great Bank Robbery


text:
package dagger.internal.codegen;

import static com.google.testing.compile.CompilationSubject.assertThat;
import static dagger.internal.codegen.Compilers.daggerCompiler;
import static dagger.internal.codegen.TestUtils.message;

import com.google.testing.compile.Compilation;
import com.google.testing.compile.JavaFileObjects;
import javax.tools.JavaFileObject;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;

@RunWith(JUnit4.class)
public class MissingBindingValidationTest {
  @Test
  public void dependOnInterface() {
    JavaFileObject component = JavaFileObjects.forSourceLines("test.MyComponent",
        "package test;",
        "",
        "import dagger.Component;",
        "",
        "@Component",
        "interface MyComponent {",
        "  Foo getFoo();",
        "}");
    JavaFileObject injectable = JavaFileObjects.forSourceLines("test.Foo",
        "package test;",
        "",
        "import javax.inject.Inject;",
        "",
        "class Foo {",
        "  @Inject Foo(Bar bar) {}",
        "}");
    JavaFileObject nonInjectable = JavaFileObjects.forSourceLines("test.Bar",
        "package test;",
        "",
        "import javax.inject.Inject;",
        "",
        "interface Bar {}");
    Compilation compilation = daggerCompiler().compile(component, injectable, nonInjectable);
    assertThat(compilation).failed();
    assertThat(compilation).hadErrorCount(1);
    assertThat(compilation)
        .hadErrorContaining("test.Bar cannot be provided without an @Provides-annotated method.")
        .inFile(component)
        .onLineContaining("interface MyComponent");
  }

  @Test
  public void entryPointDependsOnInterface() {
    JavaFileObject component =
        JavaFileObjects.forSourceLines(
            "test.TestClass",
            "package test;",
            "",
            "import dagger.Component;",
            "",
            "final class TestClass {",
            "  interface A {}",
            "",
            "  @Component()",
            "  interface AComponent {",
            "    A getA();",
            "  }",
            "}");
    Compilation compilation = daggerCompiler().compile(component);
    assertThat(compilation).failed();
    assertThat(compilation).hadErrorCount(1);
    assertThat(compilation)
        .hadErrorContaining(
            "[Dagger/MissingBinding] test.TestClass.A cannot be provided "
                + "without an @Provides-annotated method.")
        .inFile(component)
        .onLineContaining("interface AComponent");
  }

  @Test
  public void entryPointDependsOnQualifiedInterface() {
    JavaFileObject component =
        JavaFileObjects.forSourceLines(
            "test.TestClass",
            "package test;",
            "",
            "import dagger.Component;",
            "import javax.inject.Qualifier;",
            "",
            "final class TestClass {",
            "  @Qualifier @interface Q {}",
            "  interface A {}",
            "",
            "  @Component()",
            "  interface AComponent {",
            "    @Q A qualifiedA();",
            "  }",
            "}");
    Compilation compilation = daggerCompiler().compile(component);
    assertThat(compilation).failed();
    assertThat(compilation).hadErrorCount(1);
    assertThat(compilation)
        .hadErrorContaining(
            "[Dagger/MissingBinding] @test.TestClass.Q test.TestClass.A cannot be provided "
                + "without an @Provides-annotated method.")
        .inFile(component)
        .onLineContaining("interface AComponent");
  }

  @Test public void constructorInjectionWithoutAnnotation() {
    JavaFileObject component = JavaFileObjects.forSourceLines("test.TestClass",
        "package test;",
        "",
        "import dagger.Component;",
        "import dagger.Module;",
        "import dagger.Provides;",
        "import javax.inject.Inject;",
        "",
        "final class TestClass {",
        "  static class A {",
        "    A() {}",
        "  }",
        "",
        "  @Component()",
        "  interface AComponent {",
        "    A getA();",
        "  }",
        "}");

    Compilation compilation = daggerCompiler().compile(component);
    assertThat(compilation).failed();
    assertThat(compilation).hadErrorCount(1);
    assertThat(compilation)
        .hadErrorContaining(
            "test.TestClass.A cannot be provided without an @Inject constructor or an "
                + "@Provides-annotated method.")
        .inFile(component)
        .onLineContaining("interface AComponent");
  }

  @Test public void membersInjectWithoutProvision() {
    JavaFileObject component = JavaFileObjects.forSourceLines("test.TestClass",
        "package test;",
        "",
        "import dagger.Component;",
        "import dagger.Module;",
        "import dagger.Provides;",
        "import javax.inject.Inject;",
        "",
        "final class TestClass {",
        "  static class A {",
        "    @Inject A() {}",
        "  }",
        "",
        "  static class B {",
        "    @Inject A a;",
        "  }",
        "",
        "  @Component()",
        "  interface AComponent {",
        "    B getB();",
        "  }",
        "}");

    Compilation compilation = daggerCompiler().compile(component);
    assertThat(compilation).failed();
    assertThat(compilation).hadErrorCount(1);
    assertThat(compilation)
        .hadErrorContaining(
            "test.TestClass.B cannot be provided without an @Inject constructor or an "
                + "@Provides-annotated method. This type supports members injection but cannot be "
                + "implicitly provided.")
        .inFile(component)
        .onLineContaining("interface AComponent");
  }

  @Test
  public void missingBindingWithSameKeyAsMembersInjectionMethod() {
    JavaFileObject self =
        JavaFileObjects.forSourceLines(
            "test.Self",
            "package test;",
            "",
            "import javax.inject.Inject;",
            "import javax.inject.Provider;",
            "",
            "class Self {",
            "  @Inject Provider<Self> selfProvider;",
            "}");
    JavaFileObject component =
        JavaFileObjects.forSourceLines(
            "test.SelfComponent",
            "package test;",
            "",
            "import dagger.Component;",
            "",
            "@Component",
            "interface SelfComponent {",
            "  void inject(Self target);",
            "}");

    Compilation compilation = daggerCompiler().compile(self, component);
    assertThat(compilation).failed();
    assertThat(compilation).hadErrorCount(1);
    assertThat(compilation)
        .hadErrorContaining("test.Self cannot be provided without an @Inject constructor")
        .inFile(component)
        .onLineContaining("interface SelfComponent");
  }

  @Test
  public void genericInjectClassWithWildcardDependencies() {
    JavaFileObject component =
        JavaFileObjects.forSourceLines(
            "test.TestComponent",
            "package test;",
            "",
            "import dagger.Component;",
            "",
            "@Component",
            "interface TestComponent {",
            "  Foo<? extends Number> foo();",
            "}");
    JavaFileObject foo =
        JavaFileObjects.forSourceLines(
            "test.Foo",
            "package test;",
            "",
            "import javax.inject.Inject;",
            "",
            "final class Foo<T> {",
            "  @Inject Foo(T t) {}",
            "}");
    Compilation compilation = daggerCompiler().compile(component, foo);
    assertThat(compilation).failed();
    assertThat(compilation).hadErrorCount(1);
    assertThat(compilation)
        .hadErrorContaining(
            "test.Foo<? extends java.lang.Number> cannot be provided "
                + "without an @Provides-annotated method");
  }

  @Test public void longChainOfDependencies() {
    JavaFileObject component =
        JavaFileObjects.forSourceLines(
            "test.TestClass",
            "package test;",
            "",
            "import dagger.Component;",
            "import dagger.Lazy;",
            "import dagger.Module;",
            "import dagger.Provides;",
            "import javax.inject.Inject;",
            "import javax.inject.Named;",
            "import javax.inject.Provider;",
            "",
            "final class TestClass {",
            "  interface A {}",
            "",
            "  static class B {",
            "    @Inject B(A a) {}",
            "  }",
            "",
            "  static class C {",
            "    @Inject B b;",
            "    @Inject C(X x) {}",
            "  }",
            "",
            "  interface D { }",
            "",
            "  static class DImpl implements D {",
            "    @Inject DImpl(C c, B b) {}",
            "  }",
            "",
            "  static class X {",
            "    @Inject X() {}",
            "  }",
            "",
            "  @Module",
            "  static class DModule {",
            "    @Provides @Named(\"slim shady\") D d(X x1, DImpl impl, X x2) { return impl; }",
            "  }",
            "",
            "  @Component(modules = { DModule.class })",
            "  interface AComponent {",
            "    @Named(\"slim shady\") D getFoo();",
            "    C injectC(C c);",
            "    Provider<C> cProvider();",
            "    Lazy<C> lazyC();",
            "    Provider<Lazy<C>> lazyCProvider();",
            "  }",
            "}");

    Compilation compilation = daggerCompiler().compile(component);
    assertThat(compilation).failed();
    assertThat(compilation).hadErrorCount(1);
    assertThat(compilation)
        .hadErrorContaining(
            message(
                "test.TestClass.A cannot be provided without an @Provides-annotated method.",
                "    test.TestClass.A is injected at",
                "        test.TestClass.B(a)",
                "    test.TestClass.B is injected at",
                "        test.TestClass.C.b",
                "    test.TestClass.C is injected at",
                "        test.TestClass.AComponent.injectC(test.TestClass.C)",
                "The following other entry points also depend on it:",
                "    test.TestClass.AComponent.getFoo()",
                "    test.TestClass.AComponent.cProvider()",
                "    test.TestClass.AComponent.lazyC()",
                "    test.TestClass.AComponent.lazyCProvider()"))
        .inFile(component)
        .onLineContaining("interface AComponent");
  }

  @Test
  public void bindsMethodAppearsInTrace() {
    JavaFileObject component =
        JavaFileObjects.forSourceLines(
            "TestComponent",
            "import dagger.Component;",
            "",
            "@Component(modules = TestModule.class)",
            "interface TestComponent {",
            "  TestInterface testInterface();",
            "}");
    JavaFileObject interfaceFile =
        JavaFileObjects.forSourceLines("TestInterface", "interface TestInterface {}");
    JavaFileObject implementationFile =
        JavaFileObjects.forSourceLines(
            "TestImplementation",
            "import javax.inject.Inject;",
            "",
            "final class TestImplementation implements TestInterface {",
            "  @Inject TestImplementation(String missingBinding) {}",
            "}");
    JavaFileObject module =
        JavaFileObjects.forSourceLines(
            "TestModule",
            "import dagger.Binds;",
            "import dagger.Module;",
            "",
            "@Module",
            "interface TestModule {",
            "  @Binds abstract TestInterface bindTestInterface(TestImplementation implementation);",
            "}");

    Compilation compilation =
        daggerCompiler().compile(component, module, interfaceFile, implementationFile);
    assertThat(compilation).failed();
    assertThat(compilation).hadErrorCount(1);
    assertThat(compilation)
        .hadErrorContaining(
            message(
                "java.lang.String cannot be provided without an @Inject constructor or an "
                    + "@Provides-annotated method.",
                "    java.lang.String is injected at",
                "        TestImplementation(missingBinding)",
                "    TestImplementation is injected at",
                "        TestModule.bindTestInterface(implementation)",
                "    TestInterface is provided at",
                "        TestComponent.testInterface()"))
        .inFile(component)
        .onLineContaining("interface TestComponent");
  }

  @Test public void resolvedParametersInDependencyTrace() {
    JavaFileObject generic = JavaFileObjects.forSourceLines("test.Generic",
        "package test;",
        "",
        "import javax.inject.Inject;",
        "import javax.inject.Provider;",
        "",
        "final class Generic<T> {",
        "  @Inject Generic(T t) {}",
        "}");
    JavaFileObject testClass = JavaFileObjects.forSourceLines("test.TestClass",
        "package test;",
        "",
        "import javax.inject.Inject;",
        "import java.util.List;",
        "",
        "final class TestClass {",
        "  @Inject TestClass(List list) {}",
        "}");
    JavaFileObject usesTest = JavaFileObjects.forSourceLines("test.UsesTest",
        "package test;",
        "",
        "import javax.inject.Inject;",
        "",
        "final class UsesTest {",
        "  @Inject UsesTest(Generic<TestClass> genericTestClass) {}",
        "}");
    JavaFileObject component = JavaFileObjects.forSourceLines("test.TestComponent",
        "package test;",
        "",
        "import dagger.Component;",
        "",
        "@Component",
        "interface TestComponent {",
        "  UsesTest usesTest();",
        "}");

    Compilation compilation = daggerCompiler().compile(generic, testClass, usesTest, component);
    assertThat(compilation).failed();
    assertThat(compilation).hadErrorCount(1);
    assertThat(compilation)
        .hadErrorContaining(
            message(
                "java.util.List cannot be provided without an @Provides-annotated method.",
                "    java.util.List is injected at",
                "        test.TestClass(list)",
                "    test.TestClass is injected at",
                "        test.Generic(t)",
                "    test.Generic<test.TestClass> is injected at",
                "        test.UsesTest(genericTestClass)",
                "    test.UsesTest is provided at",
                "        test.TestComponent.usesTest()"));
  }

  @Test public void resolvedVariablesInDependencyTrace() {
    JavaFileObject generic = JavaFileObjects.forSourceLines("test.Generic",
        "package test;",
        "",
        "import javax.inject.Inject;",
        "import javax.inject.Provider;",
        "",
        "final class Generic<T> {",
        "  @Inject T t;",
        "  @Inject Generic() {}",
        "}");
    JavaFileObject testClass = JavaFileObjects.forSourceLines("test.TestClass",
        "package test;",
        "",
        "import javax.inject.Inject;",
        "import java.util.List;",
        "",
        "final class TestClass {",
        "  @Inject TestClass(List list) {}",
        "}");
    JavaFileObject usesTest = JavaFileObjects.forSourceLines("test.UsesTest",
        "package test;",
        "",
        "import javax.inject.Inject;",
        "",
        "final class UsesTest {",
        "  @Inject UsesTest(Generic<TestClass> genericTestClass) {}",
        "}");
    JavaFileObject component = JavaFileObjects.forSourceLines("test.TestComponent",
        "package test;",
        "",
        "import dagger.Component;",
        "",
        "@Component",
        "interface TestComponent {",
        "  UsesTest usesTest();",
        "}");

    Compilation compilation = daggerCompiler().compile(generic, testClass, usesTest, component);
    assertThat(compilation).failed();
    assertThat(compilation).hadErrorCount(1);
    assertThat(compilation)
        .hadErrorContaining(
            message(
                "java.util.List cannot be provided without an @Provides-annotated method.",
                "    java.util.List is injected at",
                "        test.TestClass(list)",
                "    test.TestClass is injected at",
                "        test.Generic.t",
                "    test.Generic<test.TestClass> is injected at",
                "        test.UsesTest(genericTestClass)",
                "    test.UsesTest is provided at",
                "        test.TestComponent.usesTest()"));
  }

  @Test
  public void bindingUsedOnlyInSubcomponentDependsOnBindingOnlyInSubcomponent() {
    JavaFileObject parent =
        JavaFileObjects.forSourceLines(
            "Parent",
            "import dagger.Component;",
            "",
            "@Component(modules = ParentModule.class)",
            "interface Parent {",
            "  Child child();",
            "}");
    JavaFileObject parentModule =
        JavaFileObjects.forSourceLines(
            "ParentModule",
            "import dagger.Module;",
            "import dagger.Provides;",
            "",
            "@Module",
            "class ParentModule {",
            "  @Provides static Object needsString(String string) {",
            "    return \"needs string: \" + string;",
            "  }",
            "}");
    JavaFileObject child =
        JavaFileObjects.forSourceLines(
            "Child",
            "import dagger.Subcomponent;",
            "",
            "@Subcomponent(modules = ChildModule.class)",
            "interface Child {",
            "  String string();",
            "  Object needsString();",
            "}");
    JavaFileObject childModule =
        JavaFileObjects.forSourceLines(
            "ChildModule",
            "import dagger.Module;",
            "import dagger.Provides;",
            "",
            "@Module",
            "class ChildModule {",
            "  @Provides static String string() {",
            "    return \"child string\";",
            "  }",
            "}");

    Compilation compilation = daggerCompiler().compile(parent, parentModule, child, childModule);
    assertThat(compilation).failed();
    assertThat(compilation).hadErrorCount(1);
    assertThat(compilation)
        .hadErrorContainingMatch(
            "(?s)\\Qjava.lang.String cannot be provided\\E.*\\QChild.needsString()\\E")
        .inFile(parent)
        .onLineContaining("interface Parent");
  }

  @Test
  public void multibindingContributionBetweenAncestorComponentAndEntrypointComponent() {
    JavaFileObject parent =
        JavaFileObjects.forSourceLines(
            "Parent",
            "import dagger.Component;",
            "",
            "@Component(modules = ParentModule.class)",
            "interface Parent {",
            "  Child child();",
            "}");
    JavaFileObject child =
        JavaFileObjects.forSourceLines(
            "Child",
            "import dagger.Subcomponent;",
            "",
            "@Subcomponent(modules = ChildModule.class)",
            "interface Child {",
            "  Grandchild grandchild();",
            "}");
    JavaFileObject grandchild =
        JavaFileObjects.forSourceLines(
            "Grandchild",
            "import dagger.Subcomponent;",
            "",
            "@Subcomponent",
            "interface Grandchild {",
            "  Object object();",
            "}");

    JavaFileObject parentModule =
        JavaFileObjects.forSourceLines(
            "ParentModule",
            "import dagger.Module;",
            "import dagger.Provides;",
            "import dagger.multibindings.IntoSet;",
            "import java.util.Set;",
            "",
            "@Module",
            "class ParentModule {",
            "  @Provides static Object dependsOnSet(Set<String> strings) {",
            "    return \"needs strings: \" + strings;",
            "  }",
            "",
            "  @Provides @IntoSet static String contributesToSet() {",
            "    return \"parent string\";",
            "  }",
            "",
            "  @Provides int missingDependency(double dub) {",
            "    return 4;",
            "  }",
            "}");
    JavaFileObject childModule =
        JavaFileObjects.forSourceLines(
            "ChildModule",
            "import dagger.Module;",
            "import dagger.Provides;",
            "import dagger.multibindings.IntoSet;",
            "",
            "@Module",
            "class ChildModule {",
            "  @Provides @IntoSet static String contributesToSet(int i) {",
            "    return \"\" + i;",
            "  }",
            "}");
    Compilation compilation =
        daggerCompiler().compile(parent, parentModule, child, childModule, grandchild);
    assertThat(compilation).failed();
    assertThat(compilation).hadErrorCount(1);
    assertThat(compilation)
        .hadErrorContainingMatch(
            "(?s)\\Qjava.lang.Double cannot be provided\\E.*"
                + "\\QGrandchild.object() [Parent → Child → Grandchild]\\E$")
        .inFile(parent)
        .onLineContaining("interface Parent");
  }

  @Test
  public void manyDependencies() {
    JavaFileObject component =
        JavaFileObjects.forSourceLines(
            "test.TestComponent",
            "package test;",
            "",
            "import dagger.Component;",
            "",
            "@Component(modules = TestModule.class)",
            "interface TestComponent {",
            "  Object object();",
            "  String string();",
            "}");
    JavaFileObject module =
        JavaFileObjects.forSourceLines(
            "test.TestModule",
            "package test;",
            "",
            "import dagger.Binds;",
            "import dagger.Module;",
            "import dagger.Provides;",
            "",
            "@Module",
            "abstract class TestModule {",
            "  @Binds abstract Object object(NotBound notBound);",
            "",
            "  @Provides static String string(NotBound notBound, Object object) {",
            "    return notBound.toString();",
            "  }",
            "}");
    JavaFileObject notBound =
        JavaFileObjects.forSourceLines(
            "test.NotBound", //
            "package test;",
            "",
            "interface NotBound {}");
    Compilation compilation = daggerCompiler().compile(component, module, notBound);
    assertThat(compilation).failed();
    assertThat(compilation).hadErrorCount(1);
    assertThat(compilation)
        .hadErrorContaining(
            message(
                "[Dagger/MissingBinding] "
                    + "test.NotBound cannot be provided without an @Provides-annotated method.",
                "    test.NotBound is injected at",
                "        test.TestModule.object(notBound)",
                "    java.lang.Object is provided at",
                "        test.TestComponent.object()",
                "It is also requested at:",
                "    test.TestModule.string(notBound, …)",
                "The following other entry points also depend on it:",
                "    test.TestComponent.string()"))
        .inFile(component)
        .onLineContaining("interface TestComponent");
    assertThat(compilation).hadErrorCount(1);
  }

  @Test
  public void tooManyRequests() {
    JavaFileObject foo =
        JavaFileObjects.forSourceLines(
            "test.Foo",
            "package test;",
            "",
            "import javax.inject.Inject;",
            "",
            "final class Foo {",
            "  @Inject Foo(",
            "      String one,",
            "      String two,",
            "      String three,",
            "      String four,",
            "      String five,",
            "      String six,",
            "      String seven,",
            "      String eight,",
            "      String nine,",
            "      String ten,",
            "      String eleven,",
            "      String twelve,",
            "      String thirteen) {",
            "  }",
            "}");
    JavaFileObject component =
        JavaFileObjects.forSourceLines(
            "test.TestComponent",
            "package test;",
            "",
            "import dagger.Component;",
            "",
            "@Component",
            "interface TestComponent {",
            "  String string();",
            "  Foo foo();",
            "}");

    Compilation compilation = daggerCompiler().compile(foo, component);
    assertThat(compilation).failed();
    assertThat(compilation).hadErrorCount(1);
    assertThat(compilation)
        .hadErrorContaining(
            message(
                "[Dagger/MissingBinding] java.lang.String cannot be provided without an @Inject "
                    + "constructor or an @Provides-annotated method.",
                "    java.lang.String is provided at",
                "        test.TestComponent.string()",
                "It is also requested at:",
                "    test.Foo(one, …)",
                "    test.Foo(…, two, …)",
                "    test.Foo(…, three, …)",
                "    test.Foo(…, four, …)",
                "    test.Foo(…, five, …)",
                "    test.Foo(…, six, …)",
                "    test.Foo(…, seven, …)",
                "    test.Foo(…, eight, …)",
                "    test.Foo(…, nine, …)",
                "    test.Foo(…, ten, …)",
                "    and 3 others"))
        .inFile(component)
        .onLineContaining("interface TestComponent");
  }

  @Test
  public void tooManyEntryPoints() {
    JavaFileObject component =
        JavaFileObjects.forSourceLines(
            "test.TestComponent",
            "package test;",
            "",
            "import dagger.Component;",
            "",
            "@Component",
            "interface TestComponent {",
            "  String string1();",
            "  String string2();",
            "  String string3();",
            "  String string4();",
            "  String string5();",
            "  String string6();",
            "  String string7();",
            "  String string8();",
            "  String string9();",
            "  String string10();",
            "  String string11();",
            "  String string12();",
            "}");

    Compilation compilation = daggerCompiler().compile(component);
    assertThat(compilation).failed();
    assertThat(compilation).hadErrorCount(1);
    assertThat(compilation)
        .hadErrorContaining(
            message(
                "[Dagger/MissingBinding] java.lang.String cannot be provided without an @Inject "
                    + "constructor or an @Provides-annotated method.",
                "    java.lang.String is provided at",
                "        test.TestComponent.string1()",
                "The following other entry points also depend on it:",
                "    test.TestComponent.string2()",
                "    test.TestComponent.string3()",
                "    test.TestComponent.string4()",
                "    test.TestComponent.string5()",
                "    test.TestComponent.string6()",
                "    test.TestComponent.string7()",
                "    test.TestComponent.string8()",
                "    test.TestComponent.string9()",
                "    test.TestComponent.string10()",
                "    test.TestComponent.string11()",
                "    and 1 other"))
        .inFile(component)
        .onLineContaining("interface TestComponent");
  }

  @Test
  public void missingBindingInAllComponentsAndEntryPoints() {
    JavaFileObject parent =
        JavaFileObjects.forSourceLines(
            "Parent",
            "import dagger.Component;",
            "",
            "@Component",
            "interface Parent {",
            "  Foo foo();",
            "  Bar bar();",
            "  Child child();",
            "}");
    JavaFileObject child =
        JavaFileObjects.forSourceLines(
            "Child",
            "import dagger.Subcomponent;",
            "",
            "@Subcomponent",
            "interface Child {",
            "  Foo foo();",
            "  Baz baz();",
            "}");
    JavaFileObject foo =
        JavaFileObjects.forSourceLines(
            "Foo",
            "import javax.inject.Inject;",
            "",
            "class Foo {",
            "  @Inject Foo(Bar bar) {}",
            "}");
    JavaFileObject bar =
        JavaFileObjects.forSourceLines(
            "Bar",
            "import javax.inject.Inject;",
            "",
            "class Bar {",
            "  @Inject Bar(Baz baz) {}",
            "}");
    JavaFileObject baz = JavaFileObjects.forSourceLines("Baz", "class Baz {}");

    Compilation compilation = daggerCompiler().compile(parent, child, foo, bar, baz);
    assertThat(compilation).failed();
    assertThat(compilation).hadErrorCount(1);
    assertThat(compilation)
        .hadErrorContaining(
            message(
                "[Dagger/MissingBinding] Baz cannot be provided without an @Inject constructor or "
                    + "an @Provides-annotated method.",
                "    Baz is injected at",
                "        Bar(baz)",
                "    Bar is provided at",
                "        Parent.bar()",
                "The following other entry points also depend on it:",
                "    Parent.foo()",
                "    Child.foo() [Parent → Child]",
                "    Child.baz() [Parent → Child]"))
        .inFile(parent)
        .onLineContaining("interface Parent");
  }
}

redpajama_set_name: RedPajamaGithub


text:
How many tennis courts does Golden Gate Park have?
Last Updated: April 2, 2022 by Racket Source Editor
Subsequently, is Golden Gate Park tennis court open?
We are excited to announce the Tennis Center is Now Open. Online court reservations can be made starting today at goldmantenniscenter.com or by calling (415) 581-2540. COVID-19 health precautions require advance reservations to play or visit.
Accordingly, how many tennis courts are there in Central Park? Central Park has New York City's largest set of public tennis courts — 26 clay courts and 4 hard courts — available for play with a permit from NYC Parks.
Then, how much does it cost to play tennis in Central Park?
Full-Season Permits: $100 per year for adults, ages 18 to 61. Discounts available for seniors, kids, and teens. Single-Play Permit: $15 for a single-play permit (cash only). A single-play permit allows you to play at any tennis court in any borough for one hour.
Where do people play tennis in NYC?
Flushing Fields Memorial Flushing Fields 149th St. & 25th Ave. Hard
Flushing Meadows Corona Park Flushing Meadows Corona Park Flushing Meadows Corona Park Hard
Forest Park Forest Park Park Lane South & 89th St. Hard
Highland Park- Lower Playground Highland Park Elton St. & Jamaica Ave. Hard
Does Central Park have tennis courts?
Most courts are open from 8:00 a.m. to dusk, except at Central Park where courts open at 7:00 a.m. and Randall's Island where courts open at 7:00 a.m. and close at 7:00 p.m. … Tennis permit sales have been suspended for the 2020 season.
Can you park at winning Lammas Park?
How many tennis balls can a golden retriever fit in its mouth?
Why do golden retrievers love tennis balls?

redpajama_set_name: RedPajamaCommonCrawl


text:
Q: Call URL when order status change Is it possible to develop an extension that calls an external URL with some information about an order, let's say when an order is fulfilled/sent. Its because we want to integrate with another system, that sends out customer review request emails.
So we want to "ping" their system when order status changes, and then in the other system we can then choose the sending delays, so that the other system sends the review request 4-5 days after order is sent.

A: You can use sales_order_save_after it's triggered right after an order is saved in the database and returns the full order object.
So when ever an order status is changed you can call the api and send your order data.

redpajama_set_name: RedPajamaStackExchange


New Zealand's David Nyika made it consecutive Commonwealth Games gold medals, while India's MC Mery Kom captured her first Games gold on Saturday.
Nyika, a Glasgow 2014 gold medallist in 81kg, stepped up in weight for GC2018 and defeated Australia's Jason Whateley 5-0, taking gold with a superb display in a bruising 91kg final.
Five-time world champion Kom led a busy day for India, with gold in the 45-48kg division, while countryman Gaurav Solanki was victorious in the 52kg division.
"Even my sports minister came to cheer me on," said Kom. "My country will be very proud."


text:
PEOPLE OF THE PHILIPPINES, PLAINTIFF-APPELLEE, VS. ANTONIO MAGPAYO, DEFENDANT AND APPELLANT.
PEREZ, J.:
On appeal is the Decision[1] dated 9 October 2008 of the Court of Appeals (CA) in CA-G.R. CR-H.C. No. 02858 which affirmed, with modification, the Judgment[2] dated 30 March 2007 of the Regional Trial Court (RTC) of Gumaca, Quezon, Branch 61, finding appellant Antonio Magpayo guilty beyond reasonable doubt of violating Sec. 5, Article II of Republic Act (R.A.) No. 9165[3] and sentencing him to suffer the penalty of life imprisonment and ordering him to pay a fine of P300,000.00.[4]
The Amended Information against appellant reads:
"That on or about 10:00 o'oclock in the evening of the 18th day of January 2003, at Barangay 5, Poblacion, Municipality of Alabat, Province of Quezon, Philippines, and within the jurisdiction of this Honorable Court, the above named accused, without authority of law, did then and there willfully, unlawfully and feloniously sell, deliver and give away to a police officer who acted as poseur buyer five (5) heat-sealed transparent plastic sachets, each containing methamphetamine hydrochloride, with a total weight of 0.24 gram, and for which said accused received as payment four (4) marked P100 bills, with Serial Nos. EL902137, FF502736, JM490061 and HW957560."[5]
Appellant pleaded not guilty on arraignment and trial on the merits thereafter ensued. The prosecution presented as witnesses the arresting officers, PO3 Alex Angulo (PO3 Angulo) and PO1 Isidro Realubit (PO1 Realubit), and the Forensic Chemist, PSI Zaide Fausto Abrera (PSI Abrera). From their respective testimonies, the following version of the events is gathered:
At around 10:00 in the evening of 18 January 2003, the officers on duty at the Alabat Police Station in Quezon received information from an asset that appellant was selling shabu in Barangay 5, Alabat, Quezon.[6] A team composed of PO3 Angulo, PO1 Realubit and two others was immediately dispatched to the area by the Chief of Police, P/Inspector Amado Interino, Jr., to conduct a buy-bust operation.[7] PO1 Realubit, PO3 Angulo and PO1 Felixberto Norbe positioned themselves in a dark place about five to seven meters away from appellant.[8] PO1 Jimmy Gaya (PO1 Gaya), the designated poseur-buyer, approached appellant to carry out the buy-bust. PO1 Gaya first handed the marked money to appellant who then handed him what was presumed to be shabu. After which, PO1 Gaya held appellant--the pre-arranged signal - to indicate that the sale had been consummated.[9] The rest of the team immediately rushed to the scene, arrested appellant and frisked him for deadly weapon. The searched yielded four more plastic sachets containing a white crystalline substance.[10]
The team thereafter brought appellant to the Alabat Police Station for investigation.[11] There the team recovered the four P100 bills marked money, as well as unmarked cash amounting to P2,500.00 which Police Inspector Interino, Jr., required to be confiscated as proceeds from appellant's sale of shabu.[12] The markings "ACA 01," "ACA 02," "ACA 03," "ACA 04" and "ACA 05" were then affixed to the five plastic sachets recovered from appellant before transmitting them to the Quezon Provincial Crime Laboratory Office for examination.[13] The contents of the plastic sachets tested positive for Methamphetamine Hydrochloride or shabu.[14]
Appellant denied the charge against him claiming that he was merely at the balcony of his house waiting for food when he was arrested.[15] Gloria Martinez, appellant's sister, was presented to corroborate appellant's testimony. According to her, she was in her own house at that time when she heard appellant shouting for help because he was being arrested so she followed him and the arresting officers to the municipal hall of Atimonan.[16] There she saw PO3 Angulo get four plastic sachets from his drawer and place it on top of his table as evidence against her brother. PO1 Realubit, on the other hand, produced the marked money; after which, PO3 Angulo conducted a body search on her brother and took the money found from his pockets.[17]
The trial court found that the prosecution's evidence had proven appellant's guilt beyond reasonable doubt and convicted him as follows:
WHEREFORE AND IN VIEW OF ALL THE FOREGOING, Court finds accused Antonio Magpayo, GUILTY beyond reasonable doubt for the crime charged of Violation of Section 5, Article II or Republic Act 9165 and is hereby sentenced to suffer the penalty of LIFE IMPRISONMENT and to pay a fine of Php300,000.00
On appeal to the Court of Appeals , the decision of the trial court was affirmed by the appellate court with the modification that the fine imposed on appellant was increased to P500,000.00.
Hence, the instant appeal.
In the Resolution[18] of the Court dated 28 October 2009, we required the parties to simultaneously file their respective supplemental briefs if they so desire.
In its Manifestation[19] dated 23 December 2009, the Office of the Solicitor General (OSG) manifested that it will no longer file a Supplemental Brief considering that it has already exhaustively discussed the issues in its Appellee's Brief submitted to the Court of Appeals.
Likewise, in his Manifestation (In Lieu of Supplemental Brief)[20] dated 4 January 2009, appellant manifested that he will no longer file a supplemental brief and that he is adopting his Appellant's Brief as his Supplemental Brief.
Appellant assails, among other things, the failure of the buy-bust team to comply with the procedural requirements of Sec. 21 of the implementing rules of R.A. 9165, particularly the marking of evidence after seizure and confiscation, the conduct of a physical inventory and the prescribed witnesses to the buy-bust operation.[21] Appellant alleged that no coordination with the Philippine Drug Enforcement Agency (PDEA) was made by the buy-bust team,[22] contrary to the mandate by the above-mentioned provision.
We grant the appeal.
Admittedly, denial is an inherently weak defense, consistently viewed with disfavor by the courts, being a self-serving negative evidence.[23] In view, however, of the constitutional presumption that an accused is innocent until the contrary is proven beyond reasonable doubt, the burden lies on the prosecution to overcome such presumption by presenting the required quantum of evidence.[24] In so doing, the prosecution must rest on its own merits and must not rely on the weakness of the defense.[25]
In a prosecution for illegal sale of dangerous drugs, the following elements must be duly established: (1) proof that the transaction or sale took place; and (2) the presentation in court of the corpus delicti or the illicit drug as evidence.[26] Proof of the corpus delicti in a buy-bust situation requires evidence, not only that the transacted drugs actually exist, but evidence as well that the drugs seized and examined are the same drugs presented in court.[27]
In the case at bar, the buy-bust team committed lapses in the handling of the drugs taken from accused which seriously undermine the integrity of the seized substance.
Section 21 of R.A. 9165 provides that:
1) The apprehending team having initial custody and control of the drugs shall, immediately after seizure and confiscation, physically inventory and photograph the same in the presence of the accused or the person/s from whom such items were confiscated and/or seized, or his/her representative or counsel, a representative from the media and the Department of Justice (DOJ), and any elected public official who shall be required to sign the copies of the inventory and be given a copy thereof. (Emphasis supplied)
Further, Section 86 of the Implementing Rules and Regulations of R.A. 9165 states that:
(a) Relationship/Coordination between PDEA and Other Agencies - The PDEA shall be the lead agency in the enforcement of the Act, while the PNP, the NBI and other law enforcement agencies shall continue to conduct anti-drug operations in support of the PDEA: Provided, that the said agencies shall, as far as practicable, coordinate with the PDEA prior to anti-drug operations; Provided, further, that, in any case, said agencies shall inform the PDEA of their anti-drug operations within twenty-four (24) hours from the time of the actual custody of the suspects or seizure of said drugs and substances, as well as paraphernalia and transport equipment used in illegal activities involving such drugs and/or substances, and shall regularly update the PDEA on the status of the cases involving the said anti-drug operations; x x x. (Emphasis supplied)
Strict compliance with the prescribed procedures is required because of the unique characteristic of illegal drugs, rendering them indistinct, not readily identifiable, and easily open to tampering, alteration or substitution either by accident or otherwise.[28] Hence, the rules on the measures to be observed during and after the seizure, during the custody and transfer of the drugs for examination, and at all times up to their presentation in court.[29]
In the present case, the records do not show that the above-mentioned procedural requirements were complied with. No physical inventory and photographs of the seized items were taken. Likewise, no prior coordination with the PDEA, prior to and after the conduct of the buy-bust operation, was made.
While Section 21 (a)[30] of the Implementing Rules and Regulations of R.A. 9165 excuses non-compliance with the afore-quoted procedure, the same holds true only for as long as the integrity and evidentiary value of the seized items are properly preserved by the apprehending officers. Here, the failure of the buy-bust team to comply with the procedural requirements cannot be excused since there was a break in the chain of custody of the substance taken from appellant. It should be pointed out that the identity of the seized substance is established by showing its chain of custody.[31]
As a method of authenticating evidence, the chain of custody rule requires that the admission of an exhibit be preceded by evidence sufficient to support a finding that the matter in question is what the proponent claims it to be. It would include testimony about every link in the chain, from the moment the item was picked up to the time it is offered in evidence, in such a way that every person who touched the exhibit would describe how and from whom it was received, where it was and what happened to it while in the witness' possession, the condition in which it was received and the condition in which it was delivered to the next link in the chain. These witnesses would then describe the precautions taken to ensure that there had been no change in the condition of the item and no opportunity for someone not in the chain to have possession of the same.[32]
Thus, the following are the links that must be established in the chain of custody in a buy-bust situation: first, the seizure and marking, if practicable, of the illegal drug recovered from the accused by the apprehending officer; second, the turnover of the illegal drug seized by the apprehending officer to the investigating officer; third, the turnover by the investigating officer of the illegal drug to the forensic chemist for laboratory examination; and fourth, the turnover and submission of the marked illegal drug seized from the forensic chemist to the court.[33]
In this case, the prosecution failed to clearly demonstrate how the seized items were handled from the time they were taken from appellant to the moment they were presented as evidence in court. Although PO3 Angulo testified[34] that PO1 Gaya, the poseur-buyer, surrendered the same to their chief of police at the police station and that he (PO3 Angulo) marked[35] the same, as well as the other plastic sachets of shabu which their search on appellant yielded, it was not clear, however, when the markings were made: whether it was done before or after PO1 Gaya turned over the sold shabu to their chief of police. This detail assumes utmost importance when it is taken into account that there were a total of five (5) plastic sachets taken from appellant, but only one of those is the subject of this case for illegal sale of prohibited drugs. Since the poseur-buyer was not presented as a witness, it becomes absolutely necessary for the prosecution to identify with utmost certainty which substance was the subject of the sale.
This, the prosecution failed to do, as shown by the following excerpts from the testimony of PO3 Angulo:
Of these five plastic sachet, taken from the accused, which is the subject of the Buy-Bust Operation?
According to SPO1 Gaya, he took that sachet from Antonio Magpayo and the remaining four sachet, I took that from his pocket because I noticed that there was a hard object in his pocket, so I frisked him and I recovered cash and these four sachet.
Can you identify which of the specimen submitted by PSI Fausto Zaide is that bigger shabu which you mentioned as the subject of the buy bust operation?
(witness handed a brown small envelope containing the specimen submitted by PSI Zaide Abrera last June 15, 2004 when she testified)
Witness identified the heated plastic sachet containing his initial with .05.
What is this .05 marking?
I think it is from the crime laboratory, I am not so sure about that marking.[36] (Emphasis supplied)
In addition, there was no clear evidence as to who handled the seized items next after they were marked. Based on the records, a request for examination was made by Police Inspector Interino, Jr., to the Quezon Provincial Crime Laboratory Office. On the said request, the stamp mark of its time and date of receipt states that a certain PO1 Catherine T. Aquino (PO1 Aquino) delivered the request,[37] presumably, with the specimens; but as to when and how PO1 Aquino came into possession of the subject specimens, the records are totally bereft of evidence. Likewise, as to how the seized items were turned over to the court as evidence was not established.
Clearly, there was a break in the chain of custody of the seized substances. The failure of the prosecution to establish the evidence's chain of custody is fatal to its case. Under no circumstance can we consider or even safely assume that the integrity and evidentiary value of the drug was properly preserved by the apprehending officers. There can be no crime of illegal sale of a prohibited drug when nagging doubts persist on whether the item confiscated was the same specimen examined and established to be the prohibited drugs.[38]
WHEREFORE, the appeal is GRANTED. The 9 October 2008 decision of the Court of Appeals in CA-G.R. CR-H.C. No. 02858 affirming with modification the judgment of conviction dated 30 March 2007 of the Regional Trial Court, Branch 61, Gumaca, Quezon in Criminal Case No. 7743-G is hereby REVERSED and SET ASIDE. Accused-appellant Antonio Magpayo is hereby ACQUITTED and ordered immediately released from detention unless his continued confinement is warranted from some other cause or ground.
Corona, C.J., (Chairperson), Velasco, Jr., Leonardo-De Castro, and Del Castillo, JJ., concur.
[1] Penned by Associate Justice Ricardo J. Rosario with Associate Justices Rebecca De Guia- Salvador and Vicente E. Veloso, concurring. Rollo, pp. 2-15.
[2] Penned by Judge Aurora V. Maqueda-Roman. Records, pp. 194-211.
[3] An Act Instituting the Comprehensive Dangerous Drugs Act of 2002, Repealing Act No. 6425, otherwise known as the Dangerous Drugs Act of 1972, as Amended, Providing Funds therefor, and for other Purposes.
[4] Records, p. 211.
[5] Id. at p. 16.
[6] TSN, 4 March 2004, p. 3 and TSN, 1 September 2004, p. 3.
[8] Id.; TSN, 8 July 2004, p. 11 and TSN, 1 September 2004, p. 5.
[9] TSN, 4 March 2004, p. 4 and TSN, 8 July 2004, p. 11.
[10] Id., at p. 5; id. at p. 12 and TSN, 1 September 2004, p. 6.
[12] Id.; TSN, 8 July 2004, p. 4 and TSN, 1 September 2004, p. 6.
[13] Exhibits "A," Folder of Exhibits, pp. 130.
[14] Exhibit "C," id. at p. 132 and TSN, 15 January 2004, p. 6.
[15] TSN, 7 April 2005, p. 3.
[16] TSN, 23 February 2006, pp. 3-4.
[18] Rollo, p. 25.
[21] CA rollo, p. 59.
[23] People v. Madsali, G.R. No. 179570, 4 February 2010, 610 SCRA 596, 608.
[24] People vs. Dela Cruz, G.R. No. 177222, 29 October 2008, 570 SCRA 273, 282.
[26] People vs. Kamad, G.R. No. 174198, 19 January 2010, 610 SCRA 295, 303 citing People vs. Robles, G.R. No. 177220, 24 April 2009, 586 SCRA 647.
[28] Id. citing People v. Robles, supra note 26.
[30] (a) The apprehending officer/team having initial custody and control of the drugs shall, immediately after seizure and confiscation, physically inventory and photograph the same in the presence of the accused or the person/s from whom such items were confiscated and/or seized, or his/her representative or counsel, a representative from the media and the Department of Justice (DOJ), and any elected public official who shall be required to sign the copies of the inventory and be given a copy thereof: Provided, that the physical inventory and photograph shall be conducted at the place where the search warrant is served; or at the nearest police station or at the nearest office of the apprehending officer/team, whichever is practicable, in case of warrantless seizures: Provided, further, that non-compliance with these requirements under justifiable grounds, as long as the integrity and the evidentiary value of the seized items are properly preserved by the apprehending officer/team, shall not render void and invalid such seizures of and custody over said items. (Emphasis supplied)
[31] People v. Barba, G.R. No. 182420, 23 July 2009, 593 SCRA 711, 717.
[32] Malillin v. People, G.R. No. 172953, 30 April 2008, 553 SCRA 619, 632 citing United States v. Howard-Arias, 679 F.2d 363, 366, United States v. Rocco, 52 F.3d 58 and Evidence Law, Roger C. Park, David P. Leonard, Steven H. Goldberg, 1998, 610 Opperman Drive, St. Paul Minnesota, p. 507.
[33] People v. Kamad, supra note 26 at 307-308.
[34] TSN, 8 July 2004, p. 12.
[35] Id. at p. 5.
[37] Exhibit "A," supra note 13.
[38] People v. Suan, G.R. No. 184546, 22 February 2010 citing Valdez v. People, G.R. No. 170180, 23 November 2007, 538 SCRA 611.


text:
Q: Visual Studio 2015 Xamarin pending to install updates don't install I run visual studio 2015 as an administrator
I update Xamarin from tools->options->Xamarin
After I download the updates I get this

When I click install nothing happens!
What am I missing?

A: Try deleting the contents of "\Users\YourUserName\AppData\Local\MonoDevelop-4.0\Cache\TempDownload" and then check again for updates


text:
Ruby's ParseExcel and the Extra Date
We have a feature in one of our application which allows the user to upload data from an Excel spreadsheet. One of the columns read in is a date field. Because we're dealing with end users, sometimes those dates come in as "Date" objects, sometimes they come in as "String"s, and sometimes they come in as a number. When Excel saves a date as a numeric, it is that value's number of days since January 0, 1900 (No, we can't say Dec 31, 1899). So a spreadsheet would store "May 1, 2011" as 40664 if it was formatted as a number. That's great, peachy even, but if you'll notice, 40664 days from Dec 31, 1899 is May 2, 2011, not May 1st. What happened? Compatibility. When Microsoft introduced Excel way back when, Lotus123 dominated the spreadsheet marking. In order for Microsoft to be able to compete, it had to be compatible with Lotus123. It had to be compatible with all the formulas, all the features, and all the bugs. One of those bugs had to do with an erroneous leap day in 1900. This means that when you read in numbers from a spreadsheet in order to translate them to a date, you have to account for that extra leap day. The solution? Just subtract one from the numeric. It might look something like this (from the Rails console):
Date.civil(1899, 12, 31) + 40664.days - 1.day
We could have did that anyway and just chalked it up to something weird, but now, at least, we know why it's weird. Notes:
OpenOffice is also fully compatible with that bug.
Dates and Times in Excel
Established 2005 · Databasically © 2016


Since my last update I added some compartments for plane storage. I found it easier to apply the finish with the cabinet hung on the wall. Using blue painter's tape as a mask I wiped on two coats of finish. Since this is essentially a tool box which will receive a lot of heavy and harsh use compared to a piece of furniture, I decided two coats was enough. Normally, for a furniture piece, I would have applied five to seven coats.
In the right half of the cabinet I placed the bench (smooth, jack, fore and jointer) and shoulder planes. Block and rabbet planes are smaller and are placed in the left side. Since most of my files, chisels, squares, measurement and construction tools will be placed in the doors I fitted the left side cabinet with shelf pins. This will allow me to place frequently used materials, such as pocket screws, in the left side where they will be close by and easily accessed. I also decided on two wide drawers versus four narrow ones for miscellaneous tools. This will allow me to place items in the draws that are longer than 12″.
Since my last update I visited Lie-Nielsen Toolworks to pick up my new Lie-Nielsen workbench shown in the picture at right in front of my tool cabinet. Together these two pieces will provide a hand tool work area that will make for efficient working of wood, especially dovetailing, edging and smooth planing. Though shown so that the vices can be seen in the picture, in reality I will turn the bench around so that I will be positioned between the tool cabinet and the bench vises, making all tools within arms reach. I will shortly post a separate blog describing my visit to Lie-Nielsen Toolworks and will also provide a short review of the workbench.
My next update will hopefully be my last for this project and I will have the drawers and doors completed. Stay tuned.
Since my last update I have focused on the carcass – cutting all remaining joints, sanding, gluing up, adding the back and beginning the placement of tools. The divider attaches to the top and bottom with a sliding dovetail. I use the router to cut this joint. To be sure that the dovetails line up perfectly, and to minimize tear out, I clamp both the top and bottom together and make one cut as can be seen in the picture at left.
In the picture at right you can see there are many types of joinery employed in this design. The top, bottom and sides are joined with hand cut dovetails. The divider connects to the top and bottom with a sliding dovetail. The shelf attaches to the sides and divider with 1/8″ dadoes. In addition there are a number of stopped notches. In some places I used counter sunk screws.
With this many joints and joinery types, dry fitting and developing a glue up strategy is very important. I never bypass these two important steps for expediency sake. This design, in particular, will trip you up for sure if you do because it fits together much like a jig saw puzzle. In the picture at left you can see a test fit of the stopped notch in the shelf and the 1/8″ dadoes in the divider. In this way each piece is incrementally added and a glue up strategy developed.
Before beginning glue up I sand all inside faces to 220 grit shown right. Doing this after clue up would be very difficult and time consuming. I will have to lightly sand each inside surface after glue up to remove any raised grain caused by cleaning up glue squeeze out, but that can be done very quickly.
For this design I chose to begin the glue up by attaching the divider to the bottom via sliding dovetail first. Using metal right angle brackets and clamps I allow the assembly to set up before moving on. Next I add the top and shelf in that order as shown in the picture at left. This allows the ends tails to slide into the top and bottom pins, and the shelf's notches to slide into the sides dadoes when adding the ends.
The day I glued up the ends I was unable to enlist any help. Glue ups can be stressful. To minimize the stress, especially since I was alone and dovetails take longer than most joints to assemble, I chose to attach one end at a time, and leave it to set up. Dovetail joints, once seated, are self holding and require no clamping. The dado joints, on the other hand, require clamps to be sure they are completely joined and remain that way throughout set up. This is shown right.
Shown at left is the assembled structure after set up. This is the best time to lightly sand the inside surfaces, before the back is added and makes it more difficult. The carcass structure is shown left. The outside surfaces can also be sanded to 220 grit at this time as can the slats and cross members for the back.
The back is added next. It just so happens that I have had, laying around in my storage, mahogany bevel edged tongue & grove, 5/16″ thick, 4″ wide slats. Several years ago my brother-in-law was able to acquire them as leftovers from a job he was working on and gave them to me. I have a lot of such things. When I get gifts like this I never know how I will use them, but I know that in time I will. These worked out perfectly on this project, adding just the right amount of contrast to the tiger maple. See the picture at right.
This is a particularly fun part of this project; placing the individual tools. Placing the tools is a very personal thing. Each person who would start with the same carcass design would end up with a vastly different arrangement of tools. I am finding this phase to take more time than I initially thought, including a lot of place-and-replace. Getting the tool placement right, that is, placed in a way that is natural for the cabinetmaker to access and use, is critical to work efficiency, so it deserves the attention to detail required.
Once I have all the tools placed in the carcass I will apply the finish and mount it to the wall. Then I will proceed to craft the doors and drawers. Stay tuned.


text:
El Gran Premi dels Comerciants de Templeuve és una competició ciclista d'un sol dia que es disputa a Templeuve, una secció de la ciutat de Tournai, a la província de l'Hainaut. Creada el 2014 formant part de l'UCI Europa Tour, amb una categoria 1.2. L'any següent baixà a categoria nacional.

Palmarès

Enllaços externs
 Palmarès a sitiodeciclismo.net

Competicions ciclistes belgues
UCI Europa Tour
Tournai
Esport a Hainaut

redpajama_set_name: RedPajamaWikipedia


text:
Stories by Williams
Classic sci-fi books, reviews, and the best of from a dedicated fan and author!
Advise for Aspiring Writers
Articles by Matt Williams
*SETI
Beyond Fermi's Paradox Series!
The Formist Series
***The Frost Line Fracture – Sample
**The Jovian Manifesto – Sample
*The Cronian Incident – Sample
The Revengers!
Timeline of the Future…
The Fate of Humanity
Where to Buy My Books
Enter your email address to follow storiesbywilliams and receive notifications of new posts by email.
Towards a Cleaner Future: The Bloom Aquatic Habitat
Worlds of the Firefly Universe
Dinosaur Eggs Found With Embryos Still Inside
Futuristic Guns
The Future is Here: Self-Healing Metal
Nukemap 3D: Bringing Nuclear War to your Home!
GIANT ROBOTS!
Curiosity and the Case of the Martian "Coffin"
Space Elevators!
Arcology in Popular Culture
Categories Select Category Aliens Architecture and Design Artwork Authors Awards Books Climate Change Comics Computing Education Environment Fantasy Future Games Grim5next guest writer HeroX History Ideas Interviews Issues Mars Medicine Milestones Military Movies Nanotech News Novels Podcast Promotions Renewable Energy Reviews robots Samples Sci-Fi Science science fiction Solar Space Story Time Technological Singularity Technology the cronian incident The Formist Series The Jovian Manifesto Trailer Travel Uncategorized Universe Today Video Video games Writer's Worth Writing zombies
Archives Select Month January 2021 December 2020 November 2020 October 2020 September 2020 July 2020 June 2020 March 2020 November 2019 October 2019 September 2019 July 2019 June 2019 May 2019 April 2019 January 2019 December 2018 November 2018 October 2018 September 2018 August 2018 July 2018 June 2018 May 2018 March 2018 January 2018 December 2017 October 2017 September 2017 August 2017 June 2017 May 2017 April 2017 March 2017 December 2016 November 2016 October 2016 September 2016 August 2016 July 2016 May 2016 March 2016 February 2016 December 2015 November 2015 August 2015 July 2015 April 2015 March 2015 February 2015 January 2015 December 2014 November 2014 October 2014 September 2014 August 2014 July 2014 June 2014 May 2014 April 2014 March 2014 February 2014 January 2014 December 2013 November 2013 October 2013 September 2013 August 2013 July 2013 June 2013 May 2013 April 2013 March 2013 February 2013 January 2013 December 2012 November 2012 October 2012 September 2012 August 2012 July 2012 June 2012 May 2012 April 2012 March 2012 February 2012 January 2012 December 2011 November 2011 October 2011 September 2011 August 2011 July 2011 June 2011 May 2011 April 2011 March 2011
@RamiUngarWriter "Holy crap, a mess is this place Somebody, please kill me now How did we let it get this bad? Some… twitter.com/i/web/status/1… 2 hours ago
@trouseredapes Oh it definitely is, and a key part of where our space programs are going to be in the coming decade… twitter.com/i/web/status/1… 23 hours ago
@trouseredapes Hey, it's the internet, don't sweat it! ;) So basically you were saying they stand to "catch up and… twitter.com/i/web/status/1… 23 hours ago
Follow @storybywill
Tag: NoCal
Idoru!
The second installment in William Gibson's "The Bridge" Trilogy. Looking back, I don't feel like I did the first book justice with the rather short review I gave it. Not to say that my overall opinion of the book has changed, but I feel like there were elements and angles that I should have delved into a little more. But since this book took place within the same general framework as the first, I shall rectify that here! So much better than re-editing old posts, don't you think?
Idoru:
What can I say about Gibson's second "Bridge" novel? Well, for starters, I liked it! It was much more developed and intriguing than the first, to be honest. While Virtual Light was concerned with the sense of post-millennial shock, the disintegration of California and the US and the massive privatization thereof – calling to mind other books by Gibson and Stephenson's Snow Crash – Idoru dealt mainly with the concept of celebrity and the nature of modern media. Although it is set just a few years after the events in the first novel, far less attention is given this time around to either the Pacific west coast or Japan's experience of the big earthquake. It's still there, just operating in the background and popping up on occasion to set the scene.
In addition, Kowloon's Walled City makes an even bigger appearance this time around. In the first book, it is listed as the inspiration for The Bridge – aka. the Golden Gate Bridge that has become a community unto itself. This time though, it has matured into a cyberspace VR construct where people port in and live out their lives in a virtual environment. Like the original Walled City, it is a place for hackers, Otaku, and cyberpunks, people who live on the fringes of society in this day in age. In keeping with all of Gibson's pre-Bigend novels, this is indicative of the disappearance of the middle class and the emergence of cyber communities as a form of resistance. This tribalistic behavior, taken into the digital realm, is not so much political as it is cultural.
This is best exemplified by the character Chia Pet McKenzie, a teenager who also happens to be a member of the Lo/Rez fan club. Lo/Rez is a Japanese band, a clever pun on Low-res (i.e. low resolution), and the fan site is an international community that communicates via cyberspace. The concept of "nodal points" is also introduced via the character of Laney, a man who is apparently adept at finding these nodes in information patterns. After leaving a company named SlitScan, a media giant renowned for ruining celebrities by exposing their secrets, he is hired because his unique abilities make him useful to anyone looking to find these patterns. These two characters and the plot strands that involve them come together when Rez, half of Lo/Rez, announces he wants to marry Rei Toei, the Idoru (Japanese for Idol). The Idoru is a virtual creation, a holographic person, who is apparently achieved a measure of sentience. Laney is hired to find out, via Lo/Rez's info, why he could be doing this and/or if anyone is manipulating him (like the Idoru's people). Chia is similarly flown to Japan to determine the cause of this as well, but on behalf of the fan club. In any case, the two finally find a way to consummate their union by obtaining nanotechnology, apparently so they can fashion her a physical body. This, however, is left open, we never see if they pulled it off or not.
All of this calls to mind several familiar Gibson themes. For starters, the concept of data mining, which makes an appearance in many of his novels. According to Gibson, the character of Laney is a fictitious rendering of himself, his ability being a metaphor for what Gibson dose on a regular basis in order to predict the future. This seems clear enough given that the theme has come up again and again in Gibson's works (Cayce Pollard, another main character, did much the same thing in Pattern Recognition). Also, there is the concept of AI's, digital sentience, and the increasingly blurred line between artificial and authentic. In addition, the influence of the mass media, the culture of celebrity, and the massive influence these two things plays on our society is featured throughout this book. In short, it asks the question of why people are obsessed with celebrities, want to be them, what it takes to be one, and why we want to ruin them so badly! It is also quite Warholian in how it addresses how fame has changed over time and how it is the industry that seems to determine who is famous, why, and for how long.
Selling Points:
Overall, I could see why this book was hailed as the book that cemented Gibson's reputation. There's a lot going on in this book! One can see many layers of technological, cultural and social commentary, punctuated as always by Gibson's love of sub-culture, street life, and cutting edge things. In fact, this book was quite influential in the way it predicted virtual personalities, which is something that became quite big in Japan on or around the time of the book's publication. It was also rather prescient in the way it delved into the kinds of tribalism that have become incredibly common with the internet. On top of all that, his delving into the world of media, celebrity and the dividing line between what is real and fake (exemplified by the marriage of Rei Toei) was executed with his usual subtle genius. That was one of the things I liked best about this novel. At no point was someone saying "You can't marry a program! It's immoral, unnatural!" Nor was anyone arguing in favor of it by saying "Look at the world today! There IS no line between real and fake anymore!" Everyone was concerned, most people thought he'd either lost his mind or was being manipulated, but no one came right out and ANNOUNCED it. This is something that people like the makers of S1mOne, who were clearly imitating Gibson, did do (just look at that title! What an obvious binary reference!).
Weak Points:
For one, the open ending. That applied to more than just whether or not Rez and Rei Toei ever achieved a physical union. That much I could understand given that it was the idea of it that was important, the exploration of whether or not it would ever be possible for a human and digital person to cross that boundary. But it also applied to other aspects of the story as well. For one, Laney's ex-boss shows up deep into the story to blackmail him, and she is apparently disappeared by Lo/Rez's head of security. We never find out if he really did anything to her or if he just scared her off. The plot thread involving her just disappears like it had become inconvenient and Gibson wanted to get rid of it. Perhaps it comes up in book three, but here, it was like a final act cut-off. This is something this book has in common with Stephenson too, ironically enough; the quick, choppy endings!
And of course, some familiar old patterns also emerge in this book and have become apparent in this trilogy as well. The first pattern is one I've seen in every Gibson book I've read yet: having one man and one woman as main characters and either hooking them up, or pairing them off with secondary characters. Some examples include Chase and Molly in Neuromancer (who hooked up with each other), Hollis and Milgrim in Zero History (who had separate hook-ups), Chevette and Rydel in Virtual Light (together), and now Laney and Chia (separate). Mind you, I'm not calling this a weakness. In fact, most people would call it a convention; interesting stories need some degree of romance to keep them from being totally dry! But it does seem just the slightest bit repetitive this time around. He also switches main characters in the second book in this trilogy, which he did with the Bigend Trilogy too, but not the Sprawl one for some reason.
Overall, a good book and a fun, fascinating read. I definitely recommend it for anyone interested in classic sci-fi or who, like me, is interesting in charting the course of cyber/post-cyberpunk literature. You see? This is the kind of treatment Virtual Light should have gotten! I'll be sure to be this thorough from now on!
By storiesbywilliamsin Books, Reviews September 18, 2011 October 20, 2011 1,436 WordsLeave a comment
Of Kowloon's Walled City and "Virtual Light" (by Gibson)
Just finished reading Gibson's first installment in the "Bridge Trilogy", and was reasonably impressed with it. In addition to being a good intro to his pre-Bigend series, it also gave me some insight into the writer himself and his inspirations. For starters, and I urge everyone to go look this up, I'd never heard of Kowloon's Walled City before, nor did I know that was what inspired The Bridge for which the trilogy is named.
In short, this city began as a Chinese fort but became part of Britain's mandate after they acquired Hong Kong in the lease of 1898. Since that time, it evolved into a massive squatter community, a place for refugees, migrants, drug dealers, thugs, and the poor and downtrodden. Although it had a reputation for being a den of crime, gambling and prostitution, it was also home to over 33,000 people. At least, until the Hong Kong government decided to demolish it in 1993. It took over a year to complete the process, and only after a very intense eviction process.
After reading about all this, I could see where Gibson got the idea for "The Bridge", which is the center point of Virtual Light and other stories in the trilogy. Set in San Francisco in 2005, the Golden Gate bridge has become a squatter city of its own. This was due mainly to the fact that San Fran was devastated by the "Little Grande" (aka. the Big One), and this and other factors had a dramatic impact on the city. Like many of his other works, the US and North America have become fragmented shadows of their former selves, and private companies enjoy ridiculous amounts of power.
And, as usual, the main characters are freelance people who get caught up in a scheme that is far bigger than themselves. Add to that some cooky religious cult and an interesting side story about Shapely, a man who inadvertently cured AIDS and became a sainted figure, and you've got Gibson's usual take on America of the future, a gritty, dirty place, marked by polarized wealth, private contractors, high-tech assassins, and corporate scheming. It was fun, enjoyable, and the concept of the Bridge was both novel and entertaining.
Now for the weak points. For starters, I really didn't feel the whole "post-millennium shock" thing. While it was a very interesting idea, it was not as well developed or convincing as I was hoping. In addition, the techno-angle, not as intriguing as I would have hoped. The glasses, which are the MacGuffin of the story, were interesting enough, but really didn't blow my mind the way some of his other works have. And the story's setting just doesn't seem realistic given that it was set only a decade from when he wrote it. It seemed far-fetched that nanotechnology and the disintegration of America could have happened in such a short time.
Perhaps that was why I felt unconvinced throughout, the fact that it was all taking place in 2005. Too soon to seem real! I was also thrown by the rather striking resemblance this book bore to Neal Stephenson's "Snow Crash", which had been published a year prior. The stuff about privatized America, cooky religious sects, hacker communities, and corporate plotting, not to mention how the lead female is a messenger; these were all the same! I'm a sucker for all that stuff, but perhaps that added to the whole "unconvinced" thing. I'd seen it done before, and frankly… better. Sorry William! This round goes to Stephenson.
Incidentally, I'm kind of sad that the Kowloon Walled City no longer exists. Rather than demolishing the place, I think the Hong Kong authorities ought to have preserved it as a museum. It was a living piece of history, after all! And let's not forget that the place was the result of neglect by many generations of civil authorities, so razing it wasn't exactly a smart (or particularly sensitive) solution! Look it up, the photo galleries are immense and very cool to look at. Here's a few links I happened to find:
Kowloon Walled City, Cross-Section
"Kowloon Walled City: The Modern Pirate Utopia", Coilhouse Magazine
Kowloon Walled City Park: Official Webpage
By storiesbywilliamsin Books, Reviews May 23, 2011 October 2, 2012 694 WordsLeave a comment


Q. I was injured in a car accident, and the accident report is on my side, can I use the accident report to prove the other driver is at fault?
A. The simple answer is no. But I want to be more complete. You cannot use the police (accident) report as evidence at trial to help prove your case. This is because Florida has an accident report privilege, which makes any statements that are said at the accident scene privileged.
The reason for the privilege is that the legislature wants drivers in accidents to be truthful with law enforcement investigating the crash without the hammer sitting over their heads that any statements can be used against them in a civil lawsuit.You will be able to use the police report when negotiating with the insurance adjuster and the insurance adjuster will look at the statements when making a determination of fault.


This is the far right candidate that may become Brazil's next president, President Trump and Filipino president for his highly controversial statements, including his NADA, obviously in Congress since 1991, the French far-right for most of his political career, making headlines more for his statements than any political achievements. Argument with a fellow congresswoman who accused him of promoting violence over the years, it's been a long list of other devices of remarks. Last year, ecommons has grown in recent years. I'M eating with many Brazilians song guns and had said he's, give police permission to kill suspect, but most of all he represents extreme opposition to the lastest Workers Party of former president Lula charges, busaras Workers Party rival in the election. It'S been. A former mayor of San Paulo and Minister under Lula and relies heavily on social media to spread his message. If it's Amber Riley Hospital, he continues to campaign for life Appleton auto using the hashtag or not him by the critic, continued rising and falls in the first round of the election, who won 46 % of the vote, show me some run off on October 28th. I guess I died, who now faces an uphill battle?


Prices for potatoes sitting in storage could come under pressure if harvest comes early this year.
Potato growers are holding onto stock in store in the hope of further price increases, according to AHDB Potatoes.
A "buoyant" trade for Scottish seed potato exports has been thanked for a significant rise in activity at Scotland's largest container port.
A group of scientists is looking to combat the problem of "greening" in potatoes as part of a bid to strengthen global food security.
Free-buy potato prices are likely to remain on par with contracted prices, claims Produce Investments.
In agricultural terms Pembroke used to be synonymous with the production of early potatoes.