text:
Q: Displaying items in C from an array I have an 8x8 enum array that contains empty, red, white, k_red, k_white pieces. The array looks like
for(x = 0; x < BOARDHEIGHT; x++)
{
    for(y = 0; y < BOARDWIDTH; y++)
    {
    printf("%d |",board[x][y]);
    }
    printf("\n");
}

Which prints to the screen int values but I would like them to show instead of the int values an actual display defined as (for example)
#define WHITE_KING_DISPLAY "\x1b[39m" "O"

How do I go about making the array print that instead of its int value.

A: If your int values, i.e., the values stored in board[x][y], are in the range [0,4] then you could simply define an array with string that you want as the print-outs:
char const *labels[5] = { WHITE_KING_DISPLAY, ... };

Then in your printf, instead of printing board[x][y] you print labels[board[x][y]].

A: The value contained in the board array are enum with the values WHITE, RED, K_WHITE, K_RED you have to use condition statement such as if, or better switch statement. For the use of if else statement.
Example:
if (board[i][j] == RED)
{
printf("%s",RED_DISPLAY);
}
else if (border[i][j] == WHITE){
....
}

The define in the pre-processor are strings and therefore a format specifier of %s. However, i do recommend switch statements, but i will let you explore this.

redpajama_set_name: RedPajamaStackExchange


Springtime has arrived and we have an extra hour of daylight to play with.
Make it a goal to spend an hour outside each day that you can. Pick up an a volunteer shift somewhere outside. Join a tree planting group or a park cleanup! Take your kids on a walk or call up a friend and invite them to go to the park.
Sensible amounts of sun can cheer you up and is good for your body! The Vitamin D you get from even 15 minutes a day in the sun is essential for absorbing calcium and keeping our bones healthy. It can help protect you from a myriad of diseases and ailments such as osteoporosis, heart disease, Type II diabetes and multiple sclerosis.
Don't forget that sunscreen if you're going to be out for long.
If you live in Portland, check out these groups!


Hello Heartland! I graduated from Wartburg College with a degree in journalism in the spring of 2014 and started working at KTVO in the following summer, I'm happy to be here! I was born and grew up on a farm in Northeast Iowa. I spent most of my college career working as the station manager and news director at WTV, the college and community television station. I spent my time reporting, anchoring, and producing our weekly shows and also contributed to the college's student magazine, newspaper, and news website. I interned at KCRG-TV9 for two summers, the first I was a reporter and the second I produced the travel segment "Our Town."
One of my favorite college memories was anchoring a special edition show called Youth Vote with KWWL Channel 7's anchor, Ron Steele. It covered the 2012 presidential election by explaining the issues and how they affect young voters. I also got the chance to study abroad while in college and traveled to Germany, Romania, Slovakia, and the Czech Republic.
I like to spend my time running, cooking, reading, and watching movies.


text:
Posted by: meghanhealy | November 28, 2010
Alice Adapted (and a tangent about the Beatles)
I couldn't resist sharing this link to the first film adaptation of Alice's Adventures in Wonderland:
The youtube caption reads:
The first-ever film version of Lewis Carroll's tale has recently been restored by the BFI National Archive from severely damaged materials. Made just 37 years after Lewis Carroll wrote his novel and eight years after the birth of cinema, the adaptation was directed by Cecil Hepworth and Percy Stow, and was based on Sir John Tenniel's original illustrations. In an act that was to echo more than 100 years later, Hepworth cast his wife as the Red Queen, and he himself appears as the Frog Footman. Even the Cheshire cat is played by a family pet. With a running time of just 12 minutes (8 of which survive), Alice in Wonderland was the longest film produced in England at that time. Film archivists have been able to restore the film's original colours for the first time in over 100 years.
On a tangent from the film clip, but still related to Alice: John Lennon credits The Beatles' "Lucy in the Sky with Diamonds" and "I am the Walrus" as being inspired by Lewis Carroll. In several interviews in the 1960s, Lennon argued that he did not know the the initials spelled LSD, although he certainly never denies his experimentation with drugs; he wrote the song based on a picture his son, Julian, had made of a schoolmate (Lucy) which he told his father was "Lucy in the sky with diamonds." The images in the song were inspired by the "Wool and Water" chapter in Through the Looking Glass, and "I am the Walrus" came from "The Walrus and the Carpenter"; Lennon later announced he should have named it "I am the Carpenter" after realizing that the carpenter was actually the good guy. [Also, on the cover to the "Ballad of John and Yoko" single, the Wonderland land gnomes belonged to Paul McCartney, and Ringo starred in one of the Alice film adaptations, so John wasn't the only Carroll-inspired Beatle.]
« Alice By Cameron
alice through the moving picture »
You beat me to posting the Cecil Hepworth film! I love it. My favorite adaptation of the few I've seen has to be the one Jan Svankmajer did in 1988, though — it's a wonderful surreal live action and stop motion piece. Here's a clip, for anyone interested: http://www.youtube.com/watch?v=J2-TPdB70Lg
By: melissayang on November 28, 2010
Meghan–that's so funny that Lennon wanted to name the song "I am the Carpenter" instead! I never would have thought that that song is inspired by Alice.
By: wmellin on December 11, 2011

redpajama_set_name: RedPajamaCommonCrawl


text:
Q: The pre image of a function The question is like this
Let $f:X \to Y$ be a function. Consider sets $A \subseteq Y$ and $B \subseteq Y$. Show that $$f^{-1}(A \cap B) \subseteq f^{-1} (A) \cap f^{-1} (B)$$
which I did as follows
Let $x \in f^{-1}(A \cap B)$ $\implies$ $f(x)\in A \cap B$ $\implies$ $f(x) \in A$ and $f(x)\in B$ $\implies$ $x  \in f^{-1}(A)$ and $x  \in f^{-1}(B)$ $\implies$ $x  \in f^{-1}(A \cap B)$, hence, $f^{-1}(A \cap B) \subseteq f^{-1} (A) \cap f^{-1} (B)$.
Please correct me if anything is wrong.
The question then goes on to ask:
$$Is\ the\ converse\ of\ the\ statement\ true\ in\ general?$$
I think the converse is true, but the way the question is posed make me feel that this is not the case.
Please help me with this problem, if the converse is true, can I just prove this by changing all my implication into equivalence? Or if the converse is false, how can I find a counterexample to show that its false?
Thanks to anybody who helps.

