Choose subject
{{ subject.name }}
Please choose a subject
You must choose the subject for which you want to add data
Choose meeting
{{ meeting.type }}
Please choose a meeting
You must choose the meeting for which you want to add data
Choose week
Week {{ week }}
Please choose a week
You must choose the week for which you want to add data
Save
All changes have been saved
{{ subjectControl.value.name }} {{ meetingControl.value.type }}
Week {{ weekControl.value }}


This page shows how to use and configure dropdown menu with Handsontable:
You can limit options available in the dropdown menu using dropdownMenu option as an array of strings.
List of commands below are common for context menu and for dropdown menu.
For greatest configurability, you use dropdownMenu option as a configuration object as described in jQuery contextMenu documentation.
This example shows how to set custom text, how to disable "Remove row" and "Insert row above" for the first row and how to add your own option.


Ask for help with this part of the course by typing in your question below. Other students currently online who have offered to help-chat with others may see your question and help you quickly resolve it.


NBA legend Magic Johnson hands out turkeys to families in Tampa
by WFTS Digital StaffTAMPA, Fla. -- NBA Hall-of-Famer Magic Johnson was in Tampa Thursday to hand out free turkeys to families.
Johnson and former MLB star Gary Sheffield were at the Cyrus Greene Community Center to help families out ahead of the Thanksgiving weekend.
Simply Healthcare hosted the event in an effort to promote healthy foods and eating habits.


{% extends "base.html" %} {% load custom_tags %} {% block content %}
Just enter your email address and password.


Google Earth Enterprise Documentation Home | Fusion tutorial
Configuring Display Rules for Polygon Data
You can use elevation, color, and text labels to distinguish the characteristics of polygon shapes in your data. This lesson guides you through the process of graphically distinguishing the population in each county in California using display rules.
- Define and Build a Vector Resource Using Polygon Data
- Define, Configure, and Build a Vector Project
- Define and Build an Imagery Project
- Define, Build, and Publish a Database for the Polygon Data
- View Your Database in Google Earth EC
Define and Build a Vector Resource Using Polygon Data
This exercise walks you through the process of defining and building a vector resource using US census data for the state of California organized by county.
To define and build a vector resource using polygon data:
- Select Asset Manager from the Tools menu.
The Asset Manager appears.
- Click
on the toolbar.
The Vector Resource Editor appears.
- Set the acquisition date to today’s date in year-month-day format by clicking each section of the date and enter the values.
- Select GNIS/US Census Bureau from the Provider drop-down list.
- Click Add.
The Open Source dialog appears.
- Navigate to the
/opt/google/share/tutorials/fusion/Vector
folder. - Select the
cal_counties_census.shp
file, and click Open.The selected file appears on the Source File(s) list.
- Select File > Save.
The Save dialog appears.
- Navigate to the
/ASSET_ROOT/Resources/Vector
folder you created in Setting Up the Tutorial. - Enter the name CACountyPopulation for the resource, and click Save.
The name of the resource appears on the right when you select the
/ASSET_ROOT/Resources/Vector
folder in the asset navigation tree. - Right-click CACountyPopulation, and select Build from the context menu.
Google Earth Enterprise Fusion builds the resource.
Define, Configure, and Build a Vector Project
This exercise walks you through the process of defining, configuring, and building a vector project using the resource you created in the previous exercise.
To define and build a vector project and configure display rules for polygons:
- Click on the toolbar. The Vector Project Editor appears.
- Click
.
The Open dialog appears.
- Navigate to the
ASSET_ROOT/Resources/Vector
folder. - Select CACountyPopulation, and click Open.
The CACountyPopulation resource appears in the Vector Project Editor.
- Right-click CACountyPopulation, and select Configure Display Rules from the context menu.
The Display Rules dialog appears with the Feature tab in the foreground and the default select all rule highlighted.
- Specify the geometry characteristics of the polygons (in this case, the counties):
- For Draw Features As, select Polygons.
- For Visibility, accept the default range, 4 through 24.
- For Maximum Simplification Error, accept the default setting, 0.5.
- Under Draw Style, set:
- Mode to Outlined and Filled.
- Fill Color to medium green.
Tip: When you set fill color, specify a value of 125 for the alpha channel instead of 255. This makes the fill color semi-transparent instead of opaque.
- Outline Color to black.
- Outline Width to 1.
The result of these settings is that Google Earth EC displays each county as a green polygon with a black outline.
- Under Elevation/Height, set:
- Mode to Relative.
- Check the box next to Extrude.
- Check the box next to User-Defined Height.
- Height Variable to POP2000. (Click the empty text field, select POP2000 from Insert Field the drop-down list, and click OK.)
- Offset to 0.
- Scale to 0.05.
The result of these settings is that Google Earth EC displays each county at an elevation relative to its population. That is, counties with higher population appear taller. Counties with lower population appear shorter. (Refer to the Google Earth Enterprise Fusion Reference Guide for complete details about each of the settings in this dialog.)
- On the right side of the dialog, check the box next to Draw Label.
This allows you to specify the content of a text label for each county.
- For Visibility, set the range to 4 through 24.
- Under Label Properties, select Text from the drop-down list, and then click the empty text field.
The Format Label dialog appears.
- Select COUNTY from the Insert Field drop-down list, and click OK.
- For Highlight, set:
- Color to pale yellow.
- Scale to 1.
The result of these settings is that Google Earth EC displays each county’s name in bright yellow text. Each text label is centered within its county
- For Normal, set:
- Color to bright yellow.
- Scale to 1.
- Click OK.
You return to the Vector Project Editor.
- Select File > Save.
The Save dialog appears.
- Navigate to the
ASSET_ROOT/Projects/Vector
folder. - Enter CACountyPopulation as the name of your project, and click Save.
Note: Although this is the same name as the resource, Google Earth Enterprise Fusion allows it, because they are different asset types and, therefore, have different file name extensions. In addition, they are being stored in different folders.
The new project appears in the Asset Manager when you select ASSET_ROOT/Projects/Vector in the asset navigation tree.
- Right-click CACountyPopulation, and select Build from the context menu.
Google Earth Enterprise Fusion builds the project.
Define and Build an Imagery Project
Although you can build, push, and publish a database that includes a vector project only, you cannot connect directly to your server with Google Earth EC to view that data unless your database also includes an imagery project. If you publish a database that includes a vector project only, you must use the Add Database command on the File menu in Google Earth EC to add the database to the base imagery after logging in to kh.google.com
or some other server that serves a database that includes imagery.
This exercise walks you through the process of defining and building an imagery project using a resource you created in Defining and Building Resources.
Note: If you have already completed this exercise in Configuring Display Rules for Point Data, skip this exercise and move on to Define, Build, Push, and Publish a Database for the Polygon Data.
To define and build an imagery project:
- Click
on the toolbar.
The Imagery Project Editor appears.
- Accept all of the default values in the Legend area. (Refer to the Google Earth Enterprise Fusion Reference Guide for details about these settings.)
- Click
.
The Open dialog appears.
- Navigate to the
ASSET_ROOT/Resources/Imagery
folder. - Select BlueMarble, and click Open.
The BlueMarble resource appears in the Imagery Project Editor.
- Select File > Save.
The Save dialog appears.
- Navigate to the
ASSET_ROOT/Projects/Imagery
folder. - Enter BlueMarble as the name of your project, and click Save.
The new project appears in the Asset Manager when you select ASSET_ROOT/Projects/Imagery in the asset navigation tree.
- Right-click BlueMarble, and select Build from the context menu.
Google Earth Enterprise Fusion builds the project.
Define, Build, and Publish a Database for the Polygon Data
This exercise walks you through the process of defining, building, and publishing a database using the projects you created in the previous exercise.
To define, build, and push a database:
- Click
on the toolbar.
The Database Editor appears with no projects selected.
- Click
next to Vector Project.
The Open dialog appears.
- Navigate to
ASSET_ROOT/Projects/Vector
. - Select the CACountyPopulation project, and click Open.
The CACountyPopulation project appears in the Database Editor next to Vector Project.
- Repeat steps 2 through 4 to add BlueMarble as the imagery project.
You do not need to add a terrain project for this exercise. Both projects appear on the list.
- Select File > Save.
The Save dialog appears.
- Navigate to the
ASSET_ROOT/Databases
folder. - Enter CACountyPopulation for the name of your database, and click Save.
The name of the database appears on the right when you select the
/ASSET_ROOT/Databases
folder in the asset navigation tree. - Right-click CACountyPopulation, and select Build from the context menu.
Google Earth Enterprise Fusion builds the database.
- Right-click CACountyPopulation, and select Push from the context menu.
The Push Database dialog appears.
- Select the server association on the Server Associations drop-down list. The most recent version of the selected database is the default selection on the Version drop-down list.
- Click Push.
Google Earth Enterprise Fusion runs the process of pushing the database to the Google Earth Enterprise Server, and displays a success message when it is done.
To publish a database:
- Access the Google Earth Enterprise Server Admin console in a browser window by going to myserver.mydomainname.com/admin, replacing myserver and mydomainname with your server and domain.
- Sign in with the default credentials:
- Username: geapacheuser
- Password:geeadmin
- Click Databases to display the list of databases pushed to the Server.
- Check the box next to the database you want to publish. The Publish button on the Databases page appears.
- Click Publish. The Publish dialog appears.
- Specify a Publish point, where the database will be accessible from. For example, if you specify CACountyPopulation-v001, it will be accessible from myserver.mydomainname.com/CACountyPopulation-v001.
To learn more about the options available in the Publish dialog, see Create Search Tabs, Snippet profiles, and WMS.
- Click Publish. The Databases page updates to indicate the published status of your database.
View Your Database in Google Earth EC
This exercise walks you through the process of viewing your database in Google Earth EC.
To view your database:
- Launch Google Earth EC. The Select Server dialog appears.
- Enter or select the host name or IP address of your server in the Server field, and specify the Publish point that you selected when you published your map database. For example, if you specify CACountyPopulation-v001, it will be accessible from myserver.mydomainname.com/CACountyPopulation-v001.
- Click Sign In.
Caution: If you have logged in to this server with Google Earth EC previously, log out, clear your cache, and log back in. See clearing your cache.
- Zoom in to the west coast of the US.
Google Earth EC displays all of the counties in California labeled with the names of the counties. The closer you zoom in, the more spread out the counties look and the more county names you can see.
Note: If you cannot see the vector data, make sure the checkbox next to CACountyPopulation in the Layers panel is checked.
- Turn and tilt the Earth so you can see the heights of the counties.
Each county’s height indicates its relative population. Counties with higher populations are taller, and counties with lower populations are shorter.