A: Your proof looks fine to me.
As for your second question, the answer is actually yes. Preimages play very well with intersections of sets (and unions and set differences too, try proving those if you haven't already). If you want proof, well look at what you've already written! It looks likes those implications could be biconditionals...
Unfortunately, images of sets don't play as nice with those operations and in general we just get containment in one direction (which I can't recall right now).

A: The converse is true:
$$x\in f^{-1}(A\cap B)\iff f(x)\in A\cap B\iff f(x)\in A\wedge f(x)\in B\iff$$$$x\in f^{-1}(A)\wedge f^{-1}(B)\iff x\in f^{-1}(A)\cap f^{-1}(B)$$
Preimages are (in contrast with images) very cooperative.

A: $ x \in f^{-1}(A) \cap f^{-1}(B) \iff f(x) \in A \wedge f(x) \in B \iff f(x) \in A\cap B \iff x \in f^{-1}(A\cap B)$
So the converse statement is true. You can generalize it to infinite interstections as well.


text:
Home/Region/Americas/Top names vow to make zero emission vessels commercially viable by 2030
AmericasEnvironmentTech
Top names vow to make zero emission vessels commercially viable by 2030
Sam ChambersSeptember 23, 2019
At the United Nations Climate Action Summit in New York today a host of top shipowners, managers, ports, banks and shippers have vowed to get commercially viable zero emission vessels operating on deepsea routes by 2030.
The Getting to Zero Coalition features the likes of Maersk, Shell, Cargill and Trafigura among its 70+ members.
The ambition of the Getting to Zero Coalition is closely aligned with the UN International Maritime Organization's Initial GHG Strategy. The strategy prescribes that international shipping must reduce its total annual greenhouse gas emissions by at least 50% of 2008 levels by 2050, whilst pursuing efforts towards phasing them out as soon as possible in this century.
The Getting to Zero Coalition is a partnership between the Global Maritime Forum, the Friends of Ocean Action, and the World Economic Forum.
"Efficiency measures can only keep shipping emissions stable, not eliminate them. To take the next big step change towards decarbonization of shipping, a shift in propulsion technologies or a shift to clean fuels is required which implies close collaboration from all parties. The coalition launched today is a crucial vehicle to make this collaboration happen," said Søren Skou, CEO of A.P. Møller Mærsk, a company that has taken the lead in this field by vowing to be carbon neutral by 2050.
"Decarbonizing maritime shipping is a huge task with no simple answer, but it has to be done," said Ben van Beurden, CEO of Royal Dutch Shell.
"To reach the 2050 zero emissions goal requires a paradigm shift: our industry will need to align with key actors across the entire energy sector," said Jan Dieleman, president of Cargill Ocean Transportation
Christopher Wiernicki, chairman of the American Bureau of Shipping, commented: "The greatest challenge of our generation – and the next – will be the decarbonisation of the shipping industry."
ICS partners with the International Renewable Energy Agency
Vale resumes Minas Gerais operations as rainfall weakens
Is the delisting of shipping companies likely to become a trend over the next two years?


Asphalt 8 Airborne for Personal computer will allow you experience more of the video game. This famous mobile game is now available on computer and laptop computer download giving you the ease to race, reach the finish line and be the first racer. Time can be also your opposition right here therefore be wise and select the greatest performing gaming console.
Then there is multiplayer. Asynchronous multiplayer means you can race your friends even when they are not online. That happens via a ghost car, a recorded interpretation of your friend's racing history. Multiplayer is definitely even more fun and you find yourself hitting that nitro harder and heading even more intense against your competitors when you realize they are actual humans. You can choose one of three types of occasions and your preferred monitor, and if the bulk of votes agree with the fact with yours you perform that precise type of problem.
Simply imagine the potential these images promise- playing this on the forthcoming snapdragon 800 products ( about 6-8 instances the efficiency of the GPU in the Be aware 2) and optimized for all that power, it all should appear spectacular and far beyond anything on portable units really. Dam, Asphalt 7 was currently very laggy on my iPod Touch 4, therefore I guess 8 will end up being far as well laggy. For example, through a network award. We must look for 5000, and change to the right then. After that defeat in the network and take your money.


I wrote this song when I was 20 years old. It was my first song and when I performed it I always thought that it didn't fit in with where I felt my band were going. Eight years years later I did a synth version that soon sounded dated and once again not fitting in with the other songs. I think that this is the best version of the song.
Let me see, what can I do to impress you?
What can I do, to make you understand?
that my feelings are real? I love you so.
Will you be, my lover my sweet heart?
Can I be, your only one?
but all I have is my love for you.
whether you love me, whether you care.
and I've got to know, so let your feelings show.
Can't you see how much I love you?
Can't you see how much I care?
all I have is my love for you.
and just a smile from you would make me feel alright.


text:
Q: Window Function: To include aggregated values into GROUP BY clause? 2 questions on following:

*

*1st set of code yielded following response:

    WITH cte AS(
    SELECT
        cus.full_name AS full_name,
        SUM(rc.penalty) OVER(PARTITION BY customer_id) AS summary_penalty
    FROM customer cus JOIN rent_contract rc
        ON cus.id = rc.customer_id
    GROUP BY cus.full_name
    )
    SELECT *
    FROM cte
    WHERE summary_penalty >= 500;

ERROR: column "rc.penalty" must appear in the GROUP BY clause or be used in an aggregate function Line: 4 Position in the line: 9 Make corrections and try again

May I know why is the aggregated column required to be included in GROUP BY clause in this case?
My quick fix is as follow:
WITH cte AS(
SELECT DISTINCT
    cus.full_name AS full_name,
    SUM(rc.penalty) OVER(PARTITION BY customer_id) AS summary_penalty
FROM customer cus JOIN rent_contract rc
    ON cus.id = rc.customer_id
)
SELECT *
FROM cte
WHERE summary_penalty >= 500;

*Which actually worked but from my learning I do not recall being taught to include DISTINCT to eliminate repeated rows. Is it safe to actually use SELECT DISTINCT when calculating with WINDOW FUNCTIONS in order to not use GROUP BY?

full_name   summary_penalty
Siro Aveni  510
Siro Aveni  510
Floriana Trevisani  1100
Floriana Trevisani  1100

A: SUM(rc.penalty) OVER(PARTITION BY customer_id) AS summary_penalty outputs on each row the sum that you would get by grouping by customer_id, but no aggregate is applied to this column when you then GROUP BY cus.full_name.
And you probably to GROUP BY customer_id, cus.full_name in case there are two different customers with the same name (John Smith).
If you want to show the total penalty for each customer whose total penalties come to over 500 then you need something like
SELECT c.id, c.full_name, SUM(rc.penalty) AS penaltySUM
FROM Customer c INNER JOIN rent_contract rc ON c.id = rc.customer_id
GROUP BY c.id, c.full_name
HAVING SUM(rc.penalty) > 500


Curtis Ferry Services is the premier tourism operator in Gladstone - the Heart of the Southern Great Barrier Reef. Curtis Ferry Services provides reliable and regular passenger and vehicle services to the Gladstone Harbour Islands - Curtis, Facing and Quoin. Along with tours around the Harbour which include - Coffee Cruise, Sundowner Cruise, Port Curtis Harbour Tour, Harbour Cruise and the Island Cruise. Reef Camping, Curtis Ferry Services also provides services to Northwest, Masthead and Lady Musgrave Islands which form part of the Capricorn Bunker Group - known as Southern Great Barrier Reef.
The Gladstone Harbour Island Cruises coincide with the Curtis Ferry Services scheduled departures. An island cruise is the perfect and relaxing way for visitors and locals alike to experience the Gladstone Harbour's beautiful islands. You will depart from the Curtis Ferry Services terminal and travel around the residential islands whilst taking the in the sights. Island Cruise passengers are welcome on any scheduled service.
The Port of Gladstone Harbour Tour provided by Curtis Ferry Services is the best way to experience Gladstone's enormous and busy harbour. You can expect great company, great coffee and refreshments from the licensed bar. Expert commentary on the many exciting aspects of the Gladstone Harbour is sure to reveal some amazing facts you didn't know. It's a great opportunity for both visitors and locals to view the Port in the comfort and safety of our ferry, the Curtis Endeavour II, and discover Auckland Inlet, Gladstone Port, Auckland Point, the tug berth, harbour islands, Curtis Island LNG plants and local industry. Bookings are ESSENTIAL and can be made at the Gladstone Visitor Information Centre, 4/72 Bryan Jordan Drive, Gladstone QLD 4680. Phone: 07 4972 9000.