Parameter File
The parameter file is a list of keyword value pairs, one pair per line. These determine what is simulated and the parameters with which boltzmann is run. We categorize the parameters into three categories, those that define the input files, those that control the simulation, and those that define the output files.


Emulation is the process of accepting characters and converting them to screen operations. The supported operations are embodied in the Ops interface and implemented inside Term.
The most common way to achieve the conversion is through a state machine. Therefore some classes are available for the construction and programming of such state machines.
A transition is characterized by the new state and the action to perform. Transitions are assigned to the state table via State.setAction(char c, State new_state, Actor actor). The first two are obvious. The actor is a singleton subclass of Actor that overrides Actor.action() in order to preform a specific action.
The state machine is programmed by creating new States and assigning transitions for each relevant character.
This scheme lends itself to object oriented inheritance by having subclass Interp's re-use their superclasses' state tables and actions. They can also modify the state tables they've inherited.
Because of this you need not start each new Interp from scratch. For example InterpDumb has a bases state 'st_base' and defines some common actions like ...
act_err to indicate a bad state transition act_regular a regular character act_nop no-op used for intermediate states act_cr carriage return act_lf line feed ...
'st_base' is enhanced further and is joined by other states in InterpANSI.
This decision was made with the cognizance that inner class proliferation is probably not the best thing.
The termcap specification for "ansi" is very simplistic and hardly covers the full gamut of operations. Not only that but vi seems to not work very well with TERM=ansi, particulary when it deals with long lines.
However, there is no name in the termcap database that represents the full 6429 spec, so for those we're stuck with using historical implementation names like "vt220", "xterm" and "dtterm".
I've chosen "dtterm" as it is the newest, I believe matches the ANSI spec best and some of it's extra features, like glyph gutters, are already implemented in Term.


This is the default page for the Moongate server. Use mix moongate.load from the moongate directory to select a world.
mix moongate.load
moongate