text:
Tag Archives: opencl
adobe, design, gpu computing
Adobe turns to OpenCL rather than NVIDIA CUDA for Mercury Graphics Engine in Creative Suite 6
April 23, 2012 onlyconnect 6 Comments
Adobe has just announced Creative Suite 6. CS 5.5 used the Mercury Playback Engine in Premiere Pro, which takes advantage of NVIDIA's CUDA library in order to accelerate processing when an NVIDIA GPU is present. Just to be clear, this is not just graphics acceleration, but programming the GPU to take advantage of its many processor cores for general-purpose computing.
Premiere Pro CS6 also uses the Mercury Playback Engine, and while CUDA is still recommended there is new support for OpenCL:
The Mercury Playback Engine brings performance gains to all the GPUs supported in Adobe Creative Suite 6 software, but the best performance comes with specific NVIDIA® CUDA™ enabled GPUs, including support for mobile GPUs and NVIDIA Maximus™ dual-GPU configurations. New support for the OpenCL-based AMD Radeon HD 6750M and 6770M cards available with certain Apple MacBook Pro computers running OS X Lion (v10.7x), with a minimum of 1GB VRAM, brings GPU-accelerated mobile workflows to Mac users.
PhotoShop CS6 also uses the GPU to accelerate processing, using the new Mercury Graphics Engine. The Mercury Graphics Engine uses the OpenCL framework, which is not specific to any one GPU vendor, rather than CUDA:
The Mercury Graphics Engine (MGE) represents features that use video card, or GPU, acceleration. In Photoshop CS6, this new engine delivers near-instant results when editing with key tools such as Liquify, Warp, Lighting Effects and the Oil Paint filter. The new MGE delivers unprecedented responsiveness for a fluid feel as you work. MGE is new to Photoshop CS6, and uses both the OpenGL and OpenCL frameworks. It does not use the proprietary CUDA framework from nVidia.
It seems to me that this amounts to a shift by Adobe from CUDA to OpenCL, which is a good thing for users of non-NVIDIA GPUs.
This also suggests to me that NVIDIA will need to ensure excellent OpenCL support in its GPU cards, as well as continuing to evolve CUDA, since Creative Suite is a key product for designers using the workstations which form a substantial part of the market for high-end GPUs.
adobecudanvidiaopencl
intel, professional, software development, systems
When will Intel's Many Integrated Core processors be mainstream?
April 13, 2011 onlyconnect
I'm at Intel's software tools conference in Dubrovnik, which I have attended for the last three years, and as usual the big topic is concurrent programming and how to write code that takes advantage of the multiple cores in today's computers.
Clearly this remains a critical subject, but in some ways the progress over these last three years has been disappointing when it comes to the PCs that most of us use. Many machines are only dual-core, which is sub-optimal for concurrent programming since there is an overhead to multi-threading programming that eats into the benefit of having two cores. Quad core is now common too, and more useful, but what about having 50 or 80 or more cores? This enables massively parallel processing of the kind that you can easily do today with general-purpose GPU programming using OpenCL or NVidia's CUDA, but not yet on the CPU unless you have a super computer. I realise that GPU cores are not the same as CPU cores; but nevertheless they enable some spectacularly fast parallel processing.
I am interested therefore in Intel's MIC or Many Integrated Core architecture, which combines 50 or more CPU cores on a single chip. MIC is already in preview, with hardware codenamed Knight's Corner and a development kit called Knight's Ferry. But when will MIC hit the mainstream for servers and workstations, and how long is it until we can have 50 cores on a commodity desktop PC? I spoke to Intel's chief evangelist James Reinders.
Reinders first gave me some background on MIC:
"We've made those bold steps to dual core, quad core and we've got even ten core now, but if you look inside those microprocessors they have a very simple structure. All the cores are hooked together and share their connection to memory, through a shared cache usually that's on the chip. It's a simple computer structure, and we know from experience when you build computers with more and more processors, that eventually you go to more sophisticated connections between the cores. You don't build a 1000-processor super computer and hook them all together with a bus to one memory.
"It's inevitable that on a chip we need to design a more sophisticated connection. That's what MIC's about, that's what the Larrabee project has always been about, a belief that we should take a bunch of x86 cores and hook them together with something more sophisticated. In this case it's a ring, a bi-directional, 512-bit wide high performance ring, with multiple connections to memory off the chip, which gives us more bandwidth.
"That's how I look at MIC, it's putting a cluster-type of design on a chip."
But what about timing?
"The first place you'll see this is in servers and in workstations, where there's a lot of demand for a lot of computation. In that case we'll see that availability sometime by the end of 2012. The Intel product should be out late in that year.
"When will we see it in other devices? I think that's a ways off. It's a very high core count part, more than 50, it's going to consume a fair amount of power. The same part 18 months later will probably consume half the power. So inside a decade we could see this being common on desktops, I don't know about mobile devices, it might even make it to tablets. A decade's a long time, it gives a lot of time for people to come up with innovative uses for it in software.
"We'll see single core disappear everywhere."
Incidentally, it is hard to judge how much computing power is "enough". Although having many CPU cores may seem overkill for everyday computing, things like speech recognition or on-the-fly image processing make devices smarter at the expense of intense processing under the covers. From super computers to smartphones, if more computing capability is available history tells us that we will find ways to use it.
cudaintellarrabeeMICmulti-coreopencl
development, mobile, multimedia, professional, software development
NVIDIA CEO on the spot: explains Fermi delays, CUDA vs OpenCL, rise of the tablet
September 23, 2010 onlyconnect 1 Comment
NVIDIA CEO Jen-Hsung Huang spoke to the press at the GPU Technology Conference and I took the opportunity to ask some questions.
I asked for his views on the cloud as a supercomputer and whether that would impact the need for local supercomputers of the kind GPU computing enables.
Although we expect more and more to happen in the cloud, in the meantime we're going to keep buying devices with more and more solid state memory. The way to think about it is, storage is simply a surrogate for bandwidth. If we had infinite bandwidth none of us would need storage. As bandwidth improves the requirement for storage should reduce. But there's another trend which is that the amount of data we collect is growing incredibly fast … It's going to be quite a long time before our need for storage will reduce.
But what about local computing power, Gigaflops as opposed to storage?
Wherever there is storage, there's GigaFlops. Local storage, local computing.
Next, I brought up a subject which has been puzzling me here at GTC. You can do GPU programming with NVIDIA's CUDA C, which only works on NVIDIA GPUs, or with OpenCL which works with other vendor's GPUs as well. Why is there more focus here on CUDA, when on the face of it developers would be better off with the cross-GPU approach? (Of course I know part of the answer, that NVIDIA does not mind locking developers to its own products).
The reason we focus all our evangelism and energy on CUDA is because CUDA requires us to, OpenCL does not. OpenCL has the benefit of IBM, AMD, Intel, and ourselves. Now CUDA is a little difference in that its programming approach is different. Instead of an API it's a language extension. You program in C, it's a different model.
The reason why CUDA is more adopted than OpenCL is because it is simply more advanced. We've invested in CUDA much longer. The quality of the compiler is much better. The robustness of the programming environment is better. The tools around it are better, and there are more people programming it. The ecosystem is richer.
People ask me how do we feel about the fact that it is proprietary. There's two ways to think about it. There's CUDA and there's Tesla. Tesla's not proprietary at all, Tesla supports OpenCL and CUDA. If you bought a server with Tesla in it, you're not getting anything less, you're getting CUDA more. That's the reason Tesla has been adopted by all the OEMs. If you want a GPU cluster, would you want one that only does OpenCL? Or does OpenCL and CUDA? 80% of GPU computing today is CUDA, 20% is OpenCL. If you want to reach 100% of it, you're better off using Tesla. Over time, if more people use OpenCL that's fine with us. The most important thing is GPU computing, the next most important thing to us is NVIDIA's GPUs, and the next is CUDA. It's way down the list.
Next, a hot topic. Jen-Hsun Huang explained why he announced a roadmap for future graphics chip architectures – Kepler in 2011, Maxwell in 2013 – so that software developers engaged in GPU programming can plan their projects. I asked him why Fermi, the current chip architecture, had been so delayed, and whether there was good reason to have confidence in the newly announced dates.
He answered by explaining the Fermi delay in both technical and management terms.
The technical answer is that there's a piece of functionality that is between the shared symmetric multiprocessors (SMs), 236 processors, that need to communicate with each other, and with memory of all different types. So there's SMs up here, and underneath the memories. In between there is a very complicated inter-connecting system that is very fast. It's nearly all wires, dense metal with very little logic … we call that the fabric.
When you have wires that are next to each other that closely they couple, they interfere … it's a solid mesh of metal. We found a major breakdown between the models, the tools, and reality. We got the first Fermi back. That piece of fabric – imagine we are all processors. All of us seem to be working. But we can't talk to each other. We found out it's because the connection between us is completely broken. We re-engineered the whole thing and made it work.
Your question was deeper than that. Your question wasn't just what broke with Fermi – it was the fabric – but the question is how would you not let it happen again? It won't be fabric next time, it will be something else.
The reason why the fabric failed isn't because it was hard, but because it sat between the responsibility of two groups. The fabric is complicated because there's an architectural component, a logic design component, and there's a physics component. My engineers who know physics and my engineers who know architecture are in two different organisations. We let it sit right in the middle. So the management lesson learned – there should always be a pilot in charge.
Huang spent some time discussing changes in the industry. He identifies mobile computing "superphones" and tablets as the focus of a major shift happening now. Someone asked "What does that mean for your Geforce business?"
I don't think like that. The way I think is, "what is my personal computer business". The personal computer business is Geforce plus Tegra. If you start a business, don't think about the product you make. Think about the customer you're making it for. I want to give them the best possible personal computing experience.
Tegra is NVIDIA's complete system on a chip, including ARM processor and of course NVIDIA graphics, aimed at mobile devices. NVIDIA's challenge is that its success with Geforce does not guarantee success with Tegra, for which it is early days.
The further implication is that the immediate future may not be easy, as traditional PC and laptop sales decline.
The mainstream business for the personal computer industry will be rocky for some time. The reason is not because of the economy but because of mobile computing. The PC … will be under disruption from tablets. The difference between a tablet and a PC is going to become very small. Over the next few years we're going to see that more and more people use their mobile device as their primary computer.
[Holds up Blackberry] There's no question right now that this is my primary computer.
The rise of mobile devices is a topic Huang has returned to on several occasions here. "ARM is the most important CPU architecture, instruction set architecture, of the future" he told the keynote audience.
Clearly NVIDIA's business plans are not without risk; but you cannot fault Huang for enthusiasm or awareness of coming changes. It is clear to me that NVIDIA has the attention of the scientific and academic community for GPU computing, and workstation OEMs are scrambling to built Tesla GPU computing cards into their systems, but transitions in the market for its mass-market graphics cards will be tricky for the company.
Update: Huang's comments about the reasons for Fermi's delay raised considerable interest as apparently he had not spoken about this on record before. Journalist Nico Ernst captured the moment on video:
Video: Nvidia-Chef Jen-Hsun Huang über Fermis technische Schwierigkeiten (4:32)
armfermigpu computingmobilemultimedianvidiaopencltesla
development, professional, software development
Is the triumph of the GPU the failure of the CPU?
September 22, 2010 onlyconnect 5 Comments
I'm at NVIDIA's GPU tech conference in San Jose. The central theme of the conference is that the capabilities of modern GPUs enable substantial performance gains for general computing, not just for graphics, though most of the examples we have seen involve some element of graphical processing. The reason you should care about this is that the gains are huge.
Take Matlab for example, a popular language and IDE for algorithm development, data analysis and mathematical computation. We were told in the keynote here yesterday that Matlab is offering a parallel computing toolkit based on NVIDIA's CUDA, with speed-ups from 10 to 40 times. Dramatic performance improvements opens up new possibilities in computing.
Why has GPU performance advanced so rapidly, whereas CPU performance has levelled off? The reason is that they use different computing models. CPUs are general-purpose. The focus is on fast serial computation, executing a single thread as rapidly as possible. Since many applications are largely single-thread, this is what we need, but there are technical barriers to increasing clock speed. Of course multi-core and multi-processor systems are now standard, so we have dual-core or quad-core machines, with big performance gains for multi-threaded applications.
By contrast, GPUs are designed to be massively parallel. A Tesla C1060 has not 2 or 4 or 8 cores, but 240; the C2050 has 448. These are not the same as CPU cores, but nevertheless do execute in parallel. The clock speed is only 1.3Ghz, whereas an Intel Core i7 Extreme is 3.3Ghz, but the Intel CPU has a mere 6 cores. An Intel Xeon 7560 runs at 2.266 Ghz and has 8 cores.The lower clock speed in the GPU is one reason it is more power-efficient.
NVIDIA's CUDA initiative is about making this capability available to any application. NVIDIA made changes to its hardware to make it more amenable to standard C code, and delivered CUDA C with extensions to support it. In essence it is pretty simple. The extensions let you specify functions to execute on the GPU, allocate memory for pointers on the GPU, and copy memory between the GPU (called the device) and the main memory on the PC (called the host). You can also synchronize threads and use shared memory between threads.
The reward is great performance, but there are several disadvantages. One is the challenge of concurrent programming and the subtle bugs it can introduce.
Another is the hassle of copying memory between host and device. The device is in effect a computer within a computer. Shifting data between the two is relatively show.
A third is that CUDA is proprietary to NVIDIA. If you want your code to work with ATI's equivalent, called Streams, then you should use the OpenCL library, though I've noticed that most people here seem to use CUDA; I presume they are able to specify the hardware and would rather avoid the compromises of a cross-GPU library. In the worst case, if you need to support both CUDA and non-CUDA systems, you might need to support different code paths depending on what is detected at runtime.
It is all a bit messy, though there are tools and libraries to simplify the task. For example, this morning we heard about GMAC, which makes host and device appear to use a single address space, though I imagine there are performance implications.
NVIDIA says it is democratizing supercomputing, bringing high performance computing within reach for almost anyone. There is something in that; but at the same time as a developer I would rather not think about whether my code will execute on the CPU or the GPU. Viewed at the highest level, I find it disappointing that to get great performance I need to bolster the capabilities of the CPU with a specialist add-on. The triumph of the GPU is in a sense the failure of the CPU. Convergence in some form or other strikes me as inevitable.
aticudahigh performance computingnvidiaopenclsoftware development


text:
package uk.co.agware.filter.data;

import java.util.List;

/**
 * Created by Philip Ward <Philip.Ward@agware.com> on 24/06/2016.
 */
public interface Access<T extends Permission> extends Comparable<Access<? extends Permission>> {

    String getObjectClass();

    void setObjectClass(String name);

    String getDisplayName();

    void setDisplayName(String s);

    AccessType getAccess();

    void setAccess(AccessType read);

    List<T> getPermissions();

    void setPermissions(List<T> permissions);

    boolean isModifiable();

    void setModifiable(boolean b);

    @Override
    default int compareTo(Access<? extends Permission> o) {
        if(this.getDisplayName() == null) return 1;
        if(o.getDisplayName() == null) return -1;
        return this.getDisplayName().compareTo(o.getDisplayName());
    }
}

redpajama_set_name: RedPajamaGithub


Fresh Belgian waffle (made in-house) with ice cream, hot fudge, and your choice of toppings.
Any flavor soft serve ice cream. Floats available in root beer and Pepsi soda.
Any flavor hard scoop ice cream. Floats available in root beer and Pepsi soda.
Your choice of ice cream & candy, blended together into magical goodness.
Variety of flavors available. Great for a quick cool down.
Slush with a bit of vanilla soft serve ice cream added in.


text:
"""ShutIt module. See http://shutit.tk
"""
from shutit_module import ShutItModule
import string
import re