Write a program to recognize line patterns in a given set of points.
Computer vision involves analyzing patterns in visual images and reconstructing the real-world objects that produced them. The process is often broken up into two phases: feature detection and pattern recognition. Feature detection involves selecting important features of the image; pattern recognition involves discovering patterns in the features. We will investigate a particularly clean pattern recognition problem involving points and line segments. This kind of pattern recognition arises in many other applications such as statistical data analysis.
The problem. Given a set of n distinct points in the plane, find every (maximal) line segment that connects a subset of 4 or more of the points.
Point data type. Create an immutable data type Point that represents a point in the plane by implementing the following API:
To get started, use the data type Point.java, which implements the constructor and the draw(), drawTo(), and toString() methods. Your job is to add the following components.public class Point implements Comparable<Point> { public Point(int x, int y) // constructs the point (x, y) public void draw() // draws this point public void drawTo(Point that) // draws the line segment from this point to that point public String toString() // string representation public int compareTo(Point that) // compare two points by y-coordinates, breaking ties by x-coordinates public double slopeTo(Point that) // the slope between this point and that point public Comparator<Point> slopeOrder() // compare two points by slopes they make with this point }
Corner cases. To avoid potential complications with integer overflow or floating-point precision, you may assume that the constructor arguments x and y are each between 0 and 32,767.
Line segment data type. To represent line segments in the plane, use the data type LineSegment.java, which has the following API:
public class LineSegment { public LineSegment(Point p, Point q) // constructs the line segment between points p and q public void draw() // draws this line segment public String toString() // string representation }
Brute force. Write a program BruteCollinearPoints.java that examines 4 points at a time and checks whether they all lie on the same line segment, returning all such line segments. To check whether the 4 points p, q, r, and s are collinear, check whether the three slopes between p and q, between p and r, and between p and s are all equal.
public class BruteCollinearPoints { public BruteCollinearPoints(Point[] points) // finds all line segments containing 4 points public int numberOfSegments() // the number of line segments public LineSegment[] segments() // the line segments }
The method segments() should include each line segment containing 4 points exactly once. If 4 points appear on a line segment in the order p→q→r→s, then you should include either the line segment p→s or s→p (but not both) and you should not include subsegments such as p→r or q→r. For simplicity, we will not supply any input to BruteCollinearPoints that has 5 or more collinear points.
Corner cases. Throw a java.lang.NullPointerException either the argument to the constructor is null or if any point in the array is null. Throw a java.lang.IllegalArgumentException if the argument to the constructor contains a repeated point.
Performance requirement. The order of growth of the running time of your program should be n4 in the worst case and it should use space proportional to n plus the number of line segments returned.
A faster, sorting-based solution. Remarkably, it is possible to solve the problem much faster than the brute-force solution described above. Given a point p, the following method determines whether p participates in a set of 4 or more collinear points.
Write a program FastCollinearPoints.java that implements this algorithm.
public class FastCollinearPoints { public FastCollinearPoints(Point[] points) // finds all line segments containing 4 or more points public int numberOfSegments() // the number of line segments public LineSegment[] segments() // the line segments }
The method segments() should include each maximal line segment containing 4 (or more) points exactly once. For example, if 5 points appear on a line segment in the order p→q→r→s→t, then do not include the subsegments p→s or q→t.
Corner cases. Throw a java.lang.NullPointerException either the argument to the constructor is null or if any point in the array is null. Throw a java.lang.IllegalArgumentException if the argument to the constructor contains a repeated point.
Performance requirement. The order of growth of the running time of your program should be n2 log n in the worst case and it should use space proportional to n plus the number of line segments returned. FastCollinearPoints should work properly even if the input has 5 or more collinear points.
Sample client. This client program takes the name of an input file as a command-line argument; read the input file (in the format specified below); prints to standard output the line segments that your program discovers, one per line; and draws to standard draw the line segments.
public static void main(String[] args) { // read the n points from a file In in = new In(args[0]); int n = in.readInt(); Point[] points = new Point[n]; for (int i = 0; i < n; i++) { int x = in.readInt(); int y = in.readInt(); points[i] = new Point(x, y); } // draw the points StdDraw.enableDoubleBuffering(); StdDraw.setXscale(0, 32768); StdDraw.setYscale(0, 32768); for (Point p : points) { p.draw(); } StdDraw.show(); // print and draw the line segments BruteCollinearPoints collinear = new BruteCollinearPoints(points); for (LineSegment segment : collinear.segments()) { StdOut.println(segment); segment.draw(); } StdDraw.show(); }
Input format. We supply several sample input files (suitable for use with the test client above) in the following format: An integer n, followed by n pairs of integers (x, y), each between 0 and 32,767. Below are two examples.
% more input6.txt % more input8.txt 6 8 19000 10000 10000 0 18000 10000 0 10000 32000 10000 3000 7000 21000 10000 7000 3000 1234 5678 20000 21000 14000 10000 3000 4000 14000 15000 6000 7000
% java BruteCollinearPoints input8.txt (10000, 0) -> (0, 10000) (3000, 4000) -> (20000, 21000) % java FastCollinearPoints input8.txt (3000, 4000) -> (20000, 21000) (0, 10000) -> (10000, 0) % java FastCollinearPoints input6.txt (14000, 10000) -> (32000, 10000)
Deliverables. Submit only the files BruteCollinearPoints.java, FastCollinearPoints.java, and Point.java. We will supply LineSegment.java and algs4.jar. You may not call any library functions other those in java.lang, java.util, and algs4.jar. In particular, you may call Arrays.sort().


working remote via hdhomerun
Heh, I had an inspiration this morning: what if I can get the IR receiver on my HDHomeRun to act as the controller for my MythTV frontend, and bypass the fact that the USB ports on the mobo are dead?
The instructions are here. But I didn't know what remote to use. Then I saw the Apple Remote that came with my macbook sitting on the shelf. I tried a couple of LazyNet configuration files but they didn't work - even the one that is apparently the identical model.
So fire up irrecord a couple of times, read the instructions the last time, and bang, it starts to narrow down which remote I'm using. Cool!
The config file I generated seems more verbose than the ones I saw provided by LIRC, but there's probably a reduction phase I'm not going to bother with.
Course, now that I know how easy it is, I should be able to use the programmable remote that has more than 6 buttons.
Now I just need to link LIRC up with MythTV via the lircrc file...
About this entry
You"re currently reading "working remote via hdhomerun," an entry on a crick in the net
- Published:
- 07.14.07 / 8am
- Category:
- MythTV


Original Photo Photo with Boxes Box Count: {{lines}} Cell Images before resizing: {% for cell in cells %} {{ cell }} {% endfor %}


{% extends "pages/base_page.html" %} {% block page_title %}Our Revolution - Server Error{% endblock %} {% block content %}
Sorry, something went wrong. Please try again, or come back later and we will fix the issue as soon as we can.


Hours in a year. How many hours are in a year?
Minutes in a decade. How many minutes are in a decade?
Cristina Tarantino: 32 yesterday! How many milliseconds old is she hahaha? Calculate @Cristina Tarantino's age in milliseconds.
How many days does it take for a 32-bit system to timeout, if it has a bug with integer overflow?
How many days does it take for a 32-bit system to timeout, if it has a bug with integer overflow?
Your age in seconds. How many seconds old are you? Calculate your age accurately based on your birthday (maybe use time of day e.g. 8:23am if you know it, use 12:00 noon midday) - you will need JavaScript DateTime functionality.
Music A 440 Hz 1 octave is double the frequency tempered piano A' 880 Hz Calculate and console.log the frequency each of the 12 notes between A and A' Hint: the notes are NOT in a linear scale, but in a geometric scale
Planets Calculate and console log how many 'minutes' the Moon travels in a day. Hint: first calculate how many degrees the Moons travels in the sky when the Earth returns to the same position during its daily rotation.
Full name greeting. Write a program that asks for a person’s first name, then middle, and then last. Finally, it should greet the person using their full name.
Bigger, better favorite number. Write a program that asks for a person’s favorite number. Have your program add 1 to the number, and then suggest the result as a bigger and better favorite number. (Do be tactful about it, though.)
Angry boss. Write an angry boss program that rudely asks what you want.  For example, if you type in I want a raise, it should yell back like this: WHADDAYA MEAN "I WANT A RAISE"?!? YOU'RE FIRED!!
Table of contents. Here’s something for you to do in order to play around more with center, ljust, and rjust: write a program that will display a table of contents so that it looks like this: Table of Contents Chapter 1: Getting Started page 1 Chapter 2: Numbers page 9 Chapter 3: Letters page 13 Optional: in JS we may prefer to 'print' these to the HTML file itself rather than the console.
More Arithmetic - Optional
pow(5, 10)
365%7
abs(-7)
Random Numbers - Optional
Research how to generate a random number with JavaScript. (Math.random() will output a random number from 0 up to but not including 1) Generate a random number
between 1 and 10
between 1 and 100
between 1930 and 1950
Then try to generate your random Civilization III world by generating a land 'X' tile or a water 'o' tile randomly: oooXXXoo oooXoXoo XXXooXoo
“99 Bottles of Beer on the Wall.” Write a program that prints out the lyrics to that beloved classic, “99 Bottles of Beer on the Wall.”
Deaf grandma. Whatever you say to Grandma (whatever you type in), she should respond with this: HUH?! SPEAK UP, GIRL! unless you shout it (type in all capitals). If you shout, she can hear you (or at least she thinks so) and yells back: NO, NOT SINCE 1938! To make your program really believable, have Grandma shout a different year each time, maybe any year at random between 1930 and 1950. (This part is optional and would be much easier if you read the section on JavaScript’s random number generator under the Math Object.)  Deaf grandma extended. What if Grandma doesn’t want you to leave? When you shout BYE, she could pretend not to hear you. Change your previous program so that you have to shout BYE three times in a row. Make sure to test your program: if you shout BYE three times but not in a row, you should still be talking to Grandma. Leap years. Write a program that asks for a starting year and an ending year and then puts all the leap years between them (and including them, if they are also leap years). Leap years are years divisible by 4 (like 1984 and 2004). However, years divisible by 100 are not leap years (such as 1800 and 1900) unless they are also divisible by 400 (such as 1600 and 2000, which were in fact leap years). What a mess!
Building and sorting an array. Write the program that asks us to type as many words as we want (one word per line, continuing until we just press Enter on an empty line) and then repeats the words back to us in alphabetical order. Make sure to test your program thoroughly; for example, does hitting Enter on an empty line always exit your program? Even on the first line? And the second?
Write a function that prints out "moo" n times.
Old-school Roman numerals. In the early days of Roman numerals, the Romans didn’t bother with any of this new-fangled subtraction “IX” nonsense. No Mylady, it was straight addition, biggest to littlest—so 9 was written “VIIII,” and so on. Write a method that when passed an integer between 1 and 3000 (or so) returns a string containing the proper old-school Roman numeral. In other words, old_roman_numeral 4 should return 'IIII'. Make sure to test your method on a bunch of different numbers. Hint: Use the integer division and modulus methods. For reference, these are the values of the letters used: I = 1 V = 5 X = 10 L = 50 C = 100 D = 500 M = 1000
“Modern” Roman numerals. Eventually, someone thought it would be terribly clever if putting a smaller number before a larger one meant you had to subtract the smaller one. As a result of this development, you must now suffer. Rewrite your previous method to return the new-style Roman numerals so when someone calls roman_numeral 4, it should return 'IV', 90 should be 'XC' etc.


Hello,
We are Stav Lutzky and Shimon Hanouna, students at Ben-Gurion University of the Negev.
We are 3rd year student in Information Systems Engineering and we developed this movies e-commerce website as a proof of concept.
Node.js was use to create the server side part and Angular was used to create the client side part, Mircrosoft Azure was used to host our database.
This are the main Difficulties we faced in the maknig of this website:
1). Desiging a website can be a pain in the neck, we looked for a way to reduce the time consumed by desgining from scratch. A quick search came up with Tweeter's
Bootstrap, after learning the basics we manged to implement it in our website, design was easy and fast.
2). Some client side requirements were fully understood only when we were starting to implement them, thus requiring an update in the server side and API.
3). As we learned to use Angular, we came across more complex feature we wanted to check out. It took alot of time and dedication but we learned how to create our
own filters, services, directories and opensource modules.


Exchanges:
Binance
Poloniex
Bittrex
Currency pair:
Tools:
Side Toolbar
Enable Publishing
Details
Hotlist
calendar
Allow symbol change
With date ranges
Indicators:
Bolinger Bands
RSI
VWAMP
MACD
Show Chart


We’re a national network of community organizers and technologists who are putting technology to work for the benefit of our local communities.
Our Brigades meet regularly to build, share and learn about tools to create, support, and serve the public good.
We're thousands of designers, academic researchers, data journalists, activists, policy wonks, web developers and curious citizens who want to make our city more just, equitable, transparent and delightful to live in through data, design and technology.
Come join us!
Code for America has a Code of Conduct that applies to our activities, events, and digital forums. We do not tolerate discrimiation or harrassment of any kind.
Check out our full Code of Conduct


THE NAVIGATOR A Medieval Odyssey A film review by Alex Patison Copyright 1989 Alex Patison
This movie has been playing for a few months but I have only just caught up with it. It is a New Zealand/Australian co-production but it is but no means typical of the films that have been produced in this part of the world over the last decade. The feel of the movie is more European, even though half of the film is seen to take place in New Zealand. As a winner of 6 Australian Film Awards it is bound to get a showing outside of NZ/Australia.
Without giving away more than the flyer advertising the movie, it is set in England 1348, the year of the Black Death. The Navigator is a boy who has visions - dreams. He dreams of tunnelling through to the other side of the Earth to a Great Cathedral, to save his village from the Black Death. The movie follows this voyage and when they emerge at the other side of the Earth it is New Zealand. And it is 1988. (Yes, another "time" movie.)
No, the movie is not medieval meets the 20th Century. Far from it. It deals with the people and their determination to achieve their goal - the goal set by the young boy. The fact that they are in New Zealand had nothing to do with it. One of the skillful parts of the movie is the way in which the modern day cities are presented with the same medieval feel as the village "back home." 1988 has its own terrors (cars/highways), its own "Black Death," and all things familiar to the religion back home. The camera angles used in the modern towns do not give any detail - they just add effect. And some of the camera effects are good - the desolate, snow-covered landscape is all the more desolate for the use of black and white. Top marks for the cinematography.
I came out of the theatre feeling that I had shared in an adventure, not just watched one. And the music, by Davood Tabrizi, with a feel similar to THE MISSION, added all the more.
Highly recommended with 8.5/10.
Alex Patison<EMAIL_ADDRESS>pyramid!pta!alex
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


simple, yet sophisticated lady
INTERESTS: Anything that challenges my mind, fun and authentic. Road trips, camping, family gatherings and of course good food, I cook too. I also enjoy trying new stuff..., routine ain't my cup of tea.
FUN FACT: I am humorous. Ironically, I wear a stern face. Sophisticated..., right?
Programming is life! The interest in programming developed from the curiosity of handling computers and the desire to expound on how things work.
Combined with design I have found my niche in technology. I am currently furthering my knowledge in coding languages at Moringa School. Happy coding it is.


Hi! I'm void,a web developer and JavaScript coder.
If you'd like to talk with me, my discord server can be found here
Find out some private stuff about me here.


Human kindness keeps Saigon milk bank overflowing - VnExpress International
by VnExpressOn average, she saves a liter of milk a day. Once she has eight liters, she tells Tu Du Hospital to send someone to pick it up.
It has added up to 172 liters in the last six months, and scores of preemies and orphaned babies have benefited.
"It is lucky I produce a lot of milk, and after nursing my baby I hand over the rest to the milk bank," she says. "I don’t have any secrets for producing lots of breast milk".
Two months after she gave birth to her child Quyen voluntarily contacted the milk bank and offered to donate.
Nguyen Huu Tien, 39, her husband said he has always supported her milk donation to help preemies and children whose mothers have difficulty producing milk. He also gives a hand with cleaning the breast pumps and storage bottles. The couple have also donated a mobile breast milk container to Tu Du Hospital.
She has been the biggest donor followed by Nguyen Thanh Tam, who has donated 142 liters. Tam was delivering her second child on March 16 when she was informed that the hospital would set up the milk bank the next month. She immediately registered as a donor.
Dr. Nguyen Thi Tu Anh, chief of the neonatal department at Tu Du Hospital, says the milk bank has received donations from 135 mothers not only at the hospital but also outside. So far 2,768 infants have been fed the donated milk.


public interface MimeTypeService
MimeTypeService
defines the service applications can call to
resolve file names to MIME types and derive default file name extensions from
MIME types.
This interface is not intended to be implemented by bundles. It is implemented by this bundle and may be used by client bundles.
| Modifier and Type | Method and Description |
|---|---|
String |
getExtension(String mimeType)
Returns the primary name extension to which the given
mimeType maps. |
String |
getMimeType(String name)
Returns the MIME type of the extension of the given
name . |
void |
registerMimeType(InputStream mimeTabStream)
Register MIME types stored in the given input stream formatted as a
regular MIME type file format: One entry per line.
|
void |
registerMimeType(String mimeType,
String... extensions)
Dynamically register a new mime type with one or more file name
extensions.
|
String getMimeType(String name)
name
.
The extension is the part of the name after the last dot. If the name
does not contain a dot, the name as a whole is assumed to be the
extension.name
- The name for which the MIME type is to be returned.name
is
null
, null
is returned.getExtension(String)
String getExtension(String mimeType)
mimeType
maps. The returned extension must map to the given
mimeType
when fed to the getMimeType(String)
method. In other words, the expression
mimeType.equals(getMimeType(getExtension(mimeType)))
must
always be true
for any non-null
MIME type.
A MIME type may be mapped to multiple extensions (e.g.
text/plain
to txt
, log
, ...). This
method is expected to returned one of those extensions. It is up to the
implementation to select an appropriate extension if multiple mappings
exist for a single MIME type.
mimeType
- The MIME type whose primary extension is requested.null
if no such mapping exists.getMimeType(String)
void registerMimeType(String mimeType, String... extensions)
This registration is dynamic and not persisted.
mimeType
- The MIME type to registerextensions
- One or more file name extensions (without leading dot)
to register for the MIME type.void registerMimeType(InputStream mimeTabStream) throws IOException
#
) are ignored.
The stream is assumed to contain string data encoded with "ISO-8859-1".
This method reads the stream until an IOException
occurs or
until it has been fully read. The stream is not closed, though, by this
method.
mimeTabStream
- The stream to read the MIME type mappings fromIOException
- If an error occurs reading from the streamCopyright © 2017 The Apache Software Foundation. All rights reserved.


Company profile - Canadian Company Capabilities
Third-Party Information Liability Disclaimer
Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.
INSPIRED SOLUTIONS INTERNATIONAL
Legal Name:
INSPIRED SOLUTIONS INTERNATIONAL
Operating Name:
MVSCS
Mailing Address:
P.O. Box 66SELKIRK, Manitoba
R1A 2B1
Tel.:<PHONE_NUMBER>
Tel.:<PHONE_NUMBER>
Fax:
Company Profile
MVSCS provides products and services for;
Canadian motor vehicle compliance, importation and training,
www.mvscs.com
ISI's other divisions provide;
motor coach accessiblity and improved ergonomics
www.coach-loader.com
www.driverslilhelper.com
accessibility and adaptive technology consulting, training and development.
Full profile
Full profile
Contact information
Company description
Product / Service / Licensing
Coach-Loader is
Unique Light Portable designed to;
Simplify Loading and unloading wheelchairs, scooters and other heavy items into coach baggage bays.
Coach-Loader is
Intended to reduce the risk of WMSD (Work-related musculoskeletal disorders) caused by
handling awkward and heavy items encountered by coach drivers.
Coach-Loader can
Aid in compliance with OSH Act SEC. 5. (a)(1) Duties:
which, simply put, states:
an employer shall furnish employment free from hazards that could cause physical harm;
Coach-Loader can
Enhance your compliance with A.D.A. now and in 2012!
Coach-Loader proves its value every time it prevents a driver injury!
Add the Bay-Loader & the Drivers Li'l Helper to make a complete handling system!
The $23,800 (average) cost of a drivers lower back injury could pay to outfit 38 coaches.
The Bay-Loader eases the process of loading wheelchairs, scooters, and heavy bags into coach baggage bays;
The Bay-Loader can Aid in compliance with OSH Act SEC. 5. (a)(1) "Duties:" which, simply put, states:
an employer shall furnish employment free from hazards that could cause physical harm;
This simple to use tray can reduce the risk of WMSD (Work-related musculoskeletal disorders) and help you to avoid workers compensation and damaged mobility-aid claims;
Bay-Loader is simple to install and operate;
The aluminum construction allows for minimal impact to coach weight, as it adds less than 150 lbs per bay;
It is able to move 2,000 lbs of cargo in and out of the bay with ease, speeding loading and unloading;
Applications for one, two or three bays in current OTRBs!
Add the Coach-Loader & the Drivers Li'l Helper to make a complete handling system!
The fact is, largely preventable musculoskeletal injuries account for 33% of workplace injuries;
In 2007 alone, U.S. workers suffered 335,390 musculoskeletal injuries requiring an average of nine days away from work;
National Safety Council statistics for 2008 list the following medical costs for common musculoskeletal injuries:
$15,313 - Upper back
$23,820 - Lower back
$12,726 - Hand, finger, wrist
$21,577 - Arms, wrist, shoulder
These numbers do not include the cost of missed work days, insurance, workers compensation, or disability;
Look at it this way:
The $23,820 cost of a drivers lower back injury could pay to outfit 2 Bays in Four of Your Coaches!
designed to simplify baggage handling in the motor coach and any other freight, courier or baggage handling industry.
It is the answer to reaching, moving, loading and unloading coach baggage and other heavy items...
At only 24" long it will store easily in a drivers travel bag or storage compartment and when needed it will
telescope to over 67"+!
Reduce the risk of work related lifting injuries received when drivers need to climb in
Add the Coach-Loader & the Bay-Loader to make a complete handling system!
The fact is, largely preventable musculoskeletal injuries account for 33% of workplace injuries.
In 2007 alone, U.S. workers suffered 335,390 musculoskeletal injuries requiring an average of nine days away from work.
National Safety Council statistics for 2008 list the following medical costs for common musculoskeletal injuries:
$15,313 - Upper back
$23,820 - Lower back
$12,726 - Hand, finger, wrist
$21,577 - Arms, wrist, shoulder
These numbers do not include the cost of missed work days, insurance, workers compensation, or disability.
Look at it this way:
Drivers Li'l Helper will prove its value every time it prevents a driver injury!
Those who take proactive measures today will benefit from decreased injury claims, improved productivity
and increased worker morale.
CMVSS (Canadian Motor Vehicle Safety Standards) and FMVSS (U.S. Federal Motor Vehicle Safety Standards) compliance issues by taking on the role as your Canadian and U.S. Compliance consultant;
* We are a liability-conscious business supported by 25 years of entrepreneurial, sales, administrative and regulatory compliance expertise in the auto industry, including 10 yrs as Director of Regulatory Compliance at Motor Coach Industries, N.A.s largest manufacturer of intercity motor coaches;
* ISI can help develop and maintain VIN tracking for recalls and notices of defect;
* We have a long standing positive history and relationship with both Canadian and U.S. Regulatory Enforcement Agencies;
* ISI can provide and manage customized information packages and training webinars for you!
* For qualifying companies, ISI can also take on the responsibility and act as your Canadian Importer of Record.
Third-Party Information Liability Disclaimer
Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.
Contacts
Contact information
Description
Company description
Products, services and licensing
Product / Service / Licensing
Coach-Loader is
Unique Light Portable designed to;
Simplify Loading and unloading wheelchairs, scooters and other heavy items into coach baggage bays.
Coach-Loader is
Intended to reduce the risk of WMSD (Work-related musculoskeletal disorders) caused by
handling awkward and heavy items encountered by coach drivers.
Coach-Loader can
Aid in compliance with OSH Act SEC. 5. (a)(1) Duties:
which, simply put, states:
an employer shall furnish employment free from hazards that could cause physical harm;
Coach-Loader can
Enhance your compliance with A.D.A. now and in 2012!
Coach-Loader proves its value every time it prevents a driver injury!
Add the Bay-Loader & the Drivers Li'l Helper to make a complete handling system!
The $23,800 (average) cost of a drivers lower back injury could pay to outfit 38 coaches.
The Bay-Loader eases the process of loading wheelchairs, scooters, and heavy bags into coach baggage bays;
The Bay-Loader can Aid in compliance with OSH Act SEC. 5. (a)(1) "Duties:" which, simply put, states:
an employer shall furnish employment free from hazards that could cause physical harm;
This simple to use tray can reduce the risk of WMSD (Work-related musculoskeletal disorders) and help you to avoid workers compensation and damaged mobility-aid claims;
Bay-Loader is simple to install and operate;
The aluminum construction allows for minimal impact to coach weight, as it adds less than 150 lbs per bay;
It is able to move 2,000 lbs of cargo in and out of the bay with ease, speeding loading and unloading;
Applications for one, two or three bays in current OTRBs!
Add the Coach-Loader & the Drivers Li'l Helper to make a complete handling system!
The fact is, largely preventable musculoskeletal injuries account for 33% of workplace injuries;
In 2007 alone, U.S. workers suffered 335,390 musculoskeletal injuries requiring an average of nine days away from work;
National Safety Council statistics for 2008 list the following medical costs for common musculoskeletal injuries:
$15,313 - Upper back
$23,820 - Lower back
$12,726 - Hand, finger, wrist
$21,577 - Arms, wrist, shoulder
These numbers do not include the cost of missed work days, insurance, workers compensation, or disability;
Look at it this way:
The $23,820 cost of a drivers lower back injury could pay to outfit 2 Bays in Four of Your Coaches!
designed to simplify baggage handling in the motor coach and any other freight, courier or baggage handling industry.
It is the answer to reaching, moving, loading and unloading coach baggage and other heavy items...
At only 24" long it will store easily in a drivers travel bag or storage compartment and when needed it will
telescope to over 67"+!
Reduce the risk of work related lifting injuries received when drivers need to climb in
Add the Coach-Loader & the Bay-Loader to make a complete handling system!
The fact is, largely preventable musculoskeletal injuries account for 33% of workplace injuries.
In 2007 alone, U.S. workers suffered 335,390 musculoskeletal injuries requiring an average of nine days away from work.
National Safety Council statistics for 2008 list the following medical costs for common musculoskeletal injuries:
$15,313 - Upper back
$23,820 - Lower back
$12,726 - Hand, finger, wrist
$21,577 - Arms, wrist, shoulder
These numbers do not include the cost of missed work days, insurance, workers compensation, or disability.
Look at it this way:
Drivers Li'l Helper will prove its value every time it prevents a driver injury!
Those who take proactive measures today will benefit from decreased injury claims, improved productivity
and increased worker morale.
CMVSS (Canadian Motor Vehicle Safety Standards) and FMVSS (U.S. Federal Motor Vehicle Safety Standards) compliance issues by taking on the role as your Canadian and U.S. Compliance consultant;
* We are a liability-conscious business supported by 25 years of entrepreneurial, sales, administrative and regulatory compliance expertise in the auto industry, including 10 yrs as Director of Regulatory Compliance at Motor Coach Industries, N.A.s largest manufacturer of intercity motor coaches;
* ISI can help develop and maintain VIN tracking for recalls and notices of defect;
* We have a long standing positive history and relationship with both Canadian and U.S. Regulatory Enforcement Agencies;
* ISI can provide and manage customized information packages and training webinars for you!
* For qualifying companies, ISI can also take on the responsibility and act as your Canadian Importer of Record.


{% extends 'base.html' %} {% block title %} home {% endblock title %} {% block homeactive %} active {% endblock homeactive %} {% block body %}
Here you can find some cool projects.
This site was made in Lockdown to get rid from boredom , However while constructing it, i thought to add some cool projects into it and this became my portfolio site.
{% comment %} go to blog {% endcomment %}This is a wider card with supporting text below as a natural lead-in to additional content.
Continue readingthis is paragraph


An efficient solution is to use Euclidean algorithm which is the main algorithm used for this purpose. The idea is, GCD of two numbers doesn’t change if smaller number is subtracted from a bigger number. The same is the case with modulo opertion. The gcd algorithm with modulo operation is faster
#include <stdio.h>
// Recursive function to return gcd of a and b
int gcd_subtraction(int a, int b)
{
// Everything divides 0
if (a == 0 || b == 0)
return 0;
// base case
if (a == b)
return a;
// a is greater
if (a > b)
return gcd(a-b, b);
return gcd(a, b-a);
}
int gcd_modulo(int a, int b){
if (a == 0){
return b;
}
else if (b == 0){
return a;
}
else{
if (a > b){
return gcd(a % b, b);
}
else{
return gcd(b % a, a);
}
}
}
// Driver program to test above function
int main()
{
int a = 98, b = 56;
printf("GCD of %d and %d is %d ", a, b, gcd_modulo(a, b));
return 0;
}
Output :
GCD of 98 and 56 is 14
The GCD of three or more numbers equals the product of the prime factors common to all the numbers, but it can also be calculated by repeatedly taking the GCDs of pairs of numbers.
gcd(a, b, c) = gcd(a, gcd(b, c)) = gcd(gcd(a, b), c) = gcd(gcd(a, c), b)
For an array of elements, we do following.
result = arr[0] For i = 1 to n-1 result = GCD(result, arr[i]


DocumentJS
DocumentJS makes it easy to produce beautiful and useful documentation for your JavaScript project.
DocumentJS(folder,[options])
Documents everything in a folder path.
DocumentJS("myproject",{});
will generate "myproject/docs.html" and resources in "myproject/docs/".
Parameters
-
folder
{String}
The folder location to search for files ending with
.js
. -
options
{Object}
OptionalOptions that configure the behavior of DocumentJS.
DocumentJS(files,[options])
Documents a set of code organized in files.
Parameters
-
files
{Array<Object>}
The files to document. Each file given should include these options:
{String}
src The path to the file that contains some code.{String}
text The code from the file named in src.
[{src: "path/to/file.js", text: "var a= 1;"}, { ... }]
-
options
{Object}
OptionalOptions that configure the behavior of DocumentJS. These are the same as the options for The other signature.
Features
DocumentJS provides powerful and easy to extend documentation functionality.
Organizing your documentation
Let's use an hypothetical little CRM system as an example of how easy it is to organize your documentation with DocumentJS.
First let's create our CRM documentation home page by creating a folder name crm. Paste this code into a file named crm.js inside crm folder.
Run the documentjs script to generate the docs:
This is what you should see when you open crm\docs.html:
There are a few things to notice:
Next we document the two classes that make our little crm system. Paste each snippet of code into two files with names customer.js and order.js:
customer.js
order.js
After running the documentjs script once again you should be able to see this:
We want to be able to both look for our customer's orders and dispatch them so let's add a findById method to our Order class and a dispatch method to our Order's prototype:
order.js
Go ahead and produce the docs by running the documentjs script. You should see your Order methods organized by static and protoype categories.
There's one last thing we need to cover - customizing the document viewer template. The default viewer template file name is summary.ejs and it's located in documentjs/jmvcdoc/summary.ejs. You can use a customized template by copying summary.ejs into the crm folder and changing it according to your needs. Let's try changing the navigation menu core item to crm:
Remember the @tag directive? We can now change it in our examples from core to crm. You will notice that our crm page will show up every time you click the CRM menu item or type crm in the documentation viewer search box.
If you need for DocumentJS not to document a particular script you can do that by adding the @document-ignore directive to the top of the file.
As you see DocumentJS makes it super easy and fun to organize your documentation!
How DocumentJS works
DocumentJS architecture is organized around the concepts of [DocumentJS.types types] and tags. Types are meant to represent every JavaScript construct you might want to comment like classes, functions and attributes. Tags add aditional information to the comments of the type being processed.
DocumentJS works by loading a set of JavaScript files, then by spliting each file into type/comments pairs and finally parsing each type's comments tag directives to produce a set of html files (one per type) that are used by the document viewer (jmvcdoc) to render the documentation.
DocumentJS was written thinking of extensibility, so it's very easy to add custom type/tag directives to handle your specific documentation needs.
DocumentJS currently requires Steal to be included on the pages you are documenting.
Type directives
Tag directives
Inspiration
DocumentJS was inspired by the jQuery API Browser by Remy Sharp


BLM
11 December 2020 | 12 min read
#BlackLivesMatter was founded in 2013 in response to the acquittal of Trayvon Martin’s murderer. Black Lives Matter Global Network Foundation, Inc. is a global organization in the US, UK, and Canada, whose mission is to eradicate white supremacy and build local power to intervene in violence inflicted on Black communities by the state and vigilantes. By combating and countering acts of violence, creating space for Black imagination and innovation, and centering Black joy, we are winning immediate improvements in our lives. We are expansive. We are a collective of liberators who believe in an inclusive and spacious movement. We also believe that in order to win and bring as many people with us along the way, we must move beyond the narrow nationalism that is all too prevalent in Black communities. We must ensure we are building a movement that brings all of us to the front. We affirm the lives of Black queer and trans folks, disabled folks, undocumented folks, folks with records, women, and all Black lives along the gender spectrum. Our network centers those who have been marginalized within Black liberation movements. We are working for a world where Black lives are no longer systematically targeted for demise.
We affirm our humanity, our contributions to this society, and our resilience in the face of deadly oppression.


| x | y | width | height | {{asHtmlElementAction(action).boundingBox.x}} | {{asHtmlElementAction(action).boundingBox.y}} | {{asHtmlElementAction(action).boundingBox.width}} | {{asHtmlElementAction(action).boundingBox.height}} |
|---|
| Method | Type | Value |
|---|---|---|
| {{locator.method}} | {{getLocatorType(locator)}} | {{locator.value}} |
Do you want to delete this {{getActionName(action)}} Action?


InteractionFilter provides bit flags for low-level filtering of interactions.
For a given interaction type, two Shapes will be permitted to interact only if
(shape1.group & shape2.mask) != 0 && (shape2.group & shape1.mask) != 0
There are 32 real groups corresponding to a set bit in the group/mask fields. For instance
a group value of 0x120 corresponds to the 'real' groups 5 and 8 as
0x120 = (1<<5) | (1<<8)
Nape provides group/mask for each interaction type. The actual precedence of interactions
is further defined simply as: Sensor > Fluid > Collision.
Two static bodies can never interact, and with the exception of sensor interaction, at least one
of the two bodies must be dynamic.
Sensor interactions have the highest precedence, followed by fluid and then collisions.
Sensor interaction is permitted only if one of the shapes is sensorEnabled, whilst fluid
is permitted only if one of the shapes is fluidEnabled.
if ((shapeA.sensorEnabled || shapeB.sensorEnabled) && shapeA.filter.shouldSense(shapeB.filter)) {
SENSOR INTERACTION!!
}
else if (bodyA.isDynamic() || bodyB.isDynamic()) {
if ((shapeA.fluidEnabled || shapeB.fluidEnabled) && shapeA.filter.shouldFlow(shapeB.filter)) {
FLUID INTERACTION!!
}
else if (shapeA.filter.shouldCollide(shapeB.filter)) {
COLLISION INTERACTION!!
}
}


I am having this following problem when i check my air vehicles rank, instead of showing the rank it shows "NaN"
You can see on the attached picture that i put.
Looks like its related to that i bought the shortcut kit for air vehicles, and now that i got one star for it, its showing this bug.
Could you guys take a look? TKS!!!
BrainFooLong
Administrator
This could be possible because of the shortcut kit. Please give me a link to your broken overview list.
Looks like no problem with shortcut kit.
I'll check this.
BrainFooLong
Administrator
Allright checked. Is because of the shortcut kits.
Changed in next release to display when shortcut kit is used - For those used groups are no data available for the service stars (i don't know why).


MC^2 Project Developer Documentation¶
Author: Jun Zheng (junthehacker)
This documentation is aimed to provide developer a better understanding of the project. It also includes some very important API documentation.
Full source of the project in available at https://github.com/bestlkh/ice-MC2.
Project Layout¶
+ AdminView/ - Self explaintory + public/ - Everything that will be served with Node.js | ---+ app/ - Controllers, libs etc. | ---+ docs-src/ - Documentation source | ---+ docs/ - Compiled documentation | ---+ landing/ - Landing page | ---+ lib/ - External libs | ---+ login/ - Login page | ---+ register/ - Register page | ---+ index.html - Angular enterence point + app.js - Primary Node.js script


See what's next.
Watch anythere.Cancel anytime.
Available on all devices: Mobile + Desktop + Ipad +TV
Join free for a month
Sign In


Климат Контроль Делюкс
влажность ch/ih
data_loss.csv
duplicates.csv
it_decrease.csv
shuffled.csv
steady.csv
zigzag.csv
{{ client_temperature }}
{{ client_humidity }}
Some data is shuffled:
{{ row | r }}
Some data is lost:
{{ row | r }}
Some records are duplicated:
{{ row | r }}
Inner temperature is changing for no reason:
{{ row | r }}
Some data with too fast changes:
{{ row | r }}
Some data with unexpected vibration changes:
{{ row | r }}


Orlando Ortega
Geoscientist
In construction -coming up: contact information.
Get your account for free at Netlify


Debugging the Code
Looking at the generated code
Using the FIR backend
The FIR (Faust Imperative Representation) backend can possibly be used to look at a textual version of the intermediate imperative language.
import("stdfaust.lib");
vol = hslider("volume [unit:dB]", 0, -96, 0, 0.1) : ba.db2linear : si.smoo;
freq1 = hslider("freq1 [unit:Hz]", 1000, 20, 3000, 1);
freq2 = hslider("freq2 [unit:Hz]", 200, 20, 3000, 1);
process = vgroup("Oscillator", os.osc(freq1) * vol, os.osc(freq2) * vol);
For instance compiling the previous code with the faust -lang fir osc.dsp
command will display various statistics, for example the number of operations done in the generated compute
method:
======= Compute DSP begin ==========
Instructions complexity : Load = 23 Store = 9
Binop = 12 [ { Int(+) = 1 } { Int(<) = 1 } { Real(*) = 3 } { Real(+) = 5 } { Real(-) = 2 } ]
Mathop = 2 [ { floorf = 2 } ]
Numbers = 8
Declare = 1
Cast = 2
Select = 0
Loop = 1
As well as the DSP structure memory size and layout, and read/write statistics:
======= Object memory footprint ==========
Heap size int = 4 bytes
Heap size int* = 0 bytes
Heap size real = 48 bytes
Total heap size = 68 bytes
Stack size in compute = 28 bytes
======= Variable access in compute control ==========
Field = fSampleRate size = 1 r_count = 0 w_count = 0
Field = fConst1 size = 1 r_count = 1 w_count = 0
Field = fHslider0 size = 1 r_count = 1 w_count = 0
Field = fConst2 size = 1 r_count = 0 w_count = 0
Field = fRec0 size = 2 r_count = 0 w_count = 0
Field = fConst3 size = 1 r_count = 2 w_count = 0
Field = fHslider1 size = 1 r_count = 1 w_count = 0
Field = fRec2 size = 2 r_count = 0 w_count = 0
Field = fHslider2 size = 1 r_count = 1 w_count = 0
Field = fRec3 size = 2 r_count = 0 w_count = 0
======= Variable access in compute DSP ==========
Field = fSampleRate size = 1 r_count = 0 w_count = 0
Field = fConst1 size = 1 r_count = 0 w_count = 0
Field = fHslider0 size = 1 r_count = 0 w_count = 0
Field = fConst2 size = 1 r_count = 1 w_count = 0
Field = fRec0 size = 2 r_count = 4 w_count = 2
Field = fConst3 size = 1 r_count = 0 w_count = 0
Field = fHslider1 size = 1 r_count = 0 w_count = 0
Field = fRec2 size = 2 r_count = 4 w_count = 2
Field = fHslider2 size = 1 r_count = 0 w_count = 0
Field = fRec3 size = 2 r_count = 4 w_count = 2
Those informations can possibly be used to detect abnormal memory consumption.
Debugging the DSP Code
On a computer, doing a computation that is undefined in mathematics (like val/0
of log(-1)
), and unrepresentable in floating-point arithmetic, will produce a NaN value, which has a special internal representation. Similarly, some computations will exceed the range that is representable with floating-point arithmetics, and are represented with a special INFINITY value, which value depends of the choosen type (like float
, double
or long double
).
After being produced, those values can actually contaminate the following flow of computations (that is Nan + any value = NaN
for instance) up to the point of producing incorrect indexes when used in array access, and causing memory access crashes.
The Faust compiler gives error messages when the written code is not syntactically or semantically correct, and the interval computation system on signals is supposed to detect possible problematic computations at compile time, and refuse to compile the corresponding DSP code. But the interval calculation is currently quite imperfect, can misbehave, and possibly allow problematic code to be generated.
Several strategies have been developed to help programmers better understand their written DSP code, and possibly analyse it, both at compile time and runtime.
Debugging at compile time
The -ct option
Using the -ct
compilation option allows to check table index range and generate safe table access code. It verifies that the signal range is compatible with the table size, and if needed, generate safe read and write indexes access code, by constraining them to stay in a given [0.. size-1]
range.
Note that since the signal interval calculation is imperfect, you may see false positives, and uneeded range constraining code might be generated, especially when using recursive signals where the interval calculation system will typically produce [-inf, inf] range, which is not precise enough to correctly describe the real signal range.
The -me option
Starting with version 2.37.0, mathematical functions which have a finite domain (like sqrt
defined for positive or null values, or asin
defined for values in the [-1..1] range) are checked at compile time when they actually compute values at that time, and raise an error if the program tries to compute an out-of-domain value. If those functions appear in the generated code, their domain of use can also be checked (using the interval computation system) and the -me
option will display warnings if the domain of use is incorrect. Note that again because of the imperfect interval computation system, false positives may appear and should be checked.
Debugging at runtime
The interp-tracer tool
The interp-tracer tool runs and instruments the compiled program using the Interpreter backend. Various statistics on the code are collected and displayed while running and/or when closing the application, typically FP_SUBNORMAL
, FP_INFINITE
and FP_NAN
values, or INTEGER_OVERFLOW
, CAST_INT_OVERFLOW
and DIV_BY_ZERO
operations, or LOAD/STORE
errors.
See the complete documentation and the Advanced debugging with interp-tracer tutorial.
The faust2caqt tool
On macOS, the faust2caqt script has a -me
option to catch math computation exceptions (floating point exceptions and integer div-by-zero or overflow, etc.) at runtime. Developers can possibly use the dsp_me_checker class to decorate a given DSP object with the math computation exception handling code.
Fixing the errors
These errors must then be corrected by carefully checking signal range, like verifying the min/max values in vslider/hslider/nentry
user-interface items.
Additional Resources
Note that the Faust math library contains the implementation of isnan
and isinf
functions that may help during development.
Handling infinity and not-a-number (NaN) the right way still remains a tricky problem that is not completely handled in the current version of the compiler. Dario Sanfilippo blog post is a very helpful summary of the situation with a lot of practical solutions to write safer DSP code.


Guwahati, IND
Thursday 17 December 2020
15
°C
Sunny
13°C / 16°C
Check/Uncheck to see temperature in °F/°C


This is a twelve cell section in a grid-x. Each of these includes a
div.callout
element so you can see where the cell are—it’s not required at all for the grid.
Six cell
Six cell
Four cell
Four cell
Four cell
Simple Button
Success Btn
Alert Btn
Secondary Btn
A whole kitchen sink of goodies comes with Foundation. Check out the docs to see them all, along with details on making them your own.
Go to Foundation Docs


Element autoProperty¶
Element autoProperty is used to configure the auto-generated implementation of a property in interface specified in element autoService.
An example of autoProperty elements is provided in Autogenerated Services. In this section some specifics of this element will be provided.
The Format of autoProperty¶
Property name and return type in autoProperty¶
Property name is specified using the attribute name.
- Property return value type is specified using the attribute returnType and optional attribute assembly, or alternatively using attribute returnTypeRef to reference a type defined in some /iocConfiguration/typeDefinitions/typeDefinition element.
Note
Even though we only need the property name, to identify the property, the return type makes the configuration more readable. Also, the return type serves as an additional way to identify the property, if a property with similar name exists in multiple extended interfaces.
Specifying the returned value¶
The property auto-generated by IoC.Configuration will return the value specified in child of autoProperty element.
- The child of autoProperty element should be a value initializer element, such as collection, int32, constructedValue, injectedObject, etc.
Note
Refer to Value Initialization Elements for more details on value initializer elements.
Example:¶
1<autoService interface="IoC.Configuration.Tests.AutoService.Services.IActionValidatorFactory">
2 <autoProperty name="PublicProjectId" returnType="System.Guid" >
3 <object type="System.Guid" value="95E352DD-5C79-49D0-BD51-D62153570B61"/>
4 </autoProperty>
5</autoService>
Resolving conflicts by using declaringInterface in autoProperty¶
If the auto-implemented property with the specified name, and return type is not in auto-implemented interface, but is present in multiple parent interfaces, IoC.Configuration will report an error, since it will not know which property the configuration refers to.
In such rare cases an attribute declaringInterface can be used to specify explicitly the parent interface, where the property is declared.
Example:
1<!-- 2IoC.Configuration.Tests.AutoService.Services.IMemberAmbiguityDemo demonstrates 3cases when there are multiple occurrences of auto-generated methods and properties 4with same signatures and return types in base interfaces of 5IoC.Configuration.Tests.AutoService.Services.IMemberAmbiguityDemo. 6--> 7<autoService interface="IoC.Configuration.Tests.AutoService.Services.IMemberAmbiguityDemo"> 8 <!-- 9 Both IMemberAmbiguityDemo_Parent1 and IMemberAmbiguityDemo_Parent2 have properties called DefaultDbConnection 10 with the same return types. We can auto-implement this property for each of these interfaces by using 11 declaringInterface attribute in autoProperty element to explicitly specify the interface that own 12 the property (declaringInterface can be used in autoMethod as well as demonstrated above) 13 --> 14 <!--Auto-implementation of IMemberAmbiguityDemo_Parent1.DefaultDbConnection--> 15 <autoProperty name="DefaultDbConnection" 16 returnType="SharedServices.Interfaces.IDbConnection" 17 declaringInterface="IoC.Configuration.Tests.AutoService.Services.IMemberAmbiguityDemo_Parent1"> 18 <constructedValue type="SharedServices.Implementations.SqliteDbConnection"> 19 <parameters> 20 <string name="filePath" value="c:\IMemberAmbiguityDemo_Parent1_Db.sqlite"/> 21 </parameters> 22 </constructedValue> 23 </autoProperty> 24 25 <!--Auto-implementation of IMemberAmbiguityDemo_Parent2.DefaultDbConnection--> 26 <autoProperty name="DefaultDbConnection" 27 returnType="SharedServices.Interfaces.IDbConnection" 28 declaringInterface="IoC.Configuration.Tests.AutoService.Services.IMemberAmbiguityDemo_Parent2"> 29 <constructedValue type="SharedServices.Implementations.SqliteDbConnection"> 30 <parameters> 31 <string name="filePath" value="c:\IMemberAmbiguityDemo_Parent2_Db.sqlite"/> 32 </parameters> 33 </constructedValue> 34 </autoProperty> 35</autoService>


My Projects
To see more of my works, you can visit my github:
https://github.com/angellhove
Home
Contact
ClickNstyle
View Page
Occasion Express
View Page
Fur and Paws
View Page
Bongo Bongo
View Page
Math is Cool
View Page
Warby Parker
View Page
Zenni Optical
View Page
Alight
View Page
Cebujol
View Page
Burning Core
View Page
Lasik Town
View Page
Wellstone
View Page


Enterprise architecture (EA) comes with a promise: simplify IT. The problem it is tackling here is about controlling the complexity and cost of IT while enabling the desired change and competitiveness for the business. The term enterprise architecture, in this context, appears to be self-explanatory: Apply architectural thinking to simplify the management of a complex enterprise IT landscape. There indeed are many experts who define EA along this line. Others take their own stance as to what EA means for their enterprises, given the business needs, the position of IT, and the political culture in their enterprises.
All these definitions are valid, since they provide a basis against which enterprises can scope and judge their own EA initiatives. Yet there is no consensus definition for EA today—even after 25 years of its existence. There are more fundamental truths about EA that cannot be encapsulated in a single definition. This chapter is our attempt to explore these truths.
We’ll first look at the basic meaning of the term architecture. Then we will analyze what the term means when it’s applied to describing or managing a complex system such as an enterprise.


|
Ray Tracer Common Project
Image rendering program based on the ray tracing technique.
|
RGBA color representation. More...
#include <color.hpp>
Public Member Functions | |
| color () | |
| color (const color &c) | |
| color (double r, double g, double b, double a=1.0) | |
| virtual void | set_red (double r) |
| virtual void | set_green (double g) |
| virtual void | set_blue (double b) |
| virtual void | set_alpha (double a) |
| double | red () const |
| double | green () const |
| double | blue () const |
| double | alpha () const |
| virtual bool | operator== (const color &c) const |
| color | operator+ (const color &c) const |
| Color addition. More... | |
| void | operator+= (const color &c) |
| Color addition See color::operator+ for details. | |
| color | operator* (const color &c) const |
| Color multiplication. More... | |
| void | operator*= (const color &c) |
| Color multiplication. More... | |
| void | operator*= (double f) |
| Double multiplication. More... | |
| color | operator* (double f) const |
| Double multiplication. More... | |
| virtual | operator uint32 () const |
| Cast operator to unsigned 32bits int. More... | |
| uint32 | map (SDL_PixelFormat *) const |
| SDL convertion operator. More... | |
Static Public Attributes | |
| static color | WHITE = color(1.0, 1.0, 1.0) |
| default white color. | |
| static color | GRAY = color(0.5, 0.5, 0.5) |
| default gray color. | |
| static color | BLACK = color(0.0, 0.0, 0.0) |
| default black color. | |
| static color | BLUE = color(0.0, 0.0, 1.0) |
| default blue color. | |
| static color | GREEN = color(0.0, 1.0, 0.0) |
| default green color. | |
| static color | RED = color(1.0, 0.0, 0.0) |
| default red color. | |
RGBA color representation.
The color class represents a color through its four components: red, green, blue and alpha (RGBA). All components are normalized into [0, 1].
| rt::color::color | ( | ) |
Default constructor. Builds a white color.
| rt::color::color | ( | const color & | c | ) |
Copy constructor.
| rt::color::color | ( | double | r, |
| double | g, | ||
| double | b, | ||
| double | a = 1.0 |
||
| ) |
Builds a color from its red, green and blue components. Alpha is set to 255.
|
inline |
Returns the alpha component.
|
inline |
Returns the blue component.
|
inline |
Returns the green component.
| uint32 rt::color::map | ( | SDL_PixelFormat * | format | ) | const |
SDL convertion operator.
Cast the color into the SDL pixel format representation.
|
virtual |
Cast operator to unsigned 32bits int.
Represents the color as a unsigned 32b int, with red being the most significant byte.
Color multiplication.
Perform a multiplication, or absorbtion, between two colors. The multiplication is defined as follow:
For two colors \(src_{RGBA}\) and \(dst_{RGBA}\) (this color) the destination color will be:
\begin{eqnarray*} out_{RGB} &=& dst_{RGB}src_{RGB}src_A + dst_{RGB}(1-src_A)\\ out_A &=& dst_Asrc_A + dst_A(1-src_A) \end{eqnarray*}
| color rt::color::operator* | ( | double | f | ) | const |
Double multiplication.
Return a new color from this one with all components multiplied by a double value.
| void rt::color::operator*= | ( | const color & | c | ) |
Color multiplication.
See color::operator* for details.
| void rt::color::operator*= | ( | double | f | ) |
Double multiplication.
Multiply all components but alpha by a double value.
Color addition.
Perfom an additive blending between two colors. The blending is performed as follow:
For two colors \(src_{RGBA}\) and \(dst_{RGBA}\) (this color) the destination color will be:
\[ out_{RGBA} = src_{RGBA} + dst_{RGBA} \]
|
virtual |
Comparison operator.
|
inline |
Returns the red component.
|
inlinevirtual |
Sets the alpha component.
|
inlinevirtual |
Sets the blue component.
|
inlinevirtual |
Sets the green component.
|
inlinevirtual |
Sets the red component.


Miguel Salazar in a recent essay purporting to address the question “Do America’s Socialists Have a Race Problem?” (The New Republic, December 20, 2018), seconds a perspective on current debates within the Democratic Socialists of America (DSA) that answers his question in the affirmative.
DSA, as a result of the energies unleashed around the Bernie Sanders campaign and the 2016 election, has experienced such massive growth as to have become essentially a new organization. And the current controversy within the organization condenses a larger challenge facing the left in the United States as we confront the lessons of the victory of Trumpism and the need to struggle to contain and defeat it. The debate within DSA sharpens the tensions and contradictions around defining strategies for charting a way forward in that larger struggle. Those tensions resolve down to two basic alternatives: a strategy focused centrally on agitating for social-democratic programs—such as Medicare for All, free public higher education, public investment in physical and social infrastructure—intended to appeal broadly to working people of all races, genders, and sexual orientations and one that rejects that focus in favor of efforts to mobilize around issues purported to reflect the concerns of groups marginalized on the basis of race, immigration status, sexual orientation, gender or other categories of ascribed identity.
Within DSA, the debate is anchored, at least in principle, to the longer-term goal of social transformation along socialist lines. In that context, the first alternative is rooted in a longstanding, conventional approach based on mass movement-building. The second proceeds from a conviction that, because of the overwhelming power of white supremacy (and related systems of oppression) in the United States, the route to socialism must give priority to challenging those hierarchies. This view rests on a determinist account that construes racism—commitment to white, male, heteronormative supremacy—as the driving imperative in American political history and a corollary contention that that commitment has vitiated all progressive initiatives in the past and will continue to do so. Therefore, albeit incongruously in light of the determinism it posits, this approach insists that defeating that imperative is a necessary precursor to pursuit of any more general leftist agendas. Thus I and others argue that its guiding perspective is race-reductionist.
One means through which Salazar seeks to validate that second, identitarian alternative entails repeating a familiar line of attack on Melissa Naschek’s critical review in Jacobin of Asad Haider’s book, Mistaken Identity: Race and Class in the Age of Trump. And, because her review has become a flashpoint for attacks from identitarians in DSA and elsewhere, it is worth considering what she actually argues.
Naschek’s judgment, correct in my view, is that Haider’s book fails because of “the shakiness of his historical narrative” and its “shopworn account of the failure of the Civil Rights movement to provide an institutional pathway out of poverty, causing the emergence of black nationalist ideology in response.” In part because of this inadequate reading of history, she argues, Haider, in asserting that “black self-determination and socialism are mutually dependent,” embraces a “do both” approach to movement-building that enables “powerful enemies of the Left (and allies of capital) [to] worm their way into our coalition and play up identity to reshape working-class demands until they’re neutralized.”
Oddly, Salazar contends that I “helped Naschek craft her review.” That claim is false and, frankly, offensive. Melissa is a friend and comrade politically. When she was working on the review, she asked me, as a scholar who specializes in the study of postwar black American politics, to offer comments on her draft, which I did. I told her I thought the review was great, and that was about that. Salazar’s assertion may simply reflect his lack of understanding of how processes of careful intellectual production work; asking colleagues, particularly those with pertinent expertise, for comments on work in progress is a normal feature of intellectual practice. In context, however, the assertion seems suspiciously like a slur, possibly even sexist, carrying an implication that Naschek’s critique isn’t entirely her own, or perhaps an effort to attack her by association with someone who has a public track record of objection to current strains of race-reductionist politics, like that advocated by Haider and others, that seek to define opposition to struggles for universalist policies as consistent with a socialist politics.
Salazar also quotes me as having referred on a podcast to Haider’s arguments as smelling “like a truckload of rotten fish.” My point in the interview (around the 39-minute mark) was not about Haider’s book at all; I made that comment in reference to a much more general, persistent, and corrosive problem in political interpretation, of which Mistaken Identity is only a recent, and relatively trivial expression. Salazar’s misrepresentation may stem from faulty memory or a naïve flattening of what I said into what he takes to be the implication of what I said. It is in either case inaccurate and tendentious.
I am sharply critical of Haider’s book, as are other specialists in the study of black American political history, because it is dilettantish and profoundly wrong in its accounts of the dynamics and forces shaping black political development since the mid-1960s. Indeed, Haider gives away that dilettantism in his response to Naschek’s criticism of his assertion that the Combahee River Collective is an exemplary guide to contemporary political strategy. Naschek notes that “the collective was never connected to any mass political organization.” She goes on:
To say that they offer a model to building such a program implies that any group of academics meeting in a coffee shop has somehow altered the landscape of capitalism. Haider takes Combahee’s declarations of political import as self-evident rather than engaging in any critical history of the group’s accomplishments.
And further:
It is unfortunately a common practice among modern left public intellectuals to assert that the will to pursue political change is more important than a group’s ability to actually do so. Still it is bizarre that a book, which claims to expose the damage liberal identity politics has done to socialist politics, should prominently showcase one of the former’s favorite shibboleths.
Rather than engage seriously with this legitimate critical observation, Haider pirouettes to a cheap quip: “Naschek dismissively [sic] proclaims that the [Combahee River Collective] was not a mass movement. Neither is the DSA.” That, however, is a disingenuous and wrong-headed non-response. Whatever the Combahee River Collective may have been in its brief and generally unnoticed existence, it never demonstrated aspirations to building a mass political movement. That is, at least in its current incarnation, DSA’s central mission.
To be clear, I am not and never have been a member of DSA and am not a partisan in those internal debates. I do believe, though, that the race-reductionist perspective—even in its “both/and” variant—is, as Naschek and others argue, vulnerable to, if not actively aligned with the decidedly anti-Left Democratic tendencies associated with Clintonism. That is the key issue at stake in the debate over left political strategy, quite apart from positional struggle within DSA as an organization, and it is one that those, apparently including Salazar and Haider, who object to a strategy based on appealing to concerns shared broadly among working people of all races, genders, and sexual orientations attempt to finesse.
Naschek’s observation regarding contemporary left public intellectuals’ elevation of the will to pursue political change over the capacity to do so is especially important in this regard. Haider and others who tout the Combahee River Collective as a model for our time do so because its members were black lesbians who espoused a generic commitment to “liberation,” not because of their approach to or record of movement-building. In the race-reductionist, identitarian world, being displaces doing; what one supposedly is, that is, can mean more than what one does or advocates concretely. We saw enough of that during the 2018 mid-term elections when we were exhorted to celebrate candidacies of various nonwhite, female, gay or lesbian, and gender-nonconforming aspirants because of the identity categories they embodied rather than the programs they advanced. To be sure, some of them embraced left agendas; some decidedly did not, even though they may nonetheless have been better options than their Republican opponents.
Tensions around that identitarian approach erupted in what apparently has become a notorious conflict within DSA regarding endorsement of Cat Brooks, a black, female candidate in the 2018 Oakland, Califorinia mayor’s race. Salazar adduces that controversy in his brief against the organization’s socialist left majority, whom their identitarian opponents accused of racial insensitivity for denying Brooks the chapter’s endorsement. I don’t intend to assess that particular debate; I don’t have adequate local knowledge. I do know that those opposing endorsement were circumspect—see, for example, this dispatch on the East Bay DSA’s website about the recency of Brooks’s reversal of stance on the charter school issue, after several years of prominent association with the charter movement.
Salazar invokes a person he describes as “Oakland’s loudest anti-charter activist,” who backed her candidacy and who characterized his relationship with the candidate as “complicated,” to support a claim that, in effect, she and others hadn’t understood charterization’s destructive force because charters “were sold to residents as a way to give them agency over their own schools.” Charterization, his informant said, “was tied to the self empowerment theme that goes back to the Black Panthers.” But that justification seems uncomfortably akin to “I didn’t know where I was or what I was doing” or “I was young and needed the money.” Whether or not Brooks’s conversion is genuine, wouldn’t the earlier error—particularly considering the depth and duration of her commitment to it—justify skepticism with regard to how she might respond to other shiny new neoliberal interventions?
Recourse to the charge that those who opposed Brooks’s endorsement were driven by bad racial motives, rather than principled political concerns, underscores the dangers of race-reductionist politics. (Salazar is in general too willing to retail DSA identitarians’ charges of racial insensitivity.  It’s unlikely, however, that Naschek, who is Jewish, would need sensitivity training about the evils of antisemitism.)
This politics is open to the worst forms of opportunism, and it promises to be a major front on which neoliberal Democrats will attack the left, directly and indirectly, and these lines of attack stand out in combining red-baiting and race-baiting into a new, ostensibly progressive form of invective.  Indeed, we should recall that it was followed hard upon by even more blunt attacks from prominent members of the black political class.
When the campaign turned to South Carolina, with its large bloc of black Democratic voters, the state’s black Congressman James Clyburn joined Georgia Congressman and icon of the civil rights movement, John Lewis, and Louisiana Congressman Cedric Richmond in denouncing Sanders as “irresponsible” in calling for non-commodified public goods in education, healthcare and other areas. Lewis sneered: “It’s the wrong message to send any group. There’s not anything free in America. We all have to pay for something. Education is not free. Health care is not free. Food is not free. Water is not free. I think it’s very misleading to say to the American people we’re going to give you something free.” As I pointed out in the Baffler, “Richmond’s rebuke was especially telling in that he couched it in terms of his role as chair of the Congressional Black Caucus and the group’s ‘responsibility to make sure that young people know that’ a social-democratic agenda is ‘too good to be true.’ ”
This points to precisely what is limited, and in the context of the current debate over ways forward for the broader left, dangerous about the simplistic race-reductionism that Salazar, Haider, and others advocate as a necessary accompaniment of, and in practical terms precursor, or even alternative to a pursuit of a socialist, or social-democratic political agenda. The juxtaposition they assert between “race” or identity and class is bogus. It presumes both the fiction that “(working) class” means “white” and that blacks or other nonwhites and the like are somehow outside the capitalist class dynamics that shape American life and, most important in this context, politics. As the ideological and programmatic commitments of Clyburn, Lewis, Richmond and others in the black political elite and chattering classes illustrate, that is hardly the case. Moreover, most black people, like other Americans, are concerned with finding or keeping decent jobs, housing, health care, education, etc.—the stuff of a social-democratic agenda. Hence Bernie Sanders’s approval ratings remain higher among black Americans than any other group.
Simply put, one either supports such an agenda, or one does not. For the first time in most of our lifetimes, we have an opportunity to make commitment to that sort of agenda the definitive fault-line in American politics for 2020 and beyond. There have been signs since before the 2016 election that both many Wall Street Democrats and nominally progressive identitarians would rather lose than embrace the social-democratic left. As we approached the 2018 mid-term elections and since, it has become ever clearer that a major struggle between now and 2020 will be over how we define the “progressive” electoral agenda, whether it should be weighted toward advancing candidates who are nonwhite, female, and gender-nonconforming or those who support such policy initiatives as Medicare For All. Of course, those goals are not necessarily in conflict. The question, though, is which should take priority when they are. We must be clear that they are not interchangeable.
That is also a critical point to keep in mind, as we have been and increasingly will be confronted with “don’t let the perfect be the enemy of the good” liberals, who want, in the name of electability or bringing the party together, or whatever else, to water down Medicare For All or other components of a social-democratic agenda before we’ve ever had a serious effort to organize a popular base in support of them. It has been and will be all too easy for the occasion to elect “the first” black/Native American/woman/lesbian to substitute for the need to advance an agenda that can appeal broadly to working people of all races, genders, and sexual orientations. Our side’s failure to struggle for that sort of agenda is one reason Trump is in the White House. We can’t afford to repeat the mistakes that helped bring about that result.
The question of the moment is, in the spirit of Florence Reece and her brother and sister coalminers in the 1931 Harlan County War, Which Side Are You On?