class coreos_do_setup(ShutItModule):

	def is_installed(self, shutit):
		return False

	def build(self, shutit):
		# https://www.digitalocean.com/community/tutorials/how-to-set-up-a-coreos-cluster-on-digitalocean
		# NEED: an ssh key set up with digital ocean in a file - we take the first one seen from an API request
		# Read in the token
		import cluster_config
		cluster_config.cluster_config.set_token(shutit)
		# Get unique coreos discovery url
		shutit.install('curl jq openssh-client')
		shutit.send(r'''curl -s -w "\n" https://discovery.etcd.io/new''')
		discovery = shutit.get_output().strip()
		if shutit.cfg[self.module_id]['ssh_key_id'] == '':
			shutit.send("""curl -s -X GET -H 'Content-Type: application/json' -u "${TOKEN}:" "https://api.digitalocean.com/v2/account/keys" | jq -M '.ssh_keys[0].id'""")
			ssh_key_id = shutit.get_output().strip()
		else:
			ssh_key_id = shutit.cfg[self.module_id]['ssh_key_id']
		# ssh keys
		shutit.send('mkdir -p /root/.ssh')
		if shutit.cfg[self.module_id]['ssh_key_file'] != '':
			shutit.send_host_file('/root/.ssh/' + shutit.cfg[self.module_id]['ssh_key_filename'],shutit.cfg[self.module_id]['ssh_key_file'])
			shutit.send('chmod 0600 /root/.ssh/' + shutit.cfg[self.module_id]['ssh_key_filename'])
			#shutit.send('eval `ssh-agent -s`')
			#shutit.send('ssh-add ' + shutit.cfg[self.module_id]['ssh_key_filename'])
		shutit.cfg[self.module_id]['created_droplets'] = []
		for machine in range(1,int(shutit.cfg[self.module_id]['num_machines']) + 1):
			cloud_config = open('context/cloud-config').read().strip()
			cloud_config = string.replace(cloud_config,'DISCOVERY',discovery)
			hostname = "coreos-" + str(machine)
			command = '''curl -s -X POST -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" -d '{"name":"''' + hostname + '''","region":"nyc3","size":"512mb","image":"coreos-stable","ssh_keys":["''' + ssh_key_id + '''"],"backups":false,"ipv6":true,"user_data":"''' + cloud_config + '''","private_networking":true}' "https://api.digitalocean.com/v2/droplets"'''
			shutit.send_file('/tmp/cmd.sh',command)
			shutit.send('sh /tmp/cmd.sh | jq ".droplet.id" -M')
			droplet_id = shutit.get_output().strip()
			shutit.send('rm -f /tmp/cmd.sh')
			public_ip = 'none'
			private_ip = 'none'
			shutit.send('sleep 30 # Wait a decent amount of time; this seems to be required',timeout=180)
			while not re.match('^[0-9.]+$',public_ip):
				shutit.send('sleep 10 # Wait a decent amount of time; this seems to be required',timeout=180)
				shutit.send("""curl -s -X GET -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" "https://api.digitalocean.com/v2/droplets/""" + droplet_id + '''" | jq -M '.droplet.networks.v4[] | select(.type == "public") | .ip_address''' + "'")
				public_ip = shutit.get_output().strip().strip('"')
				shutit.send("""curl -s -X GET -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" "https://api.digitalocean.com/v2/droplets/""" + droplet_id + '''" | jq -M '.droplet.networks.v4[] | select(.type == "private") | .ip_address''' + "'")
				private_ip = shutit.get_output().strip().strip('"')
			shutit.log('droplet_id: ' + droplet_id + ': ip address: ' + public_ip + '\nLog in with: ssh core@' + public_ip, add_final_message=True)
			shutit.cfg[self.module_id]['created_droplets'].append({"droplet_id":droplet_id,"public_ip":public_ip,"private_ip":private_ip,"ssh_key_id":ssh_key_id,"hostname":hostname})
		return True

	def get_config(self, shutit):
		shutit.get_config(self.module_id,'ssh_key_id','')
		shutit.get_config(self.module_id,'num_machines','3')
		shutit.get_config(self.module_id,'ssh_key_file','') # optional, but needed for kub setup
		shutit.get_config(self.module_id,'ssh_key_filename','id_rsa')
		# Whether to delete machines on finalization.
		shutit.get_config(self.module_id,'delete_machines',False,boolean=True)
		return True

	def finalize(self, shutit):
		if shutit.cfg[self.module_id]['delete_machines']:
			cluster_config.set_token(shutit)
			for droplet_data in shutit.cfg[self.module_id]['created_droplets']:
				shutit.send('''curl -X DELETE -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" "https://api.digitalocean.com/v2/droplets/''' + droplet_data['droplet_id'] + '"')
		shutit.send('rm -rf /root/.ssh')
		return True

def module():
	return coreos_do_setup(
		'shutit.tk.coreos_do_setup.coreos_do_setup', 158844783.001,
		description='Digital Ocean CoreOS cluster setup',
		maintainer='ian.miell@gmail.com',
		depends=['shutit.tk.cluster_config.cluster_config']
	)


Asus R409J Drivers Download - New 14-inch laptop, the Asus R409J under Windows 10 with a low-power processor Haswell Core i5 and a hard disk of high capacity. It takes a relatively sober and elegant appearance with its dark hull and light interior. Asus R409J is equipped with the Super Hybrid Engine II with Instant On, which automatically backs up data when the battery capacity drops below 5%, provides a wake-up in just 2 seconds and a standby time up to 2 weeks.
The Asus R409J is a rather compact portable computer for everyday use. It delivers good overall performance thanks to its 4 GB of RAM and Core i5-4210U Haswell processor low consumption. Devoid of dedicated GPU, this computer does not target players. However of course, the Asus R409J graphics solution Intel HD 4400 integrated into i5 allows for viewing photos and videos. With its 16 / 9th format, the screen is suitable also well for this purpose, a classic characteristic like his brilliant treatment that gives punch to colors and reveals sensitive to glare and its definition of 1366x768.
The integrated connection to this Asus R409J is also good, including audio and Ethernet ports, VGA and HDMI video outputs useful if one plans to easily connect it to a PC monitor or TV for example, the wireless modules Wi -fi n and Bluetooth 4.0 connections for communications and remote or 3 USB all compatible with both USB 2.0 and USB 3.0, USB 3.0 transfers made ensuring faster than USB 2.0 if the above branch USB 3.0 devices. we provide download link for Asus R409J Drivers. you can download for windows 8.1 64bit and windows 10 64bit. not compatible with windows 7.


text:
Q: Ecto one to many association on custom fields I currently have a "Rank" model which contains the field (integer) "rank" which is an integer. The "Ship" model on the other hand has a "usable_by" field (integer). What I want to achieve is that when I return a Rank they also contain a list of all Ship models where the "usable_by" field matches the "rank" field in the Rank model. I know this is doable by a query and populating the data manually I guess, but is there anything built into Ecto/Phoenix I can use to make this easier?
I guess the ideal situation I am hoping for is using has_many (I don't really care about the reverse association) with something like :references, or foregin_key, but I can't seem to get it to work. This is the line i am currently using:
Rank model
schema "ranks" do
  field :name, :string
  field :rank, :integer
  timestamps

  has_many :ships, Playground.Ship #Can I use :foregin_key and :references here?
end

A: I guess you've found your answer by now, but if someone else stumbles on this post the answer is this :
has_many :ships, Playground.Ship, foreign_key: :usable_by
This way you can use a custom field name on your associated model.
You should use references in your migration (where you'll actually update the database). Here the Playground.Ship acts like a reference to a certain model, :created_by is the name that will be used in the relationship association.


text:
Fall Try Outs
Blake Orlov
CAP II Certified Owner, Chicago Bounce Volleyball Club, Former Deerfield Girl's Varsity Coach, Northbrook Junior High 8th Grade Coach Chicago Bounce was founded by Blake Orlov at the age of 24, at the time, one of the youngest club directors in the region. Don't let that fool you, Blake now has over 10 years coaching experience. Working with all ages he prides himself on the development of younger players as well as helping the more established players take it to the next level. He played for the 2000 Stevenson Patriots who were the runners-up in the state championship earning All-Area player that year. He earned a scholarship to the University of Arizona as the Girls Volleyball Manager where he studied under Coach Dave Rubio for 3 years. Of course he also competed on the Arizona's Men's Club team. In 2002 Blake earned All-America Honors at the National Championships in Dallas. When Blake returned to the area he returned to his former club and coached at TNT Volleyball for 2 years. His first year he coached the 16-1 team and after the unexpected leave of another coach was asked to coach the 18-1 team. The next year Blake was coaching 3 teams. The 16 and 18 elite teams as well as a Freshman Girls team. After 2 years at TNT it was time for a change and CHICAGO BOUNCE was created. Chicago Bounce was able to field a boys 18 elite team for the 2005/2006 season and the next year grew a little more by adding a 16's boys program to compliment the growing club. By the 2007/2008 season Chicago Bounce had grown from 4 teams to 12 teams and was able to add a successful girls program. Bounce is currently able to accommodate over 12 teams each boys and girls season and has started to build a successful Beach program. Blake has been competing in the Beach EVP tour since 2008 and enjoys introducing the indoor club players to a whole new game! Blake can be reached by email at bounce0025@gmail.com or by phone at 847-791-1020.
Eugene Chung
Varsity member at GBS in first year BVB became an official sport (1990) Club team member at Univ. of Illinois (Champaign-Urbana) (1991) Volunteer Coach of Boys at Glenbrook North (Spring 1997) Head Coach of Boys 16-1s at Adversity from 1997-2003 Assistant Coach of Girls 16-1s at Adversity 2001-2002 Assistant Coach of Boys Volleyball at Deerfield from 1998-2003 Varsity Head Coach of Boys at Deerfield from 2004-present Assistant Coach of Girls Volleyball at Deerfield from 2007-2011 Varsity Head Coach of Girls Volleyball at Deerfield from 2012-2016 Pioneer Press Coach of the Year recognition in 2008 and 2013 for Boys Volleyball.
Joe Bolek
Joe Bolek is Chicago Bounce's Assistant Boy's Director. He is getting ready for his 4th season with Bounce. Joe Bolek played 4 years at Deerfield High School and 2 year's with Chicago Bounce. Joe went to ISU where he played on the Club Team. Joe currently is a competitive indoor and beach player. Joe has coached all ages at his time with Chicago Bounce. The one thing about all of Joe's teams is they get better. The one thing about Joe's players they love him. Joe is a rising star in the Club Coaching world. Last year he led Chicago Bounce 15 Red to a 13th place finish Nationally!
Steve Klosterman
Steve is in his 2nd year with Chicago Bounce Volleyball. About Me I love to coach volleyball, a sport I took to like fish to water at a very early age. I've been fortunate to have played and won on some of the biggest stages of the game, all over the world. I have won four championship MVPs -NCAA, -Puerto Rico's Superior League – and am the only back-to-back 18s JO's MVP. I have been on five USAVB national teams starting at age 14. All of this exposed me to some of the very finest coaches in the world, including the renowned Al Scates of UCLA, winner of 19 NCAA Championships where I was honored to have been on his winning 19th team in 2006, and was a two-time All American and four-year starter; as well as playing under current USA National Team Head Coach John Speraw as a member of the USA Jr. National Team. I also trained for half a year under then Olympic USAV head coach Hugh McCutcheon. I've also played internationally for an eight-year professional career that took me to Paris France, The Czech Republic, Toulouse France, Dubai, Finland, Qatar, Puerto Rico and even Vietnam. All of these experiences have provided a wealth of coaching knowledge that proves invaluable to me in my coaching career today.  I have coached nearly all levels of the sport and both genders. Most recently I was on the coaching staff at Loyola of Chicago Women. I have also coached collegiately at UCLA Men. I have coached club teams for over ten years in elite club programs in both hotbeds of the sport in Southern California and in Chicago. I'm also currently a high school head coach as I continue to be associated with Loyola's volleyball program. I just recently completed coaching in their summer program.  I am a player's coach. I consider myself to be one of the few good technical skills coaches in the game. As a player my position was Opposite, usually considered the most athletic position due to the need to fly through the air to get to back sets. I teach individual and team technique that's often missed by many. I've been labeled a strategic coach who is a VB perfectionist when it comes to understanding the game's nuances.  As a teen my club teams won an unprecedented three JO's Open National Championships in a row, as a 17, and two as an 18. My first professional team was the renowned Naranjito Changos of the Puerto Rican Superior League, where we won it all and I was honored to be named the MVP of the Championships in my rookie year. I find that players at all levels respect and relate to these accomplishments, and vice verse. It's invaluable in my abilities to communicate with them, and with their families.  These experiences have given me unique recruiting and coaching exposure that I love to share with players and watch as they reach their true potentials. https://www.coachklosterman.com/
Grant Kudert
Grant Kudert returns to Chicago Bounce for his 7th season with the club. He is a USA Volleyball CAP I certified coach, and also coaches in the boys' volleyball program at New Trier High School. Grant has deep ties to the Central Suburban League where he was an All Conference setter for Maine East High School, and was the head freshmen boys' coach at East from 2008 to 2011. Grant earned his bachelor's degree from the University of Wisconsin-Madison where he studied math and physics and was a four-year member of the University's Marching Band. At the UW, he continued to play volleyball at the recreational and intramural level. As an adult player, Grant has competed at both the Regional and National level. He has played in USAV National Tournaments in St. Paul, MN and Dallas, TX. Grant's professional life has been varied and adventurous. He has worked at major science museums in Chicago and Seattle, and also spent a year living and teaching in Israel. In 2012, he earned his Master of Education degree from the University of Massachusetts-Boston. Currently, Grant is a member of the science department at Glenbrook South High School.
Nick Riley
Nick is one of the former co-owners and directors of West Suburban Storm VBC that was located in Hinsdale, IL. He has coached boys and girls volleyball teams ranging from 14-18 years old. He was a setter for Adversity Volleyball and Glenbrook North before playing for the University of Illinois men's' club volleyball program. After graduating, Nick coached for Rolling Thunder and helped start and direct West Suburban Storm with Mike Konrad. He currently works as an attorney in Wheeling, IL, and will be the 15 Red coach this season. His playing/coaching experience is as follows: Playing:  Glenbrook North Setter—2006-2009 o Captain—2007, 2009 o State Qualifier 2008 o All Conference 2009 o All Area 2009  Adversity Volleyball Club Setter 2007-2009 o Captain—2008-2009 o Qualified for Open Nationals in 2009 (finished T-25 in nation)  Finished T-13 at SCVA Boys Classic  Illinois Mens' Volleyball Club—2009-2013 o Player Coach/Captain—2011-2013 o NCVF National Champion—2013 o All Tournament Setter—2013 Coaching:  Head JV Coach and Assistant Varsity Coach at Gibson City Melvin Sibley High School—Fall 2011 and Fall 2012  Prime Time Volleyball Club—Head Coach of 14s and 16s volleyball teams—Spring-Summer 2012 and Spring-Summer 2013  University of Illinois—summer camp head coach 2013  Rolling Thunder Volleyball Club—Head Coach Boys' 18s and 16s teams; Boys' Volleyball Director—2013-2014  West Suburban Storm Volleyball Club—Head
Alex Brodell
Alex Brodell is going into his 2nd year of coaching for Bounce. Alex played 4 years at Chicago Bounce, and played at Glenbrook North High School. He coached 14's during the fall season, and led 15 Blue to a bracket championship at Boys Junior Nationals 2017 in Columbus. Alex is an up and coming coach! He has a passion for the game, a passion for passing on his knowledge to his players. He is an excellent communicator and he can't wait for the upcoming season!
Allen Adams
Coach Allen Adams brings 17 years of playing experience to Chicago Bounce VBC. During high school, he was a standout player at Glenbrook South where he received all area honors and was recognized as one of the top 25 players in the state by both the Chicago Tribune and Sun Times. Outside of his high school team, he competed for Adversity Volleyball Club where he won an AAU national championship and earned the opportunity to attend the USA Volleyball (USAV) Development Camp. In 2004, his team finished top 15 at the USA Boys Volleyball National Championships in the Open division. Coach Adams was recruited by multiple Division I–III schools such as Long Beach State, UCSD, NYU, Ohio State, Quincy, and Carthage. After an injury senior year, he went on to play for Western Illinois University where his team finished in the top 25 at the NIRSA Nationals. Coach Adams has experience playing every position, but predominantly plays as an outside hitter or setter. He currently plays in the Adult USAV program at the A/AA level. He is also an EVP beach player and plays in multiple grass volleyball tournaments. Coach Adams brings 9 years of volleyball coaching and officiating experience to CBVC. He started gaining his coaching experience during high school as a counselor at local volleyball camps. He continued learning to coach at the club and varsity levels in college. Coach Adams has also contributed to the USA Volleyball High Performance Program as an evaluator. He has turned down a coaching opportunity in South Africa, and, most recently, an opportunity to play collegiately at Robert Morris University. During his years of coaching club, his teams have been lead to several tournament championships and consistantly finish in the top three. His 2008–2009 Energy Girls' 16 Blue team finished 6th in the USA Volleyball Great Lakes Qualifier. In the 2009–2010 season, he lead his Energy Girls' 13 Blue team to a 3rd place finish in the Great Lakes Qualifier, earning a bid to the 2010 USA Volleyball Junior Olympic Championships in Reno, and ultimately finishing 38th in the country at their respective age level. He has qualified four teams for the USA Volleyball National Championships. Other key finishes include his Girls' 13 Rox team which took 3rd in the WCPL. HIs Girls' 16 Rox team took 9th at the JVA event in Louisville and his Boys' 15 Rox team took 10th at USAV Nationals. In 2012, Coach Adams' Boys 17 Rox team finished 15th in the country at the USAV Boys Open Championships. In addition, several of Coach Allen's players have made the USAV High Performance Pipeline. These are players who are potential prospects to train with the National teams in the future. Outside of the club, he has provided multiple private clinics and lessons for groups and schools throughout the Chicagoland area. He has been an assistant Coach for Northwestern University's summer volleyball camps He has also assisted in summer camps at Glenbrook South High School and the Glenview Park District. Coach Allen is USAV IMPACT certified, has a certification in the Positive Coaches Alliance, and is an active member of the American Volleyball Coaches Association (AVCA). He is both IHSA and USAV certified as an official. This is Allen's second season at Chicago Bounce. He is excited to help our young athletes maximize their potential while growing individually as well.
Joe Han
3 year Varsity player at Niles North High School 1991-1993 2 time CSL All-Conference Chicago Suntimes and Tribune top 30 players Sports Performance 18-1 (1993) placed 11th at Junior Olympics 1st place AAU National Tournament Coached Boys 16 Adversity 2002-2003 Coached Boys 17 SPVB Runbird team Placed 5th at Nationals at Club level 2003-2004 Coached Bounce 13Red team 2019-2020
Chicago Bounce Volleyball is proudly powered by WordPress


text:
Home / StreetSalad / In the Shadow of Forward Motion
View cart "The Spring Cleaning" has been added to your cart.
In the Shadow of Forward Motion
In the Shadow of Forward Motion quantity
David Wojnarowicz's In the Shadow of Forward Motion was originally published in 1989 as a limited-run zine/catalog to accompany an exhibition by the artist at P.P.O.W gallery.
This is not the 2020 Primary Information reprint.
Despite its meager print run of just 50 copies, the publication has garnered a legendary status, and for good reason. In it we find Wojnarowicz's writing and visual art—two mediums for which the artist is renowned—sitting side by side for the first time, playing off each other in equal measure. We glimpse the artist's now-iconic mixed media works, with motifs of ants, locomotives, money, tornadoes, and dinosaurs, juxtaposed with journal entries and other texts that examine historical and global mechanisms of power symbolized through the technology of their times. Wojnarowicz uses the fractured experience of his day-to-day life (including dreams, which he recorded fastidiously) to expose these technologies as weapons of class, cultural, and racial oppression.
A Volcano Is
The Vietnam War and the People