<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>danuker | freedom &amp; tech</title><link href="https://danuker.go.ro/" rel="alternate"></link><link href="//danuker.go.ro/feeds/atom.xml" rel="self"></link><id>https://danuker.go.ro/</id><updated>2025-07-07T00:00:00+03:00</updated><entry><title>4-leaf clover detector</title><link href="https://danuker.go.ro/4-leaf-clover-detector.html" rel="alternate"></link><published>2025-07-07T00:00:00+03:00</published><updated>2025-07-07T00:00:00+03:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2025-07-07:/4-leaf-clover-detector.html</id><summary type="html">&lt;p&gt;Detect 4-leaf clovers in your pictures&lt;/p&gt;</summary><content type="html">&lt;p&gt;Tired of manually looking through clover patches to find 4-leaf clovers? Automate your luck using this detector.&lt;/p&gt;
&lt;p&gt;As of 2025-11-04, this is still in testing, because I haven't yet detected an actual 4-leaf. Just false alarms.&lt;/p&gt;
&lt;p&gt;Resources used:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gemini.google.com/app"&gt;Google Gemini 2.5 Pro&lt;/a&gt; to write the code&lt;/li&gt;
&lt;li&gt;The 4-leaf clover detection model from &lt;a href="https://github.com/deton/detect4clover"&gt;this app&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.tensorflow.org/js/guide/"&gt;TensorFlow.js&lt;/a&gt; to run the model in your browser&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Select an image:&lt;/p&gt;
&lt;p&gt;&lt;input accept="image/jpeg, image/png" id="image-input" type="file"/&gt;&lt;/p&gt;
&lt;p&gt; Select a threshold (lower means more detections):&lt;/p&gt;
&lt;p&gt;&lt;input class="slider" id="threshold" max="1" min="0" step="0.05" type="range" value="0.7"/&gt;
&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;Click "Detect" to find four-leaf clovers:&lt;/p&gt;
&lt;p&gt;&lt;button disabled="" id="detect-button"&gt;Detect&lt;/button&gt;&lt;/p&gt;
&lt;p id="status"&gt;Loading model...&lt;/p&gt;
&lt;canvas id="output-canvas"&gt;&lt;/canvas&gt;
&lt;script src="tensorflow/tfjs-core"&gt;&lt;/script&gt;
&lt;!-- Adds the CPU backend --&gt;
&lt;script src="tensorflow/tfjs-backend-cpu"&gt;&lt;/script&gt;
&lt;!--
  Import @tensorflow/tfjs-tflite

  Note that we need to explicitly load dist/tf-tflite.min.js so that it can
  locate WASM module files from their default location (dist/).
--&gt;
&lt;script src="tensorflow/tf-tflite.min.js"&gt;&lt;/script&gt;
&lt;script&gt;
// Get references to HTML elements
const imageInput = document.getElementById('image-input');
const detectButton = document.getElementById('detect-button');
const statusDiv = document.getElementById('status');
const canvas = document.getElementById('output-canvas');
const ctx = canvas.getContext('2d');

let model;
let imageElement = new Image();

// --- Main Logic ---

// 1. Load the TFLite model
async function loadModel() {
    try {
        model = await tflite.loadTFLiteModel('tensorflow/4leaf_detector.tflite');
        statusDiv.textContent = 'Model loaded. Please select an image.';
        detectButton.disabled = false;
        console.log('Model loaded successfully.');
    } catch (error) {
        statusDiv.textContent = 'Error: Could not load the model.';
        console.error('Failed to load model:', error);
    }
}
loadModel();

// 2. Handle image selection
imageInput.addEventListener('change', (event) =&gt; {
    const file = event.target.files[0];
    if (file) {
        const reader = new FileReader();
        reader.onload = (e) =&gt; {
            imageElement.src = e.target.result;
            imageElement.onload = () =&gt; {
                statusDiv.textContent = `Image loaded: ${file.name}. Click "Detect".`;
                // Draw the initial image on the canvas
                canvas.width = imageElement.width;
                canvas.height = imageElement.height;
                ctx.drawImage(imageElement, 0, 0);
            };
        };
        reader.readAsDataURL(file);
    }
});

// 3. Handle detection button click
detectButton.addEventListener('click', async () =&gt; {
    if (!model || !imageElement.src) {
        alert("Please load the model and select an image first.");
        return;
    }
    statusDiv.textContent = 'Detecting...';
    const totalBoxes = await runGridDetection();
    statusDiv.textContent = `Detection complete. Found ${totalBoxes} potential 4-leaf clovers.`;
});

// 4. Run detection on grid sections
async function runGridDetection() {
    const h = imageElement.height;
    const w = imageElement.width;
    let totalBoxes = 0;

    // Determine grid dimensions: split longest dimension in 6
    let gridCols, gridRows;
    if (w &gt;= h) {
        gridCols = 6;
        gridRows = 4;
    } else {
        gridCols = 4;
        gridRows = 6;
    }

    // Calculate section dimensions
    const sectionWidth = w / gridCols;
    const sectionHeight = h / gridRows;

    // Redraw the original image before drawing boxes
    ctx.drawImage(imageElement, 0, 0);

    // Process each grid section
    for (let row = 0; row &lt; gridRows; row++) {
        for (let col = 0; col &lt; gridCols; col++) {
            const x = col * sectionWidth;
            const y = row * sectionHeight;

            statusDiv.textContent = `Processing section ${row * gridCols + col + 1} of ${gridRows * gridCols}...`;

            const boxes = await detectInSection(x, y, sectionWidth, sectionHeight);
            totalBoxes += boxes;

            // Small delay to allow UI updates
            await new Promise(resolve =&gt; setTimeout(resolve, 10));
        }
    }

    return totalBoxes;
}

// 5. Run detection on a specific section of the image
async function detectInSection(x, y, width, height) {
    let boxes = 0;

    // Create a temporary canvas to extract the section
    const tempCanvas = document.createElement('canvas');
    const tempCtx = tempCanvas.getContext('2d');
    tempCanvas.width = width;
    tempCanvas.height = height;

    // Draw the section to the temporary canvas
    tempCtx.drawImage(imageElement, x, y, width, height, 0, 0, width, height);

    // --- Preprocessing: Equivalent to resizing and expanding dimensions ---
    const inputTensor = tf.tidy(() =&gt; {
        // Create a tensor from the section
        const imgTensor = tf.browser.fromPixels(tempCanvas);
        // Resize to the model's expected input size [320, 320]
        const resized = tf.image.resizeBilinear(imgTensor, [320, 320]);
        // Expand dimensions to add the batch dimension, e.g., [1, 320, 320, 3]
        // and cast to int32, a common input type for TFLite object detection models.
        const expanded = tf.expandDims(resized, 0);
        return tf.cast(expanded, 'int32');
    });

    // --- Inference: Run the model ---
    const outputTensors = model.predict(inputTensor);

    // --- Postprocessing ---
    // Assuming the order is correct
    const locationsData = await outputTensors["TFLite_Detection_PostProcess"].data();
    const scoresData = await outputTensors["TFLite_Detection_PostProcess:2"].data();

    tf.dispose(inputTensor); // Clean up tensors
    tf.dispose(outputTensors);

    // Loop through detections, similar to the Python script
    for (let i = 0; i &lt; scoresData.length; i++) {
        const score = scoresData[i];
        if (score &lt; $('#threshold').val()) {
            continue; // Skip detections below the confidence threshold
        }
        boxes += 1;

        // The locations tensor is flattened, so we access 4 values for each box
        const [y1_norm, x1_norm, y2_norm, x2_norm] = [
            locationsData[i * 4],
            locationsData[i * 4 + 1],
            locationsData[i * 4 + 2],
            locationsData[i * 4 + 3]
        ];

        // Skip invalid bounding boxes
        if (y1_norm &gt; 1.0 || x1_norm &gt; 1.0 || y2_norm &gt; 1.0 || x2_norm &gt; 1.0) {
            continue;
        }

        // Denormalize bounding box coordinates for the section
        const y1_section = y1_norm * height;
        const x1_section = x1_norm * width;
        const y2_section = y2_norm * height;
        const x2_section = x2_norm * width;

        // Transform coordinates back to the original image coordinates
        const y1_original = y + y1_section;
        const x1_original = x + x1_section;
        const y2_original = y + y2_section;
        const x2_original = x + x2_section;

        // Draw the rectangle on the main canvas
        ctx.strokeStyle = 'magenta'; // color=(255, 0, 255)
        ctx.lineWidth = 3;
        ctx.strokeRect(x1_original, y1_original, x2_original - x1_original, y2_original - y1_original);
    }

    console.log(`Section at (${x}, ${y}) processed: ${boxes} boxes found.`);
    return boxes;
}

&lt;/script&gt;</content><category term="English"></category><category term="Tech"></category><category term="Programming"></category><category term="Self-hosted"></category></entry><entry><title>ABSI Calculator</title><link href="https://danuker.go.ro/absi-calculator.html" rel="alternate"></link><published>2025-06-23T16:25:00+03:00</published><updated>2025-06-23T16:25:00+03:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2025-06-23:/absi-calculator.html</id><summary type="html">&lt;p&gt;Calculate your "A Body Shape Index" and its z-score. Track your fitness progress.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Let's say you want to start losing weight or working out, and want to motivate yourself by tracking progress.&lt;/p&gt;
&lt;p&gt;Only measuring your weight won't cut it - you could become a gym rat overnight, and get ripped, but your weight might not change much, and neither your BMI. How would you even know when to stop? When is your body "good enough"? What if you become too ripped, car drivers start staring at you, and you start causing car crashes? It's dangerous.&lt;/p&gt;
&lt;p&gt;One solution to this problem is &lt;strong&gt;&lt;a href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0039504"&gt;ABSI - A Body Shape Index&lt;/a&gt;&lt;/strong&gt;. In addition to measuring your weight, also input your height and waist circumference, and you can get a score that is closely related to your health. While BMI can't tell a muscly person from a couch potato, ABSI uses the waist circumference to do so.&lt;/p&gt;
&lt;p&gt;Subtract the average ABSI for your sex and age, and divide by the standard deviation, and you get the ABSI z-score, which is what you need to look at. Generally, if it's zero or below, you're pretty fit. My personal target is -0.75, but if I get to -1 it's OK. Follow the moving average (EWMA), rather than the noisy raw measurements!&lt;/p&gt;
&lt;p&gt;To improve the score, you need to lose fat (by avoiding too many calories), build muscle (by working out), or both.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To avoid calories, I &lt;a href="https://nutritionfacts.org/video/daily-dozen-diet-put-to-the-test-for-weight-loss/"&gt;stuff myself&lt;/a&gt; with healthy, water-rich food. Veggies, fruit, legumes, greens and such. After that I feel too full to crave energy-dense foods.&lt;/li&gt;
&lt;li&gt;To work out, I follow the &lt;a href="https://www.fourmilab.ch/hackdiet/e4/exercise.html"&gt;"What, Me Exercise?" chapter of Hacker's Diet&lt;/a&gt;. At least ostensibly.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can also improve your score by sucking your stomach in, but that is cheating. So is pulling the measuring tape tight or rounding to a convenient number. If you want a more accurate method, &lt;a href="https://www.ncbi.nlm.nih.gov/books/NBK2004/box/A236/"&gt;here it is&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can record your data here, and this calculator will make a nice chart and remember your history in the browser's local storage. You can also get a TSV file. The ABSI is recalculated on import.
This calculator has no server component, so you can save the page and linked scripts &lt;em&gt;("Web Page, complete" in Firefox)&lt;/em&gt; and keep it forever on your own device, in case my server goes down.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 2025-06-24&lt;/strong&gt;: I use some voodoo magic to guesstimate your age at death (essentially a life table crammed into a formula). I didn't test it too much; don't be surprised if it has greater than 10% error. But I think it's useful for judging how much a tiny change can impact your life. In one month I progressed enough to &lt;strong&gt;win 5.9 extra years of life, with not much effort&lt;/strong&gt;, going from a z-score of 0.983 to 0.588.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 2025-06-26&lt;/strong&gt;: Fixed error when there is no history. There was too much validation going on.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 2025-07-04&lt;/strong&gt;: Showing a 7-ish-day exponentially-weighed moving average, instead of just the datapoints.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 2025-11-04&lt;/strong&gt;: I gained weight, and got back up around 0.85-ish. Then I lost some, but the score stayed the same, so at least I didn't lose muscle. I need to be more &lt;/p&gt;
&lt;script src="calculator/jquery-3.4.1.js"&gt;&lt;/script&gt;
&lt;p&gt;&lt;link href="calculator/uPlot.min.css" rel="stylesheet"/&gt;&lt;/p&gt;
&lt;script src="calculator/uPlot.iife.js"&gt;&lt;/script&gt;
&lt;div class="calculator"&gt;
&lt;h1&gt;ABSI Calculator&lt;/h1&gt;
&lt;table class="table-striped table"&gt;
&lt;tr&gt;
&lt;td&gt;Sex&lt;/td&gt;
&lt;td&gt;
&lt;select id="sex"&gt;
&lt;option value=""&gt;Select sex&lt;/option&gt;
&lt;option value="male"&gt;Male&lt;/option&gt;
&lt;option value="female"&gt;Female&lt;/option&gt;
&lt;/select&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Age&lt;/td&gt;
&lt;td&gt;
&lt;input id="age" max="85" min="2" placeholder="Enter age" step="1" type="number"/&gt;
&lt;span class="unit"&gt;years&lt;/span&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Life Expectancy at birth in your country&lt;/td&gt;
&lt;td&gt;
&lt;input id="lifex_birth" min="0" step="0.1" type="number" value="77"/&gt;
&lt;span class="unit"&gt;years&lt;/span&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Height&lt;/td&gt;
&lt;td&gt;
&lt;input id="height" min="0" placeholder="Enter height" step="0.1" type="number"/&gt;
&lt;span class="unit"&gt;cm&lt;/span&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Weight&lt;/td&gt;
&lt;td&gt;
&lt;input id="weight" min="0" placeholder="Enter weight" step="0.1" type="number"/&gt;
&lt;span class="unit"&gt;kg&lt;/span&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Waist Circumference (horizontally around navel)&lt;/td&gt;
&lt;td&gt;
&lt;input id="waist" min="0" placeholder="Enter waist circumference" step="0.1" type="number"/&gt;
&lt;span class="unit"&gt;cm&lt;/span&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="result-row"&gt;
&lt;td&gt;BMI&lt;/td&gt;
&lt;td&gt;
&lt;span class="result-value" id="bmi-result"&gt;-&lt;/span&gt;
&lt;span class="unit"&gt;kg/m²&lt;/span&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="result-row"&gt;
&lt;td&gt;ABSI&lt;/td&gt;
&lt;td&gt;
&lt;span class="result-value" id="absi-result"&gt;-&lt;/span&gt;
&lt;span class="unit"&gt;m^(11/6) kg^(-2/3)&lt;/span&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="result-row"&gt;
&lt;td&gt;ABSI Z-Score&lt;/td&gt;
&lt;td&gt;
&lt;span class="result-value" id="zscore-result"&gt;-&lt;/span&gt;
&lt;span class="unit"&gt;(standard deviations)&lt;/span&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="result-row"&gt;
&lt;td&gt;Relative Mortality Risk (1 = average)&lt;/td&gt;
&lt;td&gt;
&lt;span class="result-value" id="mortality-result"&gt;-&lt;/span&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="result-row"&gt;
&lt;td&gt;Age at death&lt;/td&gt;
&lt;td&gt;
&lt;span class="result-value" id="age-at-death-result"&gt;-&lt;/span&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="result-row"&gt;
&lt;td&gt;Save entry to history&lt;/td&gt;
&lt;td&gt;
&lt;button id="save-entry"&gt;Save Entry&lt;/button&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;div class="button-container"&gt;
&lt;input accept=".tsv" id="import-file" style="display: none;" type="file"/&gt;
&lt;button id="import-history"&gt;Import from TSV&lt;/button&gt;
&lt;button id="export-history"&gt;Export to TSV&lt;/button&gt;
&lt;button id="clear-history"&gt;Clear History&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="chart-section"&gt;
&lt;h2&gt;ABSI Z-Score Over Time&lt;/h2&gt;
&lt;div id="absi-chart"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="history-section"&gt;
&lt;h2&gt;History&lt;/h2&gt;
&lt;table class="table-striped table" id="history-table"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Date &amp;amp; Time&lt;/th&gt;
&lt;th&gt;Sex&lt;/th&gt;
&lt;th&gt;Age&lt;/th&gt;
&lt;th&gt;Height&lt;/th&gt;
&lt;th&gt;Weight&lt;/th&gt;
&lt;th&gt;Waist&lt;/th&gt;
&lt;th&gt;Z-Score&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody id="history-body"&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;script&gt;
    $(document).ready(function() {
        let uplot = null;
        // ABSI reference data table (age, males_n, males_mean, males_sd, males_smooth_mean, males_smooth_sd, females_n, females_mean, females_sd, females_smooth_mean, females_smooth_sd)
        // We use the smooth data for computing the z-score.
        // Source: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0039504
        var absiReferenceData = [
            [2, 320, 0.07778, 0.00312, 0.07890, 0.00384, 336, 0.07922, 0.00319, 0.08031, 0.00363],
            [3, 285, 0.07931, 0.00283, 0.07915, 0.00384, 237, 0.08000, 0.00303, 0.08016, 0.00366],
            [4, 257, 0.07932, 0.00300, 0.07937, 0.00383, 280, 0.08045, 0.00280, 0.08001, 0.00369],
            [5, 240, 0.08009, 0.00335, 0.07955, 0.00383, 265, 0.08085, 0.00327, 0.07985, 0.00372],
            [6, 249, 0.07989, 0.00362, 0.07964, 0.00382, 254, 0.08006, 0.00338, 0.07969, 0.00375],
            [7, 266, 0.07968, 0.00341, 0.07966, 0.00382, 269, 0.08013, 0.00333, 0.07952, 0.00378],
            [8, 278, 0.08063, 0.00415, 0.07958, 0.00382, 272, 0.08039, 0.00388, 0.07935, 0.00380],
            [9, 261, 0.08025, 0.00423, 0.07942, 0.00381, 259, 0.08016, 0.00370, 0.07917, 0.00383],
            [10, 263, 0.07969, 0.00408, 0.07917, 0.00381, 247, 0.07914, 0.00378, 0.07899, 0.00386],
            [11, 250, 0.07964, 0.00442, 0.07886, 0.00381, 285, 0.07934, 0.00400, 0.07881, 0.00389],
            [12, 439, 0.07953, 0.00438, 0.07849, 0.00380, 443, 0.07825, 0.00403, 0.07863, 0.00392],
            [13, 439, 0.07807, 0.00434, 0.07810, 0.00380, 462, 0.07807, 0.00439, 0.07846, 0.00395],
            [14, 408, 0.07712, 0.00436, 0.07772, 0.00380, 468, 0.07762, 0.00441, 0.07829, 0.00397],
            [15, 416, 0.07647, 0.00415, 0.07739, 0.00379, 377, 0.07701, 0.00391, 0.07814, 0.00400],
            [16, 461, 0.07583, 0.00379, 0.07716, 0.00379, 379, 0.07739, 0.00399, 0.07799, 0.00403],
            [17, 461, 0.07625, 0.00376, 0.07703, 0.00378, 391, 0.07714, 0.00394, 0.07787, 0.00406],
            [18, 406, 0.07665, 0.00361, 0.07702, 0.00378, 377, 0.07705, 0.00413, 0.07775, 0.00408],
            [19, 394, 0.07665, 0.00393, 0.07711, 0.00378, 332, 0.07743, 0.00419, 0.07765, 0.00411],
            [20, 120, 0.07715, 0.00410, 0.07728, 0.00377, 118, 0.07712, 0.00465, 0.07757, 0.00414],
            [21, 129, 0.07754, 0.00370, 0.07750, 0.00377, 105, 0.07786, 0.00415, 0.07750, 0.00416],
            [22, 118, 0.07861, 0.00452, 0.07777, 0.00377, 100, 0.07728, 0.00430, 0.07744, 0.00419],
            [23, 105, 0.07839, 0.00364, 0.07804, 0.00376, 100, 0.07726, 0.00463, 0.07740, 0.00422],
            [24, 95, 0.07794, 0.00363, 0.07831, 0.00376, 108, 0.07771, 0.00490, 0.07737, 0.00424],
            [25, 107, 0.07880, 0.00354, 0.07858, 0.00376, 90, 0.07699, 0.00407, 0.07735, 0.00427],
            [26, 121, 0.07895, 0.00381, 0.07882, 0.00375, 85, 0.07719, 0.00543, 0.07734, 0.00429],
            [27, 94, 0.07936, 0.00402, 0.07904, 0.00375, 75, 0.07756, 0.00450, 0.07735, 0.00432],
            [28, 106, 0.07999, 0.00387, 0.07922, 0.00374, 95, 0.07772, 0.00468, 0.07736, 0.00435],
            [29, 102, 0.07944, 0.00381, 0.07938, 0.00374, 99, 0.07744, 0.00402, 0.07739, 0.00437],
            [30, 98, 0.07949, 0.00370, 0.07951, 0.00374, 105, 0.07703, 0.00421, 0.07743, 0.00440],
            [31, 100, 0.07890, 0.00317, 0.07963, 0.00373, 96, 0.07714, 0.00478, 0.07747, 0.00442],
            [32, 114, 0.07922, 0.00374, 0.07975, 0.00373, 101, 0.07738, 0.00484, 0.07752, 0.00445],
            [33, 103, 0.08010, 0.00408, 0.07988, 0.00373, 77, 0.07786, 0.00474, 0.07759, 0.00447],
            [34, 105, 0.07977, 0.00367, 0.08000, 0.00372, 117, 0.07779, 0.00459, 0.07766, 0.00450],
            [35, 91, 0.08039, 0.00358, 0.08013, 0.00372, 108, 0.07756, 0.00452, 0.07773, 0.00452],
            [36, 99, 0.07966, 0.00397, 0.08027, 0.00371, 98, 0.07854, 0.00425, 0.07782, 0.00454],
            [37, 121, 0.07999, 0.00381, 0.08042, 0.00371, 112, 0.07815, 0.00396, 0.07790, 0.00457],
            [38, 84, 0.08031, 0.00367, 0.08057, 0.00371, 103, 0.07861, 0.00500, 0.07800, 0.00459],
            [39, 119, 0.08114, 0.00363, 0.08072, 0.00370, 100, 0.07779, 0.00480, 0.07810, 0.00462],
            [40, 123, 0.08089, 0.00354, 0.08087, 0.00370, 120, 0.07790, 0.00462, 0.07820, 0.00464],
            [41, 117, 0.08127, 0.00335, 0.08102, 0.00370, 127, 0.07892, 0.00403, 0.07831, 0.00466],
            [42, 129, 0.08122, 0.00347, 0.08117, 0.00369, 116, 0.07833, 0.00463, 0.07842, 0.00469],
            [43, 120, 0.08084, 0.00339, 0.08132, 0.00369, 109, 0.07882, 0.00493, 0.07854, 0.00471],
            [44, 123, 0.08110, 0.00327, 0.08148, 0.00368, 119, 0.07774, 0.00498, 0.07866, 0.00473],
            [45, 115, 0.08140, 0.00332, 0.08165, 0.00368, 124, 0.07860, 0.00462, 0.07879, 0.00476],
            [46, 120, 0.08272, 0.00426, 0.08183, 0.00368, 108, 0.07900, 0.00386, 0.07892, 0.00478],
            [47, 97, 0.08176, 0.00306, 0.08201, 0.00367, 113, 0.07916, 0.00477, 0.07905, 0.00480],
            [48, 80, 0.08119, 0.00323, 0.08221, 0.00367, 111, 0.07888, 0.00542, 0.07919, 0.00483],
            [49, 104, 0.08272, 0.00400, 0.08240, 0.00367, 91, 0.07978, 0.00464, 0.07933, 0.00485],
            [50, 101, 0.08322, 0.00333, 0.08260, 0.00366, 90, 0.07894, 0.00506, 0.07947, 0.00487],
            [51, 111, 0.08261, 0.00385, 0.08279, 0.00366, 108, 0.08039, 0.00436, 0.07962, 0.00489],
            [52, 84, 0.08281, 0.00360, 0.08297, 0.00365, 126, 0.08068, 0.00471, 0.07977, 0.00492],
            [53, 105, 0.08272, 0.00399, 0.08315, 0.00365, 90, 0.07941, 0.00420, 0.07992, 0.00494],
            [54, 101, 0.08324, 0.00356, 0.08334, 0.00365, 99, 0.08054, 0.00541, 0.08007, 0.00496],
            [55, 74, 0.08388, 0.00406, 0.08352, 0.00364, 76, 0.07872, 0.00498, 0.08023, 0.00498],
            [56, 74, 0.08321, 0.00386, 0.08369, 0.00364, 83, 0.08000, 0.00566, 0.08039, 0.00501],
            [57, 74, 0.08529, 0.00393, 0.08386, 0.00364, 74, 0.08025, 0.00504, 0.08055, 0.00503],
            [58, 62, 0.08374, 0.00344, 0.08403, 0.00363, 57, 0.08204, 0.00491, 0.08072, 0.00505],
            [59, 68, 0.08343, 0.00354, 0.08419, 0.00363, 58, 0.08038, 0.00481, 0.08088, 0.00507],
            [60, 136, 0.08392, 0.00354, 0.08436, 0.00362, 139, 0.08094, 0.00514, 0.08105, 0.00509],
            [61, 113, 0.08487, 0.00354, 0.08454, 0.00362, 117, 0.08183, 0.00478, 0.08122, 0.00511],
            [62, 104, 0.08455, 0.00348, 0.08471, 0.00362, 113, 0.08146, 0.00448, 0.08139, 0.00514],
            [63, 87, 0.08513, 0.00352, 0.08489, 0.00361, 115, 0.08226, 0.00471, 0.08156, 0.00516],
            [64, 94, 0.08489, 0.00275, 0.08506, 0.00361, 112, 0.08120, 0.00556, 0.08174, 0.00518],
            [65, 107, 0.08547, 0.00343, 0.08522, 0.00360, 109, 0.08148, 0.00604, 0.08191, 0.00520],
            [66, 115, 0.08583, 0.00343, 0.08537, 0.00360, 88, 0.08148, 0.00566, 0.08208, 0.00522],
            [67, 76, 0.08518, 0.00324, 0.08551, 0.00360, 97, 0.08283, 0.00486, 0.08226, 0.00524],
            [68, 100, 0.08565, 0.00298, 0.08565, 0.00359, 96, 0.08228, 0.00544, 0.08243, 0.00526],
            [69, 79, 0.08633, 0.00382, 0.08578, 0.00359, 81, 0.08209, 0.00528, 0.08261, 0.00528],
            [70, 119, 0.08534, 0.00387, 0.08591, 0.00359, 90, 0.08316, 0.00485, 0.08278, 0.00530],
            [71, 89, 0.08603, 0.00356, 0.08604, 0.00358, 83, 0.08394, 0.00501, 0.08296, 0.00533],
            [72, 94, 0.08635, 0.00364, 0.08616, 0.00358, 79, 0.08246, 0.00563, 0.08313, 0.00535],
            [73, 89, 0.08605, 0.00325, 0.08629, 0.00357, 82, 0.08495, 0.00495, 0.08330, 0.00537],
            [74, 71, 0.08648, 0.00387, 0.08641, 0.00357, 67, 0.08342, 0.00443, 0.08346, 0.00539],
            [75, 86, 0.08713, 0.00363, 0.08653, 0.00357, 72, 0.08276, 0.00449, 0.08363, 0.00541],
            [76, 65, 0.08671, 0.00313, 0.08665, 0.00356, 65, 0.08464, 0.00501, 0.08380, 0.00543],
            [77, 51, 0.08691, 0.00348, 0.08675, 0.00356, 67, 0.08539, 0.00500, 0.08396, 0.00545],
            [78, 74, 0.08592, 0.00383, 0.08685, 0.00355, 41, 0.08332, 0.00611, 0.08412, 0.00547],
            [79, 44, 0.08745, 0.00361, 0.08695, 0.00355, 49, 0.08376, 0.00585, 0.08428, 0.00549],
            [80, 72, 0.08759, 0.00384, 0.08705, 0.00355, 71, 0.08543, 0.00598, 0.08444, 0.00551],
            [81, 75, 0.08714, 0.00395, 0.08714, 0.00354, 82, 0.08406, 0.00567, 0.08460, 0.00553],
            [82, 55, 0.08713, 0.00370, 0.08723, 0.00354, 55, 0.08355, 0.00641, 0.08476, 0.00555],
            [83, 37, 0.08714, 0.00342, 0.08732, 0.00354, 53, 0.08542, 0.00611, 0.08492, 0.00557],
            [84, 44, 0.08763, 0.00385, 0.08742, 0.00353, 62, 0.08407, 0.00484, 0.08508, 0.00559],
            [85, 153, 0.08811, 0.00356, 0.08811, 0.00356, 196, 0.08533, 0.00528, 0.08533, 0.00528]
        ];

        // --- Calculation Functions ---
        function calculateBMI(weight, height) {
            if (weight &gt; 0 &amp;&amp; height &gt; 0) {
                var heightInMeters = height / 100;
                return weight / (heightInMeters * heightInMeters);
            }
            return 0;
        }

        function calculateABSI(waist, bmi, height) {
            if (waist &gt; 0 &amp;&amp; bmi &gt; 0 &amp;&amp; height &gt; 0) {
                var waistInMeters = waist / 100;
                var heightInMeters = height / 100;
                return waistInMeters / (Math.pow(bmi, 2/3) * Math.sqrt(heightInMeters));
            }
            return 0;
        }

        function calculateABSIZScore(absi, age, sex) {
            if (absi &lt;= 0 || !age || !sex) return null;
            var referenceRow = absiReferenceData.find(row =&gt; row[0] &gt;= age) || absiReferenceData[absiReferenceData.length - 1];
            var smoothedMean = (sex === 'male') ? referenceRow[4] : referenceRow[9];
            var smoothedSD = (sex === 'male') ? referenceRow[5] : referenceRow[10];
            return (absi - smoothedMean) / smoothedSD;
        }

        function calculateMortality(zscore) {
            // Relative risk of mortality. A return value of 1 means average risk. 0 means immortal. 2 means halving the remainder of your life expectancy.
            // Formula estimated from Figure 2. Mortality hazard by ABSI, BMI, and WC z score relative to age and sex specific normals.
            // Paper: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0039504
            if (zscore === null || isNaN(zscore) || zscore &lt; -2 || zscore &gt; 2) return null;
            const mortalityRisk = 1.23990173205088 + 0.304050819792456 * zscore - 0.324889223124355 * Math.cos(zscore);
            return mortalityRisk;
        }

        function calculateMortalityUL(zscore) {
            // The Upper Limit of the 95% confidence interval in the same Figure 2 as above.
            if (zscore === null || isNaN(zscore) || zscore &lt; -2 || zscore &gt; 2) return null;
            const mortalityRisk = 0.976204246427032 + 0.726312989689553*Math.sin(zscore) + 0.102480465800356*zscore**3 + 0.0508597655834035*zscore**4 + 0.559273454631366*zscore*Math.sin(zscore) - 0.347036585244453*zscore - 0.249935810351857*zscore**2;
            return mortalityRisk;
        }

        function calculateMortalityLL(zscore) {
            // The Lower Limit of the 95% confidence interval in the same Figure 2 as above.
            if (zscore === null || isNaN(zscore) || zscore &lt; -2 || zscore &gt; 2) return null;
            const mortalityRisk =  0.845493223288709 + 0.305277495796711*zscore + 0.817718041642729*zscore**2- 0.0184562215170039*zscore**3 - 0.0379612509925043*zscore**4 - 4.24441775058845*Math.sin(0.155829240405734*zscore**2);
            return mortalityRisk;
        }

        function getLifeExpectancyAtCurrentAge(mortality) {
            // Get values from input elements
            const lifexBirth = parseFloat(document.getElementById("lifex_birth").value);
            const currentAge = parseFloat(document.getElementById("age").value);
            const sex = document.getElementById("sex").value;

            // Validate inputs
            if (isNaN(lifexBirth) || isNaN(currentAge)) {
                return '-';
            }

            // Approximation from the life tables of a few countries.
            const remainingYears = 1.14003135512833*lifexBirth + 4.90479023295182e-5*currentAge**3 - 11.2322566591482 - 0.068965156074824*currentAge - 0.010304406352995*lifexBirth*currentAge - 0.00379983980859228*currentAge**2

            let adjustmentFactor = 1.0/mortality;
            if (sex === "female") adjustmentFactor *= 1.036885246;
            if (sex === "male") adjustmentFactor *= 0.9631147541;

            const lifeExpectancyAtCurrentAge = currentAge + (remainingYears * adjustmentFactor);

            return Math.round(lifeExpectancyAtCurrentAge * 10) / 10; // Round to 1 decimal place
        }

        function updateCalculations() {
            var height = parseFloat($('#height').val()) || 0;
            var weight = parseFloat($('#weight').val()) || 0;
            var waist = parseFloat($('#waist').val()) || 0;
            var age = parseInt($('#age').val()) || 0;
            var sex = $('#sex').val();

            var bmi = calculateBMI(weight, height);
            $('#bmi-result').text(bmi &gt; 0 ? bmi.toFixed(2) : '-');

            var absi = calculateABSI(waist, bmi, height);
            $('#absi-result').text(absi &gt; 0 ? absi.toFixed(5) : '-');

            var zScore = calculateABSIZScore(absi, age, sex);
            $('#zscore-result').text(zScore !== null ? zScore.toFixed(3) : '-');

            var mortality = calculateMortality(zScore);
            var mortalityLL = calculateMortalityLL(zScore);
            var mortalityUL = calculateMortalityUL(zScore);
            $('#mortality-result').text(mortality !== null ? mortality.toFixed(3) + ' (95% CI ' + mortalityLL.toFixed(3) + '-' + mortalityUL.toFixed(3) + ')' : '-');

            saveData('absi_lifex_birth', parseFloat($('#lifex_birth').val()));
            var aod = getLifeExpectancyAtCurrentAge(mortality);
            var aodLL = getLifeExpectancyAtCurrentAge(mortalityUL);
            var aodUL = getLifeExpectancyAtCurrentAge(mortalityLL);
            $('#age-at-death-result').text(mortality !== null ? aod + ' (95% CI ' + aodLL + '-' + aodUL + ')' : '-');
        }

        // --- LocalStorage Management ---
        function saveData(name, value) {
            localStorage.setItem(name, value)
        }

        function loadData(name) {
            return localStorage.getItem(name);
        }

        // --- History Management ---
        function loadHistory(historyArray) {
            var history = historyArray || JSON.parse(loadData('absiHistory')) || [];
            var historyBody = $('#history-body');
            historyBody.empty();

            history.forEach(function(entry, index) {
                var row = `&lt;tr&gt;
                    &lt;td&gt;${entry.datetime}&lt;/td&gt;
                    &lt;td&gt;${entry.sex}&lt;/td&gt;
                    &lt;td&gt;${entry.age}&lt;/td&gt;
                    &lt;td&gt;${entry.height}&lt;/td&gt;
                    &lt;td&gt;${entry.weight}&lt;/td&gt;
                    &lt;td&gt;${entry.waist}&lt;/td&gt;
                    &lt;td&gt;${entry.zscore}&lt;/td&gt;
                &lt;/tr&gt;`;
                historyBody.append(row);
            });
            renderChart(history);
        }

        function loadEntryIntoForm(entry) {
            if (!entry) return;
            $('#sex').val(entry.sex);
            $('#age').val(entry.age);
            $('#height').val(entry.height);
            $('#weight').val(entry.weight);
            $('#waist').val(entry.waist);
        }

        $('#save-entry').on('click', function() {
            var bmi = $('#bmi-result').text();
            var absi = $('#absi-result').text();
            var zscore = $('#zscore-result').text();

            if ($('#sex').val() &amp;&amp; $('#age').val() &amp;&amp; $('#height').val() &amp;&amp; $('#weight').val() &amp;&amp; $('#waist').val() &amp;&amp; bmi !== '-' &amp;&amp; absi !== '-' &amp;&amp; zscore !== '-') {
                var history = JSON.parse(loadData('absiHistory')) || [];

                const now = new Date();
                const pad = (n) =&gt; n.toString().padStart(2, '0');
                const datetime = `${now.getFullYear()}-${pad(now.getMonth() + 1)}-${pad(now.getDate())} ${pad(now.getHours())}:${pad(now.getMinutes())}:${pad(now.getSeconds())}`;

                var newEntry = {
                    datetime: datetime,
                    sex: $('#sex').val(),
                    age: $('#age').val(),
                    height: $('#height').val(),
                    weight: $('#weight').val(),
                    waist: $('#waist').val(),
                    bmi: bmi,
                    absi: absi,
                    zscore: zscore
                };

                history.unshift(newEntry);
                saveData('absiHistory', JSON.stringify(history));
                loadHistory(history);
            } else {
                alert('Please fill in all input fields and ensure results are calculated before saving.');
            }
        });

        $('#clear-history').on('click', function() {
            if (confirm('Are you sure you want to clear all history?')) {
                localStorage.removeItem('absiHistory');
                loadHistory([]); // Pass empty array to clear UI
            }
        });

        // --- Import/Export Functions ---

        $('#export-history').on('click', function() {
            var history = JSON.parse(loadData('absiHistory')) || [];
            if (history.length === 0) {
                alert('No history to export.');
                return;
            }

            const header = Object.keys(history[0]).join('\t');
            const rows = history.map(entry =&gt; Object.values(entry).join('\t')).join('\n');
            const tsvContent = `${header}\n${rows}`;

            const blob = new Blob([tsvContent], { type: 'text/tab-separated-values;charset=utf-8,' });
            const url = URL.createObjectURL(blob);
            const a = document.createElement('a');
            a.href = url;
            a.download = 'absi_history.tsv';
            document.body.appendChild(a);
            a.click();
            document.body.removeChild(a);
            URL.revokeObjectURL(url);
        });

        $('#import-history').on('click', function() {
            $('#import-file').click();
        });

        // Handle TSV file import
        $('#import-file').on('change', function(e) {
            const file = e.target.files[0];
            if (!file) {
                return;
            }

            const reader = new FileReader();
            reader.onload = function(event) {
                const tsv = event.target.result;
                const lines = tsv.split('\n').filter(line =&gt; line.trim() !== ''); // Filter out empty lines
                if (lines.length &lt; 2) {
                    alert('Invalid TSV file: Not enough data rows.');
                    return;
                }

                const header = lines[0].split('\t').map(h =&gt; h.trim());
                const dataRows = lines.slice(1);

                // Define the minimum required headers for recalculation
                const requiredHeaders = ['sex', 'age', 'height', 'weight', 'waist'];
                const hasRequiredHeaders = requiredHeaders.every(rh =&gt; header.includes(rh));

                if (!hasRequiredHeaders) {
                    alert(`TSV file must contain all of the following columns: ${requiredHeaders.join(', ')} for recalculation.`);
                    return;
                }

                const importedHistory = dataRows.map(row =&gt; {
                    const values = row.split('\t').map(v =&gt; v.trim());
                    let entry = {};
                    header.forEach((h, i) =&gt; {
                        entry[h] = values[i];
                    });

                    const sex = entry.sex;
                    const age = parseFloat(entry.age);
                    const height = parseFloat(entry.height);
                    const weight = parseFloat(entry.weight);
                    const waist = parseFloat(entry.waist);

                    // Recalculate BMI, ABSI, and Z-Score
                    if (!isNaN(height) &amp;&amp; !isNaN(weight) &amp;&amp; !isNaN(waist) &amp;&amp; !isNaN(age)) {
                        const bmi = calculateBMI(weight, height);
                        const absi = calculateABSI(waist, bmi, height);
                        const zscore = calculateABSIZScore(absi, age, sex);

                        entry.bmi = bmi.toFixed(2);
                        entry.absi = absi.toFixed(5);
                        entry.zscore = zscore !== null ? zscore.toFixed(3) : '-';
                    } else {
                        entry.bmi = '-';
                        entry.absi = '-';
                        entry.zscore = '-';
                    }

                    if (!entry.datetime) {
                         const now = new Date();
                         const pad = (n) =&gt; n.toString().padStart(2, '0');
                         entry.datetime = `${now.getFullYear()}-${pad(now.getMonth() + 1)}-${pad(now.getDate())} ${pad(now.getHours())}:${pad(now.getMinutes())}:${pad(now.getSeconds())}`;
                    }

                    return entry;
                });

                importedHistory.sort((a, b) =&gt; new Date(b.datetime) - new Date(a.datetime));

                loadHistory(importedHistory);
                saveData('absiHistory', JSON.stringify(importedHistory));
                renderChart(importedHistory);

                alert('TSV data imported and recalculated successfully!');
            };
            reader.readAsText(file);
        });


        // --- Charting ---
        function calculateEWMA(zscores, lambda = 1/7) {
            const ewma = [];
            let current = null;
            for (const z of zscores) {
                if (current === null) {
                    current = z;
                } else {
                    current = lambda * z + (1 - lambda) * current;
                }
                ewma.push(current);
            }
            return ewma;
        }


        function renderChart(history) {
            const chartContainer = $('#absi-chart');
            chartContainer.empty();

            const sortedHistory = [...history].reverse();
            const validEntries = sortedHistory.filter(e =&gt; e.zscore &amp;&amp; e.zscore !== '-');

            if (validEntries.length &lt; 1) {
                chartContainer.text('Add at least one history entry to see the chart.');
                if (uplot) {
                    uplot.destroy();
                    uplot = null;
                }
                return;
            }

            // Calculate EWMA for z-scores
            const zscores = validEntries.map(e =&gt; parseFloat(e.zscore));
            const ewma = calculateEWMA(zscores, 1/7);

            // Get timestamps
            const timestamps = validEntries.map(e =&gt; new Date(e.datetime).getTime() / 1000);

            // Extend X-axis by 1 week after last data point
            const lastTimestamp = timestamps[timestamps.length - 1];
            const extendedMax = lastTimestamp + (7 * 24 * 60 * 60); // Add 7 days in seconds

            const data = [
                timestamps,
                zscores,
                ewma
            ];

            let opts = {
                title: "ABSI Z-Score History",
                width: chartContainer.width(),
                height: 350,
                scales: {
                    x: {
                        // Extend x-axis range by 1 week
                        min: Math.min(...timestamps),
                        max: extendedMax
                    }
                },
                series: [
                    {},
                    {
                        label: "Z-Score",
                        stroke: "none",
                        points: { 
                            show: true,
                            fill: "indigo",
                            size: 5
                        }
                    },
                    {
                        label: "Z-Score (average)",
                        stroke: "indigo",
                        width: 2,
                        points: { show: false }
                    }
                ],
                axes: [
                    {
                        label: "Date",
                        value: (u, ts) =&gt; {
                            const date = new Date(ts * 1000);
                            return date.toLocaleDateString();
                        }
                    },
                    {
                        label: "Z-Score",
                    }
                ]
            };

            if (uplot) uplot.destroy();
            uplot = new uPlot(opts, data, chartContainer[0]);
        }

        // --- INITIAL PAGE LOAD ---
        const initialHistory = JSON.parse(loadData('absiHistory')) || [];
        if (initialHistory.length &gt; 0) {
            loadEntryIntoForm(initialHistory[0]);
        }

        // The life expectancy at birth in Romania in 2023 is 77. That is why I chose that value. I live in Romania.
        const initialLifex = loadData('absi_lifex_birth') || 77;
        $('#lifex_birth').val(initialLifex);

        updateCalculations();
        loadHistory(initialHistory);

        $('#sex, #age, #lifex_birth, #height, #weight, #waist').on('input change', updateCalculations);

        $(window).on('resize', function() {
            const currentHistory = JSON.parse(loadData('absiHistory')) || [];
            if(uplot) {
               renderChart(currentHistory);
            }
        });
    });
&lt;/script&gt;</content><category term="English"></category><category term="Health"></category></entry><entry><title>Prețul apartamentelor în România</title><link href="https://danuker.go.ro/pretul-apartamentelor-in-romania.html" rel="alternate"></link><published>2022-05-04T23:30:00+03:00</published><updated>2022-05-04T23:30:00+03:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2022-05-04:/pretul-apartamentelor-in-romania.html</id><summary type="html">&lt;p&gt;Sunt în căutarea unui apartament (dar nu mă grăbesc), și prin urmare încerc să învăț cum se evaluează unul.&lt;/p&gt;
&lt;p&gt;Mă întrebam cum afectează poluarea prețul apartamentelor.&lt;/p&gt;
&lt;p&gt;Am intrat pe &lt;a href="https://www.calitateaer.ro/public/monitoring-page/reports-reports-page/?__locale=ro"&gt;calitateaer.ro&lt;/a&gt;
și am reușit să conving sistemul să-mi dea rapoarte cu poluarea cu particule până la 10 microni (PM10 exprimat …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Sunt în căutarea unui apartament (dar nu mă grăbesc), și prin urmare încerc să învăț cum se evaluează unul.&lt;/p&gt;
&lt;p&gt;Mă întrebam cum afectează poluarea prețul apartamentelor.&lt;/p&gt;
&lt;p&gt;Am intrat pe &lt;a href="https://www.calitateaer.ro/public/monitoring-page/reports-reports-page/?__locale=ro"&gt;calitateaer.ro&lt;/a&gt;
și am reușit să conving sistemul să-mi dea rapoarte cu poluarea cu particule până la 10 microni (PM10 exprimat în micrograme pe metru cub).&lt;/p&gt;
&lt;p&gt;Am luat și &lt;a href="https://www.imobiliare.ro/indicele-imobiliare-ro"&gt;indicele imobiliare.ro&lt;/a&gt; pentru fiecare oraș disponibil,
și am făcut un grafic.&lt;/p&gt;
&lt;p&gt;Sigur poluarea ar scădea atractivitatea unei zone, prin urmare, ar reduce prețul, nu?&lt;/p&gt;
&lt;p&gt;Ei bine, pentru aceste orașe, e foarte corelată treaba, și pozitiv, nu oricum:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Coeficient de determinare 0.94" class="img-fluid" src="images/orase-vs-poluare.svg"/&gt;&lt;/p&gt;
&lt;table class="table-striped table"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Oraș&lt;/th&gt;
&lt;th&gt;90% Percentile PM10 µg/m³&lt;/th&gt;
&lt;th&gt;EUR/m2&lt;/th&gt;
&lt;th&gt;EUR/m2 est.&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Timișoara&lt;/td&gt;
&lt;td&gt;45.01&lt;/td&gt;
&lt;td&gt;1443&lt;/td&gt;
&lt;td&gt;1464.0408&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Constanța&lt;/td&gt;
&lt;td&gt;38.49&lt;/td&gt;
&lt;td&gt;1475&lt;/td&gt;
&lt;td&gt;1346.1592&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Brașov&lt;/td&gt;
&lt;td&gt;55.35&lt;/td&gt;
&lt;td&gt;1560&lt;/td&gt;
&lt;td&gt;1650.988&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;București&lt;/td&gt;
&lt;td&gt;62.05&lt;/td&gt;
&lt;td&gt;1692&lt;/td&gt;
&lt;td&gt;1772.124&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cluj-Napoca&lt;/td&gt;
&lt;td&gt;93.77&lt;/td&gt;
&lt;td&gt;2411&lt;/td&gt;
&lt;td&gt;2345.6216&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Iată și câteva predicții pentru orașe la care nu cunosc prețul.&lt;/p&gt;
&lt;table class="table-striped table"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Oraș&lt;/th&gt;
&lt;th&gt;90% Percentile PM10 µg/m³&lt;/th&gt;
&lt;th&gt;EUR/m2 est.&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Sibiu&lt;/td&gt;
&lt;td&gt;48.04&lt;/td&gt;
&lt;td&gt;1518.8232&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Oradea&lt;/td&gt;
&lt;td&gt;55.93&lt;/td&gt;
&lt;td&gt;1661.4744&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Craiova&lt;/td&gt;
&lt;td&gt;70.68&lt;/td&gt;
&lt;td&gt;1928.1544&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Iași&lt;/td&gt;
&lt;td&gt;105.22&lt;/td&gt;
&lt;td&gt;2552.6376&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Clar, Iașiul nu are cum să depășească Clujul.&lt;/p&gt;
&lt;p&gt;Ca de obicei, corelarea nu înseamnă cauzare - aici, cel mai probabil, prețul și poluarea au fost cauzate de alți factori, nu unul de altul.&lt;/p&gt;
&lt;hr/&gt;
&lt;h1 id="piata-de-apartamente-versus-bursa-de-actiuni"&gt;&lt;a class="toclink" href="#piata-de-apartamente-versus-bursa-de-actiuni"&gt;Piața de apartamente versus bursa de acțiuni&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Actualizare luni, 2022-11-14&lt;/p&gt;
&lt;p&gt;Am observat că e destul de corelat prețul apartamentelor cu indicele bursei de acțiuni.&lt;/p&gt;
&lt;p&gt;"La ochi", imobiliarele seamănă cu media geometrică mobilă pe un an ale indicelui BET.&lt;/p&gt;
&lt;p&gt;Nu am folosit algoritmi complicați, am ales doar valorile de 1.6 metri pătrați și durata de un an "la ochi", pentru apartamentele din Timișoara, și o ajustare similară pentru datele mai vechi din București, de pe &lt;a href="https://basmeimobiliare.wordpress.com/2012/11/05/evolutia-preturilor-apartamentelor-in-lei-2000-2012/"&gt;Basme Imobiliare&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Aici e graficul cu prețul în Euro versus an calendaristic.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Grafic cu indicele BET versus prețul apartamentelor pe metru pătrat din 2008 până în prezent" class="img-fluid" src="images/BET-vs-imobiliare.png"/&gt;&lt;/p&gt;
&lt;p&gt;Coeficientul de corelare dintre BET și apartamente e de 0,68, iar între media mobilă și apartamente e de 0,92. &lt;/p&gt;
&lt;p&gt;Această corelare ar putea fi dată de doi factori: lichiditatea disponibilă pe piață (dictată de dobânzi și condiții de creditare), și apetitul oamenilor de a cheltui bani (viteza de circulație).&lt;/p&gt;
&lt;p&gt;Cum ambii factori afectează atât imobiliarele cât și firmele, nu e surprinzător să semene prețul.&lt;/p&gt;
&lt;p&gt;Din păcate, cred că piața se mișcă împotriva mea, care doresc să cumpăr. Dacă nu va fi vreo criză în curând, pot să aștept mult și bine.&lt;/p&gt;
&lt;p&gt;Dar voi mai analiza și alte lucruri mai întâi.&lt;/p&gt;</content><category term="Română"></category><category term="Housing"></category><category term="Pollution"></category><category term="Economy"></category><category term="Romania"></category></entry><entry><title>On Saudi Arabia</title><link href="https://danuker.go.ro/on-saudi-arabia.html" rel="alternate"></link><published>2021-10-07T00:10:00+03:00</published><updated>2021-10-07T00:10:00+03:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2021-10-07:/on-saudi-arabia.html</id><summary type="html">&lt;p&gt;I have recently seen &lt;a href="https://www.youtube.com/watch?v=V16GdzRvhRU"&gt;a video&lt;/a&gt; by Wendover Productions about the Kingdom of Saudi Arabia.&lt;/p&gt;
&lt;p&gt;It presents that the Kingdom needs foreign investment to be able to thrive past &lt;a href="https://en.wikipedia.org/wiki/Peak_oil"&gt;peak oil&lt;/a&gt;.
But the leaders &lt;a href="https://www.theguardian.com/commentisfree/2018/nov/02/jamal-khashoggi-justice-unite-hatice-cengiz"&gt;take extreme offense and kill people&lt;/a&gt; based on what they write about the Kingdom. &lt;/p&gt;
&lt;p&gt;So, yours …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I have recently seen &lt;a href="https://www.youtube.com/watch?v=V16GdzRvhRU"&gt;a video&lt;/a&gt; by Wendover Productions about the Kingdom of Saudi Arabia.&lt;/p&gt;
&lt;p&gt;It presents that the Kingdom needs foreign investment to be able to thrive past &lt;a href="https://en.wikipedia.org/wiki/Peak_oil"&gt;peak oil&lt;/a&gt;.
But the leaders &lt;a href="https://www.theguardian.com/commentisfree/2018/nov/02/jamal-khashoggi-justice-unite-hatice-cengiz"&gt;take extreme offense and kill people&lt;/a&gt; based on what they write about the Kingdom. &lt;/p&gt;
&lt;p&gt;So, yours truly is fanning the flame.&lt;/p&gt;
&lt;p&gt;After this video, I think the most effective steps in Saudi Arabia gaining international trust would be:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Leaders admitting they are only human, and make mistakes sometimes. Making a mistake is not a problem, but persisting in failure with no prospect of improvement is a problem.&lt;/li&gt;
&lt;li&gt;Do not execute people. Aside from the chilling effects this has on tourism and investment, do you want your people to live in fear?&lt;/li&gt;
&lt;li&gt;Ensure equal rights for women, and people of other and no creeds. I will not come to Saudi Arabia with such severe punishments based on religion.&lt;/li&gt;
&lt;li&gt;Let press write whatever it wants. If the press insults the Kingdom, it proves the press is cheap and childish, and it will fall into oblivion by itself. But if the press is &lt;a href="https://rsf.org/en/saudi-arabia"&gt;saying the truth&lt;/a&gt;, perhaps listen to it.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I hope that if any Saudi official reads this, they take it seriously, because the wealth of a nation depends on it. With great power comes great responsibility. &lt;/p&gt;</content><category term="English"></category><category term="Economy"></category><category term="Politics"></category><category term="Freedom of speech"></category><category term="Justice"></category><category term="Saudi Arabia"></category></entry><entry><title>On surveillance through face recognition</title><link href="https://danuker.go.ro/on-surveillance-through-face-recognition.html" rel="alternate"></link><published>2021-06-13T18:05:00+03:00</published><updated>2021-06-13T18:05:00+03:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2021-06-13:/on-surveillance-through-face-recognition.html</id><summary type="html">&lt;p&gt;&lt;a href="https://eu.freep.com/story/news/local/michigan/detroit/2020/06/26/facial-recognition-wrongful-arrest-detroit-police/3265943001/"&gt;A year ago&lt;/a&gt;, a &lt;a href="https://www.cjr.org/analysis/capital-b-black-styleguide.php"&gt;Black&lt;/a&gt; man was arrested for theft. The evidence was crummy face-recognition coupled with a security guard's ID who had not seen the person, only a security tape.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.aclu.org/news/privacy-technology/the-computer-got-it-wrong-why-were-taking-the-detroit-police-to-court-over-a-faulty-face-recognition-match/"&gt;A few months ago&lt;/a&gt;, some civil rights organizations filed a lawsuit against the Detroit Police Department for the wrongful …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;a href="https://eu.freep.com/story/news/local/michigan/detroit/2020/06/26/facial-recognition-wrongful-arrest-detroit-police/3265943001/"&gt;A year ago&lt;/a&gt;, a &lt;a href="https://www.cjr.org/analysis/capital-b-black-styleguide.php"&gt;Black&lt;/a&gt; man was arrested for theft. The evidence was crummy face-recognition coupled with a security guard's ID who had not seen the person, only a security tape.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.aclu.org/news/privacy-technology/the-computer-got-it-wrong-why-were-taking-the-detroit-police-to-court-over-a-faulty-face-recognition-match/"&gt;A few months ago&lt;/a&gt;, some civil rights organizations filed a lawsuit against the Detroit Police Department for the wrongful arrest.&lt;/p&gt;
&lt;p&gt;I want to offer my insight into the issue of arrests based on face recognition.&lt;/p&gt;
&lt;h1 id="a-game-of-numbers"&gt;&lt;a class="toclink" href="#a-game-of-numbers"&gt;A game of numbers&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Suppose the face recognition system has a one-in-a-million FPR (false positive rate).&lt;/p&gt;
&lt;p&gt;Let's also say it has 100% TPR (true positive rate, or "100% recall" - meaning if the guilty person is in the dataset, they will be matched also).&lt;/p&gt;
&lt;p&gt;If you search for matches through the 1M faces, and the suspect is among those records, you get on average 1 false positive match, and 1 true positive.&lt;/p&gt;
&lt;p&gt;So the people you are arresting only have a 1 in 2 chance of being guilty (though to be completely fair, the police would know something's up if it gets two matches, but here it was apparently just one).&lt;/p&gt;
&lt;h1 id="bigger-numbers"&gt;&lt;a class="toclink" href="#bigger-numbers"&gt;Bigger numbers&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;If you scale this up ("&lt;a href="https://www.nytimes.com/2019/07/08/us/detroit-facial-recognition-cameras.html"&gt;50 million driver’s license photographs and mug shots contained in a Michigan police database&lt;/a&gt;"), you get roughly &lt;strong&gt;50 false positives, and maybe one true positive, if it's in the data.&lt;/strong&gt; But if the guilty person is not in the dataset, the police only get the false positives.&lt;/p&gt;
&lt;p&gt;To be fair, usually you can restrict the suspect pool somehow else. But here, the arrest was &lt;strong&gt;based on&lt;/strong&gt; facial recognition.&lt;/p&gt;
&lt;h1 id="benefit-of-the-doubt"&gt;&lt;a class="toclink" href="#benefit-of-the-doubt"&gt;Benefit of the doubt&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;The Detroit Police themselves admit a misidentification rate of &lt;a href="https://arstechnica.com/tech-policy/2020/06/detroit-police-chief-admits-facial-recognition-is-wrong-96-of-the-time/"&gt;96%&lt;/a&gt; - which means the false-positive-to-true-positive ratio is not the 50 we guessed above, but 96/(100-96) = 24.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.dataworksplus.com/faceplus.html"&gt;The tech supplier does not mention the error rate of their product&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;However, &lt;a href="https://web.archive.org/web/20210611140250/https://nvlpubs.nist.gov/nistpubs/ir/2019/NIST.IR.8280.pdf"&gt;NIST ran some tests&lt;/a&gt; in 2019, which are no longer available on the NIST website, but fortunately they are on archive.org (&lt;a href="https://web.archive.org/web/20210611140250/https://nvlpubs.nist.gov/nistpubs/ir/2019/NIST.IR.8280.pdf"&gt;linked&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;(By the way, I find it suspicious that NIST removed this relevant study at a time when this trial begins. In case archive.org deletes it, you can also download it &lt;a href="NIST.IR.8280.pdf"&gt;here&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;They made roughly 195 billion comparisons between known-differrent people. The False Match Rate (same as our FPR) of algorithms ranges between 1e-6 to 2e-4 (5th to 95th percentiles respectively), or from one-in-a-million to 2-in-10-thousand. This means for each million of comparisons between random people, the algorithms flag about 1 to 200 as false matches.&lt;/p&gt;
&lt;p&gt;So, checking a single person against Detroit's 50M database, would yield somewhere between 50 matches to 10k matches. Giving them the benefit of the doubt, and assuming the suspect is indeed in the dataset, that would mean a false-positive-to-true-positive ratio between 50 and 10000.&lt;/p&gt;
&lt;p&gt;The value of 24 claimed by the police lies outside this interval, which means it is less than 5% likely that they are telling the truth. But let's assume they do, since technology improves year by year.&lt;/p&gt;
&lt;h1 id="more-accurate-numbers-race"&gt;&lt;a class="toclink" href="#more-accurate-numbers-race"&gt;More accurate numbers: Race&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Fortunately, the NIST report breaks down the false-match-rate by country. On page 42 of &lt;a href="https://web.archive.org/web/20210611140250/https://nvlpubs.nist.gov/nistpubs/ir/2019/NIST.IR.8280.pdf"&gt;the report&lt;/a&gt; shows that while the false match rate within E. Europe is at least 1e-6, that for men within W. Africa is at least 7.5e-6, which is 7.5 times worse. For women it's much worse (&amp;gt;10e-6 vs. 1e-6).&lt;/p&gt;
&lt;p&gt;This makes it likely that Black people in the US suffer more false positives (if not 7.5 times more), and seeing that &lt;a href="https://arstechnica.com/tech-policy/2020/06/detroit-police-chief-admits-facial-recognition-is-wrong-96-of-the-time/"&gt;"68 out of 70 facial recognition searches were done on Black suspects"&lt;/a&gt;, this casts further doubt on their claimed 4% success rate.&lt;/p&gt;
&lt;h1 id="conclusion"&gt;&lt;a class="toclink" href="#conclusion"&gt;Conclusion&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;The abysmal 4% success rate that Detroit Police claim is very optimistic, even putting into question the cases successfully indicted.&lt;/p&gt;
&lt;p&gt;Even if it were correct, it would mean a typical search in their database matches 24 innocent people for every legitimate match, and has very limited statistical power, due to the large datasets.&lt;/p&gt;
&lt;p&gt;In addition, eyewitness identification uses the same features as the automated one (namely, the face). As such, it is unfit for use as corroboration, as was done in this case.&lt;/p&gt;
&lt;p&gt;I will refer to &lt;a href="https://en.wikipedia.org/wiki/Blackstone%27s_ratio"&gt;Blackstone's ratio&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It is better that ten guilty persons escape than that one innocent suffer.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The implied performance of one guilty conviction to 24 innocents suffering is far short of Blackstone's ratio (which is itself a minimum; the ideal ratio may be even higher).&lt;/p&gt;
&lt;p&gt;Normalizing, we'd get 1/24th of a guilty conviction for every innocent suffering, which is 1/240th of Blackstone's ratio.&lt;/p&gt;
&lt;p&gt;As such, a face recognition match could be used as circumstantial evidence at best.&lt;/p&gt;</content><category term="English"></category><category term="Justice"></category><category term="Tech"></category><category term="Privacy"></category><category term="Politics"></category></entry><entry><title>Indice preț sandwich 2021</title><link href="https://danuker.go.ro/indice-pret-sandwich-2021.html" rel="alternate"></link><published>2021-01-06T23:30:00+02:00</published><updated>2021-01-06T23:30:00+02:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2021-01-06:/indice-pret-sandwich-2021.html</id><summary type="html">&lt;p&gt;Acum aproape 3 ani am postat despre &lt;a href="https://autoencoder.blogspot.com/2018/02/the-cost-of-sandwich-2017-updated.html"&gt;prețul unui sandwich&lt;/a&gt;. Cum am auzit la știri recent că &lt;a href="https://www.digi24.ro/stiri/economie/agricultura/vor-urma-scumpiri-in-lant-dupa-dezastrul-din-agricultura-fermier-am-cultivat-grau-si-porumb-productia-a-fost-zero-1427632"&gt;s-au scumpit alimentele&lt;/a&gt;, am decis să verific prin a actualiza acest index.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Sandwich pic" class="img-fluid" src="images/sandwich.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;Azi nu am găsit în magazin pâine Pave de 500g; aveau doar la 1kg, cu 4.40 RON. Am găsit și …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Acum aproape 3 ani am postat despre &lt;a href="https://autoencoder.blogspot.com/2018/02/the-cost-of-sandwich-2017-updated.html"&gt;prețul unui sandwich&lt;/a&gt;. Cum am auzit la știri recent că &lt;a href="https://www.digi24.ro/stiri/economie/agricultura/vor-urma-scumpiri-in-lant-dupa-dezastrul-din-agricultura-fermier-am-cultivat-grau-si-porumb-productia-a-fost-zero-1427632"&gt;s-au scumpit alimentele&lt;/a&gt;, am decis să verific prin a actualiza acest index.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Sandwich pic" class="img-fluid" src="images/sandwich.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;Azi nu am găsit în magazin pâine Pave de 500g; aveau doar la 1kg, cu 4.40 RON. Am găsit și o reducere la ketchup Heinz, 500g costă 6.95 RON.&lt;/p&gt;
&lt;p&gt;&lt;a href="sandwich-cost.ods"&gt;Aici&lt;/a&gt; sunt tabelele în format LibreOffice.&lt;/p&gt;
&lt;table class="table-striped table"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Auchan Iulius Mall Cluj-Napoca: cost pentru un sandwich&lt;/th&gt;
&lt;th&gt;2013-03-31&lt;/th&gt;
&lt;th&gt;2018-02-02&lt;/th&gt;
&lt;th&gt;2021-01-06&lt;/th&gt;
&lt;th&gt;Factor inflație anual 2018 vs. 2021&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Sissi șuncă de pui 650g&lt;/td&gt;
&lt;td&gt;1.2353&lt;/td&gt;
&lt;td&gt;1.3706&lt;/td&gt;
&lt;td&gt;1.5529&lt;/td&gt;
&lt;td&gt;1.0436&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Delaco Rucăr Special 350g (2013) sau Gordon Rucăr 500g (ceilalți ani)&lt;/td&gt;
&lt;td&gt;0.5&lt;/td&gt;
&lt;td&gt;0.7088&lt;/td&gt;
&lt;td&gt;0.7263&lt;/td&gt;
&lt;td&gt;1.0084&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gordon cremă de unt cu mărar 125g&lt;/td&gt;
&lt;td&gt;0.4286&lt;/td&gt;
&lt;td&gt;0.4643&lt;/td&gt;
&lt;td&gt;0.4857&lt;/td&gt;
&lt;td&gt;1.0155&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Heinz 500ml ketchup&lt;/td&gt;
&lt;td&gt;0.3625&lt;/td&gt;
&lt;td&gt;0.3925&lt;/td&gt;
&lt;td&gt;0.3475&lt;/td&gt;
&lt;td&gt;0.9592&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Salată verde (338g în 2021)&lt;/td&gt;
&lt;td&gt;0.14&lt;/td&gt;
&lt;td&gt;0.1295&lt;/td&gt;
&lt;td&gt;0.1195&lt;/td&gt;
&lt;td&gt;0.9729&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Auchan Pave pâine albă (1kg în 2021, 500g ceilalți ani)&lt;/td&gt;
&lt;td&gt;0.125&lt;/td&gt;
&lt;td&gt;0.1417&lt;/td&gt;
&lt;td&gt;0.1833&lt;/td&gt;
&lt;td&gt;1.0921&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2.7914&lt;/td&gt;
&lt;td&gt;3.2074&lt;/td&gt;
&lt;td&gt;3.4152&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1.0401&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img alt="Istoricul prețului ingredientelor" class="img-fluid" src="images/ingrediente-history.png"/&gt;&lt;/p&gt;
&lt;p&gt;Pâinea și șunca s-au scumpit, într-adevăr, de acum aproape 3 ani, cu 9.2% respectiv 4.4% anual în medie. Dar celelalte ingrediente nu s-au schimbat semnificativ - am prins ketchupul la reducere, s-a ieftinit cu echivalentul a 4% anual.&lt;/p&gt;
&lt;p&gt;Calculul inflației anuale medii poate fi văzut în fila &lt;code&gt;2021-01-06 Auchan&lt;/code&gt; a &lt;a href="sandwich-cost.ods"&gt;spreadsheet-ului ODS&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Inflația prețului total al unui astfel de sandwich a fost de circa 2.17% anual în medie. Asta nu e atât de grav cât cei 30% cu cât s-a scumpit uleiul de floarea soarelui în ultimele două luni, &lt;a href="https://www.digi24.ro/stiri/economie/agricultura/vor-urma-scumpiri-in-lant-dupa-dezastrul-din-agricultura-fermier-am-cultivat-grau-si-porumb-productia-a-fost-zero-1427632"&gt;după pandemie cu secetă, ca și când pandemia nu era de ajuns&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Acest sandwich era o mare parte din dieta mea din facultate. Dar de atunci, am aflat &lt;a href="https://nutritionfacts.org/"&gt;multe despre importanța mâncării&lt;/a&gt;, și am redus mult pâinea, dulciurile și produsele animale (excepție: de sărbători, în vizită la părinți). În viitorul apropiat, aș putea actualiza spreadsheet-ul - voi adăuga &lt;a href="https://nutritionfacts.org/app/uploads/2018/03/metric.png"&gt;fasole, cereale integrale, fructe, legume, nuci, semințe de in, etc.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Poate că reducând carnea și pâinea veți beneficia nu doar de mai multă sănătate, ci și de mai mulți bani în portofel, și de un mediu mai puțin poluat - &lt;a href="https://ourworldindata.org/food-choice-vs-eating-local"&gt;în special, vita e de e-vita-t.&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Poftă bună!&lt;/p&gt;
&lt;p&gt;Edit 2021-01-08:&lt;/p&gt;
&lt;p&gt;Am mai adăugat în spreadsheet prețuri sandwich în Kaufland și prețurile din Lidl pentru alte produse pe care le cumpărăm. Lidl oferă &lt;a href="https://www.lidl.ro/ro/cataloage/preturile-valabile-astazi-07-01-2021/view/search/page/1"&gt;catalogul lor de prețuri&lt;/a&gt;, dar e în format intenționat-greu de citit de calculator, și nu pot ști dacă produsul chiar e pe stoc în magazinul meu - dacă nu e, atunci prețul e practic infinit (nu îl pot cumpăra).&lt;/p&gt;</content><category term="Română"></category><category term="Economy"></category><category term="Romania"></category><category term="Cluj-Napoca"></category></entry><entry><title>SymReg: approximate functions using Symbolic Regression</title><link href="https://danuker.go.ro/symreg-approximate-functions-using-symbolic-regression.html" rel="alternate"></link><published>2020-12-16T17:00:00+02:00</published><updated>2020-12-16T17:00:00+02:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2020-12-16:/symreg-approximate-functions-using-symbolic-regression.html</id><summary type="html">&lt;p&gt;I recently made &lt;a href="https://github.com/danuker/symreg"&gt;SymReg&lt;/a&gt;. It lets you discover mathematical expressions that explain some data based on some other data.&lt;/p&gt;
&lt;p&gt;The code used for this blog post is in &lt;a href="https://github.com/danuker/symreg/blob/master/demo-sine.ipynb"&gt;this notebook&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Let's try it on a sine wave, in spite of the fact that it does not have a sine building …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I recently made &lt;a href="https://github.com/danuker/symreg"&gt;SymReg&lt;/a&gt;. It lets you discover mathematical expressions that explain some data based on some other data.&lt;/p&gt;
&lt;p&gt;The code used for this blog post is in &lt;a href="https://github.com/danuker/symreg/blob/master/demo-sine.ipynb"&gt;this notebook&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Let's try it on a sine wave, in spite of the fact that it does not have a sine building block:&lt;/p&gt;
&lt;p&gt;&lt;img alt="png" class="img-fluid" src="images/sine_fit.png"/&gt;&lt;/p&gt;
&lt;p&gt;As you can see, the function found is quite a good fit. But a complexity of 337 has its disadvantages: it may be &lt;a href="https://en.wikipedia.org/wiki/Overfitting"&gt;overfit&lt;/a&gt;. As soon as we go outside the trained interval, there are explosions:&lt;/p&gt;
&lt;p&gt;&lt;img alt="png" class="img-fluid" src="images/sine_overfit.png"/&gt;&lt;/p&gt;
&lt;p&gt;Limiting the predictor complexity with &lt;code&gt;max_complexity&lt;/code&gt; acts similarly to &lt;a href="https://towardsdatascience.com/how-to-improve-a-neural-network-with-regularization-8a18ecda9fe3"&gt;regularization of neural networks&lt;/a&gt;. The behavior on the outside is a bit tamer now - +/- 6 instead of +/- 15.&lt;/p&gt;
&lt;p&gt;&lt;img alt="png" class="img-fluid" src="images/sine_overfit_regularized.png"/&gt;&lt;/p&gt;
&lt;p&gt;Sadly, Python has no multithreading due to the Global Interpreter Lock, which is a significant limitation for CPU-bound code like this. Also, multiprocessing is very slow, taking more to launch a fork than it takes a whole generation to evolve.&lt;/p&gt;
&lt;p&gt;If you know a way around the GIL, please let me know! But it seems the only way is to change the programming language.&lt;/p&gt;
&lt;p&gt;Still, this tool might be useful for you. And if you are optimizing multiple functions, you could do it in parallel quite efficiently. Try it out and share your thoughts!&lt;/p&gt;</content><category term="English"></category><category term="Tech"></category><category term="Programming"></category><category term="Optimization"></category></entry><entry><title>Alegeri locale în Cluj-Napoca 2020: opinii</title><link href="https://danuker.go.ro/alegeri-locale-in-cluj-napoca-2020-opinii.html" rel="alternate"></link><published>2020-09-24T18:12:00+03:00</published><updated>2020-09-24T18:12:00+03:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2020-09-24:/alegeri-locale-in-cluj-napoca-2020-opinii.html</id><summary type="html">&lt;p&gt;&lt;strong&gt;Update 2020-09-26 23:24&lt;/strong&gt;: E mai complicată legea, locurile nu se distribuie proporțional cu voturile. Trebuie să treacă de pragul de 5% (sau 7% pentru alianțe de două partide). Detalii &lt;a href="https://www.reddit.com/r/Romania/comments/j09co4/serios_cu_cine_naiba_sa_votez_in_iasi/g6pdggc/"&gt;într-un comentariu pe Reddit&lt;/a&gt;. Îmi cer scuze.&lt;/p&gt;
&lt;p&gt;Va fi un singur tur, &lt;a href="https://www.digi24.ro/alegeri-locale-2020/vergil-chitac-orice-vot-anti-psd-irosit-le-mareste-sansele-sa-ramana-la-butoane-1370768"&gt;după cum propagandează puterea&lt;/a&gt;. Acest lucru înseamnă că …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;strong&gt;Update 2020-09-26 23:24&lt;/strong&gt;: E mai complicată legea, locurile nu se distribuie proporțional cu voturile. Trebuie să treacă de pragul de 5% (sau 7% pentru alianțe de două partide). Detalii &lt;a href="https://www.reddit.com/r/Romania/comments/j09co4/serios_cu_cine_naiba_sa_votez_in_iasi/g6pdggc/"&gt;într-un comentariu pe Reddit&lt;/a&gt;. Îmi cer scuze.&lt;/p&gt;
&lt;p&gt;Va fi un singur tur, &lt;a href="https://www.digi24.ro/alegeri-locale-2020/vergil-chitac-orice-vot-anti-psd-irosit-le-mareste-sansele-sa-ramana-la-butoane-1370768"&gt;după cum propagandează puterea&lt;/a&gt;. Acest lucru înseamnă că primarul și președintele de consiliu județean pe care îl alegeți trebuie să "&lt;strong&gt;placă la toată lumea&lt;/strong&gt;". Concluzionez că propaganda are dreptate în legătură cu aceste două funcții, și cred că pentru a maximiza "utilizarea" votului dvs., &lt;strong&gt;trebuie să alegeți un primar ce poate câștiga&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Dar ce trebuie să știți e că primarul nu e de capul lui acolo, și &lt;a href="https://youtu.be/cphyv69admw"&gt;are nevoie de susținerea consiliului local&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Consiliul e ales în funcție de voturi, &lt;strong&gt;dar cu un prag de 5% pentru partide sau 7% pentru alianțe de 2 partide&lt;/strong&gt; - corectat 2020-09-26 23:20 cf. &lt;a href="https://www.reddit.com/r/Romania/comments/j09co4/serios_cu_cine_naiba_sa_votez_in_iasi/g6pdggc/"&gt;unui comentariu pe Reddit&lt;/a&gt; -: chiar dacă un partid ar avea, să zicem, 30% din voturi, iar următoarele două ar avea 20% fiecare, acestea două ar însuma 40% și ar influența deciziile cu mai multă putere.&lt;/p&gt;
&lt;p&gt;Astfel, câtă vreme credeți că partidul dvs. &lt;strong&gt;ar putea obține un loc&lt;/strong&gt; în consiliul local, &lt;strong&gt;merită&lt;/strong&gt; să îl votați, și nu vă "irosiți" votul cum sugerează dl. Vergil Chițac al PNL mai sus.&lt;/p&gt;
&lt;p&gt;Dacă nu estimați că partidul dvs. preferat ar obține un loc, atunci alegeți cel mai acceptabil partid care estimați că ar obține unul. Important este că &lt;strong&gt;nu e necesară majoritatea voturilor&lt;/strong&gt; pentru a avea o influență în &lt;strong&gt;consiliul local.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Personal cred că un consiliu local divers ce reflectă dorința cetățenilor e foarte important, și că diversitatea politică duce la considerarea mai multor perspective, iar asta duce mai departe la robustețea guvernării. Asta spre deosebire de un partid majoritar, în care acesta ar dicta tot ce se întâmplă.&lt;/p&gt;
&lt;p&gt;Dacă doriți să trimiteți un mesaj, făcând reclamă unui partid / unei ideologii, puteți și să votați pe cineva care nu are șanse, dar să fiți în cunoștiință de cauză. Această opțiune ar fi mai bună decât să vă invalidați votul, sau să nu votați - oamenii urmăresc și marja câștigată de partide, nu doar cine câștigă.&lt;/p&gt;
&lt;p&gt;Mai departe, enumăr în ordine crescătoare a &lt;a href="https://bcs.com.ro/sondaj/lumea-si-valorile-ei-politice"&gt;sondajului BCS&lt;/a&gt; (pagina 55 a PDF-ului) &lt;a href="https://files.primariaclujnapoca.ro/2020/08/26/Proces-verbal-de-constatare-a-ra%CC%86ma%CC%82nerii-def-a-cand-BEM-nr.-1-Cluj-Napoca.pdf"&gt;opțiunile din Cluj-Napoca&lt;/a&gt;, propaganda lor și observațiile mele. &lt;/p&gt;
&lt;p&gt;Faptul că un candidat deține multe proprietăți în oraș poate sugera că are un interes în dezvoltarea orașului (dar proprietățile se pot și vinde).&lt;/p&gt;
&lt;p&gt;Menționez procentul din voturi obținut național și în regiunea NV ce include Cluj-Napoca, dar sortez după cel național. Nu am găsit o defalcare pe regiuni în &lt;a href="https://www.romaniatv.net/sondaj-curs-cine-ar-castiga-azi-alegerile-locale_535944.html"&gt;sondajul mai recent CURS&lt;/a&gt;, motiv pentru care am ales sondajul mai vechi.&lt;/p&gt;
&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#partide-cu-sanse-slabe"&gt;Partide cu șanse slabe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#alde-siserman-paul-eugen-17-4-nv"&gt;ALDE: Siserman Paul-Eugen (1,7%, 4% NV)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#pro-romania-codrean-dan-cristian-52-2-nv"&gt;Pro România: Codrean Dan Cristian (5,2%, 2% NV)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#pmp-53-8-nv"&gt;PMP (5,3%, 8% NV)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#udmr-59-12-nv"&gt;UDMR (5,9%, 12% NV)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#usr-plus-ungureanu-emanuel-dumitru-198-11-nv"&gt;USR-PLUS: Ungureanu Emanuel-Dumitru (19,8%, 11% NV)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#psd-cuibus-valentin-claudiu-253-37-nv"&gt;PSD: Cuibus Valentin-Claudiu (25,3%, 37% NV)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#pnl-emil-boc-327-24-nv"&gt;PNL: Emil Boc (32,7%, 24% NV)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#propunere-personala"&gt;Propunere personală&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#concluzie"&gt;Concluzie&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="partide-cu-sanse-slabe"&gt;&lt;a class="toclink" href="#partide-cu-sanse-slabe"&gt;Partide cu șanse slabe&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Din păcate, aceste partide au foarte puține voturi. Cum votez practic, aleg să nu le analizez. Poate vor avea o șansă la alegerile parlamentare. Pentru a primi un loc (și a nu "irosi" votul, trebuie să alegeți un candidat ce credeți că ar putea primi ~~3,7~~ &lt;strong&gt;5%&lt;/strong&gt; din voturi.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Partidul România Noastră: Mîndru Petru&lt;/li&gt;
&lt;li&gt;PRM: Gîfu Daniela&lt;/li&gt;
&lt;li&gt;Alianța pentru Unirea Românilor: Roșca-Neacșu Simona-Teodora&lt;/li&gt;
&lt;li&gt;Partidul Alternativa Dreaptă: Mîrza Adela-Dorina&lt;/li&gt;
&lt;li&gt;Partidul Forța Națională: Naș Sorin-Valeriu&lt;/li&gt;
&lt;li&gt;Partidul Republican din România: Lupaș Radu-Călin&lt;/li&gt;
&lt;li&gt;Partidul Verde: Gârbovan Bogdan (1,0%, 1% NV)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="alde-siserman-paul-eugen-17-4-nv"&gt;&lt;a class="toclink" href="#alde-siserman-paul-eugen-17-4-nv"&gt;ALDE: Siserman Paul-Eugen (1,7%, 4% NV)&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Dl. Siserman e un bucătar, și pare să fi încercat diverse feluri de afaceri - bucătărie, &lt;a href="https://www.youtube.com/watch?v=3g8tysqfuwU"&gt;show-uri&lt;/a&gt;. Pare un antreprenor, motiv pentru care cred că știe ce îi doare pe micii întreprinzători.&lt;/p&gt;
&lt;p&gt;Mai ales acum, e important să &lt;a href="https://www.youtube.com/watch?v=KMIWTYtCius"&gt;auzim vocea&lt;/a&gt; celor mai afectați de pandemie. Ascultându-l pare să fie pro-reglementare? Mașini acreditate pentru livrări?? Hmmm. Dl. Siserman sună mai degrabă ca un angajat al ANSVSA.&lt;/p&gt;
&lt;p&gt;În orice caz, acest domn nu prea are șanse să devină primar. Să cercetăm ce a făcut partidul.&lt;/p&gt;
&lt;p&gt;Deși și ALDE are &lt;a href="https://www.digi24.ro/stiri/actualitate/politica/psd-pro-romania-si-alde-vor-avea-candidati-unici-la-alegerile-locale-a-fost-anuntata-prima-alianta-electorala-1261543"&gt;candidați în comun cu PSD în unele locuri&lt;/a&gt;, partidul declară că &lt;a href="https://alde.ro/site/statut/page/2/"&gt;susține reducerea barierelor administrative și a rolului statului (2 h, i din statut)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Totuși, dl. Tăriceanu, președintele ALDE, a susținut &lt;a href="https://ro.wikipedia.org/wiki/C%C4%83lin_Popescu-T%C4%83riceanu#Critici_%C8%99i_controverse"&gt;taxa de primă înmatriculare&lt;/a&gt;, o barieră administrativă ce i-ar veni de folos la firma Automotive Trading Services SRL, &lt;a href="https://www.senat.ro/Declaratii/Senatori/2016/in_popescu_tariceanu_calin_15_06_2017.pdf"&gt;pe care o deținea în proporție de 85%&lt;/a&gt;. Sigur, &lt;a href="https://www.romaniatv.net/poluarea-cauzeaza-unul-din-cinci-decese-din-romania-avertismentul-agentiei-europene-de-mediu_536654.html"&gt;poluarea e o problemă gravă în România&lt;/a&gt;, dar cred că taxa poluării trebuie să fie aplicată proporțional. Dacă am o mașină veche dar o folosesc rar, ar trebui să plătesc mai puțin.&lt;/p&gt;
&lt;p&gt;În plus, ALDE pare să voteze similar cu PSD, conform &lt;a href="https://danuker.go.ro/analiza-partide-partea-3.html#harta-ideologica"&gt;hărții mele ideologice&lt;/a&gt;. E un pic mai jos în grafic decât PSD, ceea ce înseamnă că nu au fost complet de acord cu abuzurile în justiție (vedeți voturile de la paragraful Y- de sub hartă). Totuși, nu au vrut să &lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22079"&gt;ancheteze CNA&lt;/a&gt; despre neutralitate politică în vremea puterii PSD, au dorit &lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20604"&gt;reglementarea în domeniul petrolier&lt;/a&gt; încât România să &lt;a href="http://www.cdep.ro/pls/steno/steno2015.stenograma?ids=7958&amp;amp;idm=9"&gt;nu poată schimba redevențele timp de 45 de ani&lt;/a&gt;, spre câștigul firmelor de exploatare.&lt;/p&gt;
&lt;p&gt;În concluzie, eu nu votez cu ei. &lt;/p&gt;
&lt;h2 id="pro-romania-codrean-dan-cristian-52-2-nv"&gt;&lt;a class="toclink" href="#pro-romania-codrean-dan-cristian-52-2-nv"&gt;Pro România: Codrean Dan Cristian (5,2%, 2% NV)&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Pro România e un partid rupt din PSD, și încă &lt;a href="https://www.digi24.ro/stiri/actualitate/politica/psd-pro-romania-si-alde-vor-avea-candidati-unici-la-alegerile-locale-a-fost-anuntata-prima-alianta-electorala-1261543"&gt;au candidați în comun în unele locuri&lt;/a&gt;. Nu reprezintă o alternativă reală, și nu voi vota cu ei.&lt;/p&gt;
&lt;h2 id="pmp-53-8-nv"&gt;&lt;a class="toclink" href="#pmp-53-8-nv"&gt;PMP (5,3%, 8% NV)&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Edit 2020-09-25: dintr-o eroare de copy-paste uitasem să evaluez PMP.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://pmponline.ro/document/statut"&gt;Statutul lor&lt;/a&gt; spune că sunt un partid de centru-dreapta (Art.10 (2)). &lt;a href="https://pmponline.ro/proiecte"&gt;Proiectele lor&lt;/a&gt; nu par însă să aibă multă legătură cu libertatea economică (contrast cu &lt;a href="https://dreaptaliberala.ro/program-politic/"&gt;Dreapta Liberală&lt;/a&gt;). Deși apreciez intenția de alegere a primarilor în două tururi, nu doar din asta se face o țară sănătoasă.&lt;/p&gt;
&lt;p&gt;Nu pot să găsesc o ideologie coerentă, nici dacă încerc să descifrez mai multe voturi ale lor. Pare să fie la întâmplare, ceea ce e un semn rău. Verzi și uscate de la PMP:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Centralizare: &lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20649"&gt;a votat contra&lt;/a&gt; mutării transportului public București de la Ministerul Transportului către Consiliul Local&lt;/li&gt;
&lt;li&gt;Centralizare: &lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16141"&gt;a votat contra&lt;/a&gt; respingerii unei legi ce obligă ca achizițiile de medicamente să fie centralizate&lt;/li&gt;
&lt;li&gt;Descentralizare: &lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16105"&gt;a votat contra&lt;/a&gt; respingerii unei legi ce permite libera predare de cursuri auto, fără aprobarea Ministerului Transporturilor&lt;/li&gt;
&lt;li&gt;Descentralizare: &lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16158"&gt;a votat contra&lt;/a&gt; respingerii unei legi ce transferă cabinetele medicale școlare la administrația locală&lt;/li&gt;
&lt;li&gt;Au încercat să &lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16106"&gt;reformeze&lt;/a&gt; sistemul medical, cu multe lacune în legea propusă.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="udmr-59-12-nv"&gt;&lt;a class="toclink" href="#udmr-59-12-nv"&gt;UDMR (5,9%, 12% NV)&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Edit 2020-09-25: dintr-o eroare de copy-paste uitasem să evaluez UDMR.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://udmr.ro/upload/dokumetumok/Statut_UDMR_2017.pdf"&gt;Statutul UDMR&lt;/a&gt; informează la Art. 10 că scopul acesteia e apărarea, reprezentarea publică, și coordonarea intereselor comunității maghiare din România.&lt;/p&gt;
&lt;p&gt;Ca român, am interesul ca orașul meu să se dezvolte într-un mod robust, prin a include minorități. Cred că o atitudine prietenoasă față de alte etnii e necesară. Dar nu e suficientă, și nu cred că ar trebui să fie scopul principal al guvernării locale - ar trebui să fie bunăstarea tuturor cetățenilor. Prin urmare, votez cu altcineva.&lt;/p&gt;
&lt;h2 id="usr-plus-ungureanu-emanuel-dumitru-198-11-nv"&gt;&lt;a class="toclink" href="#usr-plus-ungureanu-emanuel-dumitru-198-11-nv"&gt;USR-PLUS: Ungureanu Emanuel-Dumitru (19,8%, 11% NV)&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Dl. Ungureanu &lt;a href="http://www.cdep.ro/pls/steno/steno2015.stenograma?ids=8050&amp;amp;idm=15&amp;amp;idl=1"&gt;a fost sancționat în Camera Deputaților&lt;/a&gt; prin luarea cuvântului, din cauză că nu vorbea la subiect (voia să discute despre trafic de ovocite ce implică SRI și Agenția Națională de Transplant). Nu are răbdare, și &lt;a href="http://www.monitorulcj.ro/actualitate/70952-instanta-a-hotarat-emanuel-ungureanu-i-a-patat-reputatia-unui-celebru-chirurg!"&gt;expune corupția cu multă pasiune&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Îl doresc pe acest om ca primar. Problema e, nu cred că destulă lume îl va vota - dacă PSD are mai multe voturi cum spune sondajul, am avea un primar din PSD cu consiliul PNL-USR. Deși încurajez diversitatea politică, nu doresc politicieni asociați cu un partid ce calcă pe drepturile cetățenilor. Prin urmare, îl voi alege pe dl. Boc.&lt;/p&gt;
&lt;p&gt;Totuși, la consilii, cred că voi vota cu &lt;a href="https://emanuelprimar.ro/echipa/"&gt;USR&lt;/a&gt;, deoarece balanța voturilor e destul de aliniată cu idealurile mele:&lt;/p&gt;
&lt;p&gt;Voturi ce mă fac să am încredere în USR:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;au votat pentru mărirea timpilor de antenă ai candidaților independenți (&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16497"&gt;PL 265/2016&lt;/a&gt;). Ceilalți parlamentari au schimbat din legi între timp, dar &lt;a href="http://legislatie.just.ro/Public/DetaliiDocument/226474"&gt;Art. 68 (7) al legii 115/2015&lt;/a&gt; încă e în vigoare.&lt;/li&gt;
&lt;li&gt;au votat pentru &lt;a href="http://www.cdep.ro/pls/steno/evot2015.Nominal?idv=16250"&gt;reducerea numărului minim de semnături&lt;/a&gt; pentru a candida ca &lt;a href="http://www.cdep.ro/pls/steno/steno2015.stenograma?ids=7712&amp;amp;idm=30"&gt;membru al consiliului local&lt;/a&gt;. Asta în timp ce propunerea a fost tărăgănată de pe ordinea zilei până legea la care se referea a fost schimbată.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ce accept ca rău necesar (de vreme ce am semnat aderarea la UE):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;au votat în acord cu Guvernul și cu &lt;a href="https://eur-lex.europa.eu/legal-content/RO/TXT/HTML/?uri=CELEX:32009L0072&amp;amp;from=FR#d1e1972-55-1"&gt;art. 15 p. 4&lt;/a&gt; din directiva &lt;a href="https://eur-lex.europa.eu/legal-content/FR/ALL/?uri=CELEX:32009L0072"&gt;2009/72/CE&lt;/a&gt; - anume, că un stat nu poate cere furnizorilor energetici să folosească combustibil din surse naționale în proporție de mai mult de 15%. Acest lucru duce la interdependență economică, și face ca celelalte state UE să aibă nevoie de noi. Deși România pierde monetar din această afacere (suntem o țară cu cărbune ieftin; să importăm și să transportăm e mai scump), încă cred (mai bine zis, sper) că România câștigă din apartenența la UE (fonduri europene și anumite reglementări, deși nu sunt de acord cu toate). Nu e totul roz în UE; &lt;a href="https://ziare.com/rosia-montana/stiri-rosia-montana/minele-de-aur-din-apuseni-afacere-de-miliarde-falimentata-1630892"&gt;normele de poluare, pe lângă corupție și furturi, au ajutat la închiderea minelor&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Există și decizii cu care nu sunt deloc de acord; partidul nu e aliniat perfect cu opiniile mele:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;au votat &lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16854"&gt;contra adăugării mai multor orașe la pensie anticipată din cauza poluării&lt;/a&gt;. &lt;a href="https://zdbc.ro/pensionare-anticipata-cu-2-ani-pentru-bacauanii-afectati-de-combinatul-chimic-bacau-si-platforma-petrochimica-onesti/"&gt;Mai multe aici&lt;/a&gt;. Sigur, &lt;a href="https://www.romaniatv.net/poluarea-cauzeaza-unul-din-cinci-decese-din-romania-avertismentul-agentiei-europene-de-mediu_536654.html"&gt;poluarea e foarte gravă la noi&lt;/a&gt;, și ar trebui să se rezolve altfel, nu prin despăgubiri, iar sistemul de pensii e de mult subfinanțat, dar sunt de acord cu generozitate mai mare pentru cei ce și-au sacrificat din funcția pulmonară pentru comunitatea lor.&lt;/li&gt;
&lt;li&gt;au dorit &lt;a href="http://www.cdep.ro/pls/proiecte/upl_pck2015.proiect?idp=15602"&gt;interzicerea organizațiilor politice comuniste&lt;/a&gt;. Deși sunt &lt;a href="on-zeitgeist-the-venus-project-and-the-resource-based-economy.html"&gt;anti-comunism&lt;/a&gt;, cred că dezbaterea și libertatea politică e esențială. Nu combați o ideologie prin interdicție, ci prin dialog și înțelegere.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="psd-cuibus-valentin-claudiu-253-37-nv"&gt;&lt;a class="toclink" href="#psd-cuibus-valentin-claudiu-253-37-nv"&gt;PSD: Cuibus Valentin-Claudiu (25,3%, 37% NV)&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Dl. Cuibus e membru al Consiliului Județean, și &lt;a href="https://www.cjcluj.ro/assets/uploads/declaratii/avere/2020/Cuibus%20Valentin%20avere%202020.pdf"&gt;deține&lt;/a&gt; multe proprietăți în Cluj-Napoca.&lt;/p&gt;
&lt;p&gt;Cu PSD nu voi vota personal niciodată, din cauză că &lt;a href="https://spotmedia.ro/stiri/eveniment/dosarul-10-august-pe-elefantul-roz-de-la-o-instanta-la-alta-cum-a-planificat-psd-violentele-de-acum-doi-ani"&gt;nu pune prea mare preț pe libertățile civile&lt;/a&gt;. Nu doar problema justiției, ci &lt;a href="https://danuker.go.ro/analiza-partide-partea-3.html#voturi-specifice-ale-partidelor"&gt;susținerea penalilor proprii în general&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="pnl-emil-boc-327-24-nv"&gt;&lt;a class="toclink" href="#pnl-emil-boc-327-24-nv"&gt;PNL: Emil Boc (32,7%, 24% NV)&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://ro.wikipedia.org/wiki/Emil_Boc"&gt;E primarul actual&lt;/a&gt;, și a fost primar în Cluj-Napoca în 2004-2009 și din 2012 încoace.&lt;/p&gt;
&lt;p&gt;A făcut bani serioși ca primar: &lt;a href="https://ziare.com/stiri/eveniment/serial-averile-primarilor-din-romania-emil-boc-banii-stransi-dupa-patru-mandate-la-primaria-cluj-1620578"&gt;aproape i s-a triplat venitul față de 2016&lt;/a&gt;. Deține &lt;a href="https://files.primariaclujnapoca.ro/2020/01/13/202001130744.pdf"&gt;multe proprietăți în Răchițele și două apartamente în Cluj-Napoca.&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ce mi-a plăcut la PNL:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PNL &lt;a href="https://pnl.ro/cluj-napoca-in-primele-6-orase-inovatoare-din-uniunea-europeana-alaturi-de-viena-valencia-espoo-finlanda-helsingborg-suedia-si-leuven-belgia/"&gt;se laudă&lt;/a&gt; cu aducerea Clujului în top 6 orașe inovatoare din UE.&lt;/li&gt;
&lt;li&gt;În 2015, &lt;a href="https://ro.wikipedia.org/wiki/Capitala_European%C4%83_a_Tineretului"&gt;Cluj-Napoca a fost Capitala Europeană a Tineretului&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Demografic, &lt;a href="https://ro.wikipedia.org/wiki/Cluj-Napoca#Evolu%C8%9Bie_istoric%C4%83"&gt;Cluj&lt;/a&gt; a crescut cu 2,08% din 2002 în 2011, iar București &lt;a href="https://ro.wikipedia.org/wiki/Bucure%C8%99ti#Evolu%C8%9Bie_istoric%C4%83"&gt;a scăzut&lt;/a&gt; cu 2,23%. Cred că acest lucru spune că e mai fain la Cluj. Totuși, au fost mai multe administrații ce au contribuit, nu doar Boc și PNL.&lt;/li&gt;
&lt;li&gt;Personal, admir proiectul de &lt;a href="https://bugetareparticipativa.ro/"&gt;bugetare participativă&lt;/a&gt; - consider că Primăria a luat aminte de dorințele cetățenilor (deși în domenii cam limitate) - de exemplu, a fost implementat &lt;a href="https://primariaclujnapoca.ro/cetateni/dezbateri-publice/"&gt;un sistem de dezbateri publice&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Sunt de acord cu atitudinea PNL &lt;a href="https://www.economica.net/taxa-auto-2020-taxa-poluare-taxa-prima-inmatriculare-2020-orban-pnl_176061.html"&gt;despre poluarea mașinilor&lt;/a&gt;, și anume "cuantumul taxei să depindă de cantitatea de noxe care sunt eliberate în atmosferă". Sper ca această "cantitate de noxe" să depindă și de diferența parcursă pe kilometrajul mașinii. Ce mă întristează e că măsura "noxelor" pare să fie CO2, și nu noxele care &lt;a href="https://www.romaniatv.net/poluarea-cauzeaza-unul-din-cinci-decese-din-romania-avertismentul-agentiei-europene-de-mediu_536654.html"&gt;cauzează moarte&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Mai larg, partidul aflat în Parlament în 2014, a &lt;a href="http://www.cdep.ro/proiecte/2014/200/60/3/sesizare_cibernetica.pdf"&gt;sesizat&lt;/a&gt; legea securității cibernetice (Big Brother) ca fiind neconstituțională, după ce aceasta trecuse atât de Camera Deputaților (prin adoptare tacită ca urmare a expirării termenului de dezbatere), cât și de Senat (după unele decizii de a o modifica), dar dintr-un motiv necunoscut, aceste modificări de a o face constituțională nu au fost transpuse în forma finală.&lt;/li&gt;
&lt;li&gt;Acum, de Coronavirus, nu mi se par exagerate restricțiile. Am o întrebare pentru adepții teoriei conspirației: dacă pandemia ar fi fost reală, ce trebuia să fie diferit în acțiunile statului? Poți comenta anonim mai jos (dar nu înseamnă că nu voi șterge comentariile abuzive).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Totuși, nu e fără cusur. Printre &lt;strong&gt;scheleții din dulap&lt;/strong&gt; am găsit următoarele:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;În ciuda triplării remunerației postului de primar, bugetul local avea planificată la începutul anului &lt;a href="https://files.primariaclujnapoca.ro/2020/01/13/volumul-1.pdf"&gt;o creștere a datoriei de 202.720.180 RON&lt;/a&gt;. Adică aprox. 12% din cheltuieli au fost finanțate prin credite (ce vor necesita dobânzi). La sfârșitul 2019 aveam o datorie de &lt;a href="https://www.cjcluj.ro/assets/uploads/Situa%C8%9Bii%20financiare%20trim.%20IV%202019%20partea%20I.pdf"&gt;437.904.809&lt;/a&gt;. Dacă am fi plătit toate datoriile în 2020, trebuia să dedicăm 29.4% din venit.&lt;ul&gt;
&lt;li&gt;Poate că un oraș în creștere necesită cheltuieli "în avans". Câtă vreme cheltuielile sunt utile și aduc mai mulți bani la buget pe termen lung, poate că sunt o investiție bună.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;În plus, bugetul nu e prezentat într-un format citibil de un calculator (XLS, CSV, sau ODS), ci într-un PDF cu tabele scanate. Poate cineva să-mi spună diferența dintre &lt;a href="https://files.primariaclujnapoca.ro/document_buget/2020/07/02/415.pdf"&gt;rectificarea nr. 5&lt;/a&gt; a bugetului și &lt;a href="https://files.primariaclujnapoca.ro/document_buget/2020/05/20/262.pdf"&gt;rectificarea nr. 4&lt;/a&gt;? Poate cineva procesa aceste date în vreun fel? Clar au fost redactate pe un calculator, de vreme ce sunt litere de tipar, dar transformarea lor în imagini neprocesabile denotă lipsă de transparență. S-ar putea face &lt;a href="https://ro.wikipedia.org/wiki/Recunoa%C8%99terea_optic%C4%83_a_caracterelor"&gt;OCR&lt;/a&gt;, dar acest proces ar fi dificil și imprecis.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Totuși, cred că PNL nu e o alegere rea, cu siguranță nu cea mai rea.&lt;/p&gt;
&lt;h2 id="propunere-personala"&gt;&lt;a class="toclink" href="#propunere-personala"&gt;Propunere personală&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Mi-ar plăcea să existe o inițiativă de a înlocui Pata Rât (ce se &lt;a href="https://www.ziardecluj.ro/taguri/incendiu-pata-rat"&gt;mai aprinde din când în când&lt;/a&gt;) cu un incinerator ecologic - similar cu &lt;a href="https://viennadaily.blogspot.com/2008/02/fernwtme-wien-incinerator-and-heating.html"&gt;cel din Viena&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;Aceste incineratoare emit CO2, dar nu și &lt;a href="https://en.wikipedia.org/wiki/Incineration#Dioxin_cracking_in_practice"&gt;dioxine sau furani&lt;/a&gt;, din cauză că arderile sunt complete, fiind la o temperatură mult mai mare decât cele din Pata Rât. &lt;/p&gt;
&lt;p&gt;Legând acest incinerator la încălzirea centralizată, acest proiect ar putea fi profitabil. Dar mărturisesc că nu m-am interesat în legătură cu costul investiției.&lt;/p&gt;
&lt;h2 id="concluzie"&gt;&lt;a class="toclink" href="#concluzie"&gt;Concluzie&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Prin eliminare, cred că voi vota cu dl. Boc ca primar, și USR pentru Consiliul Local.&lt;/p&gt;
&lt;p&gt;După aceeași logică voi vota Alin Tișe al PNL ca președinte de consiliu, dar USR pentru Consiliul Județean.&lt;/p&gt;
&lt;p&gt;Din păcate, nu există sondaje mai recente, și care se referă doar la Cluj-Napoca. Din acest motiv, nu doresc să-mi risc votul, și aleg PNL/USR, chiar dacă sunt mai autoritari și socialiști decât aș dori (deși mă mulțumește Florin Cîțu, care a tăiat bine :)&lt;/p&gt;
&lt;p&gt;Poate m-aș interesa de "Alternativa Dreaptă" sau cel "Republican", în cazul în care ar fi fost și al doilea tur. Poate la Parlamentare vor avea o șansă. De asemenea, "Dreapta Liberală", partidul lui Cataramă, favoritul meu de la &lt;a href="https://danuker.go.ro/opinii-despre-candidati-la-presedintie.html#viorel-catarama-preferatul-meu"&gt;Prezidențiale&lt;/a&gt;, lipsește din candidați. Simt astfel că nu am mult de ales.&lt;/p&gt;
&lt;p&gt;Nici PNL nu ar fi rău, dar promisiunile lor cu metrou până în Florești (pe pliantul primit dintre cele 200.000 de exemplare tipărite) mi se par fabuloase. Sunt mai curios cum s-ar ține USR de buget și de &lt;a href="https://emanuelprimar.ro/wp-content/uploads/2020/08/USRPLUS-Program-Cluj-Napoca.pdf"&gt;promisiuni&lt;/a&gt; dacă ar fi "la butoane" în Cluj.&lt;/p&gt;
&lt;p&gt;Sper că v-au fost de ajutor opiniile mele. Încurajez discuțiile pe acest site. Dacă aveți un argument bun, vă invit să îl postați.&lt;/p&gt;</content><category term="Română"></category><category term="Politics"></category><category term="Economy"></category><category term="Romania"></category><category term="Cluj-Napoca"></category></entry><entry><title>The Grand Unified Theory of Software Architecture</title><link href="https://danuker.go.ro/the-grand-unified-theory-of-software-architecture.html" rel="alternate"></link><published>2020-09-05T15:37:00+03:00</published><updated>2020-09-05T15:37:00+03:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2020-09-05:/the-grand-unified-theory-of-software-architecture.html</id><summary type="html">&lt;p&gt;Take &lt;strong&gt;Uncle Bob's&lt;/strong&gt; Clean Architecture and map its correspondences with &lt;strong&gt;Gary Bernhardt's&lt;/strong&gt; thin imperative shell around a functional core, and you get an understanding of how to cheaply maintain and scale software!&lt;/p&gt;
&lt;p&gt;This is what &lt;a href="https://rhodesmill.org/brandon/"&gt;Mr. Brandon Rhodes&lt;/a&gt; did. It's not every day that I find such clear insight.&lt;/p&gt;
&lt;p&gt;I …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Take &lt;strong&gt;Uncle Bob's&lt;/strong&gt; Clean Architecture and map its correspondences with &lt;strong&gt;Gary Bernhardt's&lt;/strong&gt; thin imperative shell around a functional core, and you get an understanding of how to cheaply maintain and scale software!&lt;/p&gt;
&lt;p&gt;This is what &lt;a href="https://rhodesmill.org/brandon/"&gt;Mr. Brandon Rhodes&lt;/a&gt; did. It's not every day that I find such clear insight.&lt;/p&gt;
&lt;p&gt;I am honored to have found his &lt;a href="https://rhodesmill.org/brandon/talks/#clean-architecture-python"&gt;presentation&lt;/a&gt; and &lt;a href="https://rhodesmill.org/brandon/slides/2014-07-pyohio/clean-architecture/"&gt;slides&lt;/a&gt; explaining  &lt;a href="https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html"&gt;Uncle Bob's Clean Architecture&lt;/a&gt; and Gary Bernhardt's PyCon talks of &lt;a href="https://archive.org/details/pyvideo_422___units-need-testing-too"&gt;2011&lt;/a&gt;, &lt;a href="https://pycon-2012-notes.readthedocs.io/en/latest/fast_tests_slow_tests.html"&gt;2012&lt;/a&gt;, and &lt;a href="https://www.destroyallsoftware.com/talks/boundaries"&gt;2013&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Mr. Rhodes offers such a distilled view, that he can show you these crucial concepts in 3 slides of code. I will go ahead and summarize what he said and add a tiny bit of my insight.&lt;/p&gt;
&lt;p&gt;Copyright of all Python code on this page belongs to &lt;a href="https://rhodesmill.org/brandon/"&gt;Mr. Brandon Rhodes&lt;/a&gt;, and copyright of the diagram belongs to &lt;a href="https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html"&gt;Robert C. Martin (Uncle Bob)&lt;/a&gt;. Edit 2020-11-17: I use these with permission from the authors - they are not under the same CC-BY license as the rest of my blog.&lt;/p&gt;
&lt;p&gt;Mr. Rhodes warmly recommends the Harry Percival and Bob Gregory book &lt;strong&gt;Architecture Patterns with Python&lt;/strong&gt;, also known as &lt;a href="https://www.cosmicpython.com/"&gt;"&lt;strong&gt;Cosmic Python&lt;/strong&gt;"&lt;/a&gt;. It also talks about the Clean Architecture. You can do any or all of the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Buy it as a DRM-free ebook &lt;a href="https://www.ebooks.com/en-us/book/209971850/architecture-patterns-with-python/harry-percival/"&gt;on ebooks.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Order it from &lt;a href="https://www.amazon.com/Architecture-Patterns-Python-Domain-Driven-Microservices/dp/1492052205/"&gt;Amazon.com&lt;/a&gt; or &lt;a href="https://www.amazon.co.uk/Enterprise-Architecture-Patterns-Python-Adapters/dp/1492052205/"&gt;Amazon.co.uk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Read it for free on the &lt;a href="https://www.cosmicpython.com/"&gt;Cosmic Python website&lt;/a&gt; (it is under a CC-By-NC-ND license).&lt;/li&gt;
&lt;li&gt;Hack the source code or fix typos on &lt;a href="https://github.com/cosmicpython/book"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I can't wait to read it myself.&lt;/p&gt;
&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#glossary"&gt;Glossary&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#listing-1-complex-code"&gt;Listing #1: Complex code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#listing-2-hiding-io-at-the-bottom"&gt;Listing #2: Hiding I/O at the bottom&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#listing-3-io-at-the-top"&gt;Listing #3: I/O at the top&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#functional-core-imperative-shell-vs-clean-architecture"&gt;Functional Core / Imperative Shell vs. Clean Architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#benefits"&gt;Benefits&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h1 id="glossary"&gt;&lt;a class="toclink" href="#glossary"&gt;Glossary&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;First of all, we need to be on the same page, in order to be able to understand each other. Here are the words I'll use:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Function: I use "function" or "pure function" to refer to a Python "function" that only uses its parameters for input, returns a result as output, and does not cause any other side-effects (such as I/O). &lt;ul&gt;
&lt;li&gt;A pure function returns the same output given the same inputs.&lt;/li&gt;
&lt;li&gt;A pure function may be called any number of times without changing the system state - it should have no influence on DB, UI, other functions or classes.&lt;/li&gt;
&lt;li&gt;This is very similar to a mathematical function: takes you from &lt;em&gt;x&lt;/em&gt; to &lt;em&gt;y&lt;/em&gt; and nothing else happens.&lt;/li&gt;
&lt;li&gt;Sadly we can't have only pure functions; software has a &lt;strong&gt;purpose&lt;/strong&gt; of causing side-effects.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Procedure, Routine, or Subroutine: A piece of code that executes, that may or may not have side effects. This is a "function" in Python, but might not be a "pure function".&lt;/li&gt;
&lt;li&gt;Tests: automated unit tests. By "unit" I mean not necessarily just a class, but a behavior. If you want, see more details in &lt;a href="tdd-revisited-pytest-updated-2020-09-03.html#update-2020-09-03-keep-coupling-low"&gt;the coupling chapter of my previous post&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="listing-1-complex-code"&gt;&lt;a class="toclink" href="#listing-1-complex-code"&gt;Listing #1: Complex code&lt;/a&gt;&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;requests&lt;/span&gt;                      &lt;span class="c1"&gt;# Listing 1&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;urllib&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;urlencode&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;find_definition&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;word&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;q&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'define '&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;word&lt;/span&gt;
    &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'http://api.duckduckgo.com/?'&lt;/span&gt;
    &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;urlencode&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="s1"&gt;'q'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;q&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'format'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'json'&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;     &lt;span class="c1"&gt;# I/O&lt;/span&gt;
    &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;           &lt;span class="c1"&gt;# I/O&lt;/span&gt;
    &lt;span class="n"&gt;definition&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sa"&gt;u&lt;/span&gt;&lt;span class="s1"&gt;'Definition'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;definition&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sa"&gt;u&lt;/span&gt;&lt;span class="s1"&gt;''&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="ne"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'that is not a word'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;definition&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Here, we have a piece of code that prepares a URL, then gets some data over the network (I/O), then validates the result (a word definition) and returns it.&lt;/p&gt;
&lt;p&gt;This is a bit much: a procedure should ideally do one thing only. While this small-ish procedure is quite readable still, it is a metaphor for a more developed system - where it could be arbitrarily long.&lt;/p&gt;
&lt;p&gt;The current knee-jerk reaction is to &lt;em&gt;hide&lt;/em&gt; the I/O operations somewhere far away. Here is the same code after extracting the I/O lines:&lt;/p&gt;
&lt;h1 id="listing-2-hiding-io-at-the-bottom"&gt;&lt;a class="toclink" href="#listing-2-hiding-io-at-the-bottom"&gt;Listing #2: Hiding I/O at the bottom&lt;/a&gt;&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;find_definition&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;word&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;           &lt;span class="c1"&gt;# Listing 2&lt;/span&gt;
    &lt;span class="n"&gt;q&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'define '&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;word&lt;/span&gt;
    &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'http://api.duckduckgo.com/?'&lt;/span&gt;
    &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;urlencode&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="s1"&gt;'q'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;q&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'format'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'json'&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;call_json_api&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;definition&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sa"&gt;u&lt;/span&gt;&lt;span class="s1"&gt;'Definition'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;definition&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sa"&gt;u&lt;/span&gt;&lt;span class="s1"&gt;''&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="ne"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'that is not a word'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;definition&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;call_json_api&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;     &lt;span class="c1"&gt;# I/O&lt;/span&gt;
    &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;           &lt;span class="c1"&gt;# I/O&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;In Listing #2, the I/O is extracted from the top-level procedure. &lt;/p&gt;
&lt;p&gt;The problem is, the code is still &lt;strong&gt;coupled&lt;/strong&gt; - &lt;code&gt;call_json_api&lt;/code&gt; is called whenever you want to test anything - even the building of the URL or the parsing of the result.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Coupling kills software.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A good rule of thumb to spot coupling is this: Can you test a piece of code without having to mock or dependency inject like Frankenstein?&lt;/p&gt;
&lt;p&gt;Here, we can't test &lt;code&gt;find_definition&lt;/code&gt; without somehow replacing &lt;code&gt;call_json_api&lt;/code&gt; from inside it, in order to avoid making HTTP requests.&lt;/p&gt;
&lt;p&gt;Let's find out what a better solution looks like.&lt;/p&gt;
&lt;h1 id="listing-3-io-at-the-top"&gt;&lt;a class="toclink" href="#listing-3-io-at-the-top"&gt;Listing #3: I/O at the top&lt;/a&gt;&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;find_definition&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;word&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;           &lt;span class="c1"&gt;# Listing 3&lt;/span&gt;
    &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;build_url&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;word&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;  &lt;span class="c1"&gt;# I/O&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;pluck_definition&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;build_url&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;word&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;q&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'define '&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;word&lt;/span&gt;
    &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'http://api.duckduckgo.com/?'&lt;/span&gt;
    &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;urlencode&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="s1"&gt;'q'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;q&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'format'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'json'&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;pluck_definition&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;definition&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sa"&gt;u&lt;/span&gt;&lt;span class="s1"&gt;'Definition'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;definition&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sa"&gt;u&lt;/span&gt;&lt;span class="s1"&gt;''&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="ne"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'that is not a word'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;definition&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Here, the procedure at the top (aka. the &lt;span class="text-success"&gt;&lt;strong&gt;imperative shell&lt;/strong&gt;&lt;/span&gt; of the program) is handling the I/O, and everything else is moved to &lt;span class="text-danger"&gt;&lt;strong&gt;pure functions&lt;/strong&gt;&lt;/span&gt; (&lt;code&gt;build_url&lt;/code&gt;, &lt;code&gt;pluck_definition&lt;/code&gt;). The &lt;span class="text-danger"&gt;&lt;strong&gt;pure functions&lt;/strong&gt;&lt;/span&gt; are easily testable by just calling them on made-up data structures; no Frankenstein needed.&lt;/p&gt;
&lt;p&gt;This separation into an &lt;span class="text-success"&gt;&lt;strong&gt;imperative shell&lt;/strong&gt;&lt;/span&gt; and &lt;span class="text-danger"&gt;&lt;strong&gt;functional core&lt;/strong&gt;&lt;/span&gt; is an encouraged idea by Functional Programming.&lt;/p&gt;
&lt;p&gt;Ideally, though, in a real system, you wouldn't test elements as small as these routines, but integrate more of the system. See &lt;a href="tdd-revisited-pytest-updated-2020-09-03.html#update-2020-09-03-keep-coupling-low"&gt;the coupling chapter of my previous post&lt;/a&gt; to understand the trade-offs.&lt;/p&gt;
&lt;h1 id="functional-core-imperative-shell-vs-clean-architecture"&gt;&lt;a class="toclink" href="#functional-core-imperative-shell-vs-clean-architecture"&gt;Functional Core / Imperative Shell vs. Clean Architecture&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Look at &lt;a href="https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html"&gt;Uncle Bob's Clean Architecture chart&lt;/a&gt; (Copyright Robert C. Martin aka. Uncle Bob) :
&lt;img alt="The Clean Architecture" class="img-fluid" src="images/CleanArchitecture.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;Uncle Bob's &lt;span class="text-danger"&gt;&lt;strong&gt;Use Cases&lt;/strong&gt;&lt;/span&gt; and &lt;span class="text-warning"&gt;&lt;strong&gt;Entities&lt;/strong&gt;&lt;/span&gt; (red and yellow circles of the chart) map to the &lt;span class="text-danger"&gt;&lt;strong&gt;pure functions&lt;/strong&gt;&lt;/span&gt; we saw earlier - &lt;code&gt;build_url&lt;/code&gt; and &lt;code&gt;pluck_definition&lt;/code&gt; from Listing 3, and the &lt;span class="text-warning"&gt;&lt;strong&gt;plain objects&lt;/strong&gt;&lt;/span&gt; they receive as parameters and send as outputs. &lt;em&gt;(updated 2020-10-28)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Uncle Bob's &lt;span class="text-success"&gt;&lt;strong&gt;Interface Adapters&lt;/strong&gt;&lt;/span&gt; (green circle) map to the top-level &lt;span class="text-success"&gt;&lt;strong&gt;imperative shell&lt;/strong&gt;&lt;/span&gt;  from earlier - &lt;code&gt;find_definition&lt;/code&gt; from Listing 3, handling only I/O to the outside (Web, DB, UI, other frameworks).&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.reddit.com/r/programming/comments/jj7ave/the_grand_unified_theory_of_software_architecture/gabst6z/?context=3"&gt;Update 2020-10-28&lt;/a&gt;: A "Model" object in today's MVC frameworks is a poisoned apple: it is not a &lt;a href="https://khanlou.com/2014/12/pure-objects/"&gt;"pure" object&lt;/a&gt; or &lt;a href="http://xunitpatterns.com/Humble%20Object.html"&gt;"humble" object&lt;/a&gt;, but one that can produce side effects like saving or loading from the database. Their "save" and "read" methods litter your code with untestable side-effects all over. Avoid them, or confine them to the periphery of your system and reduce their influence accordingly (they are actually a hidden &lt;span class="text-success"&gt;&lt;strong&gt;Interface Adapter&lt;/strong&gt;&lt;/span&gt;) due to interacting with the DB.&lt;/p&gt;
&lt;p&gt;Notice the arrows on the left side of the circles, pointing inwards to more and more abstract parts. These are procedure or function calls. Our code is called by the outside. &lt;strong&gt;This has some exceptions. Whatever you do, the database won't call your app. But the web can, a user can through a UI, the OS can through STDIN, and a timer can, at regular intervals (such as in a game).&lt;/strong&gt; &lt;em&gt;(updated 2020-10-28)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The top-level procedure:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;gets the input, &lt;/li&gt;
&lt;li&gt;adapts it to simple objects acceptable to the system,&lt;/li&gt;
&lt;li&gt;pushes it through the functional core,&lt;/li&gt;
&lt;li&gt;gets the returned value from the functional core,&lt;/li&gt;
&lt;li&gt;adapts it for the output device,&lt;/li&gt;
&lt;li&gt;and pushes it out to the output device.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This lets us easily test the functional core. Ideally, most of a production system should be pure-functional.&lt;/p&gt;
&lt;h1 id="benefits"&gt;&lt;a class="toclink" href="#benefits"&gt;Benefits&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;If you reduce the &lt;span class="text-success"&gt;&lt;strong&gt;imperative shell&lt;/strong&gt;&lt;/span&gt; and move code into the &lt;span class="text-danger"&gt;&lt;strong&gt;functional core&lt;/strong&gt;&lt;/span&gt;, each test can verify almost the entire (now-functional) stack, but stopping short of actually performing external actions.&lt;/p&gt;
&lt;p&gt;You can then test the imperative shell using &lt;strong&gt;fewer integration tests&lt;/strong&gt;: you only need to check that it is &lt;strong&gt;correctly connected&lt;/strong&gt; to the functional core.&lt;/p&gt;
&lt;p&gt;Having two users for the system - the real user and the unit tests - and listening to both, lets you guide your architecture so as to &lt;strong&gt;minimize coupling&lt;/strong&gt; and build a more &lt;strong&gt;flexible system&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Having a flexible system lets you implement new features and change existing ones &lt;strong&gt;quickly and cheaply&lt;/strong&gt;, in order to &lt;strong&gt;stay competitive as a business&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Comments are much appreciated. I am yet to apply these insights, and I may be missing something!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Edit 2020-10-28:&lt;/strong&gt; I have tried out this methodology in some small TDD Katas, and together with TDD, it works great. But I am not employed right now, so I can't say I've &lt;em&gt;really&lt;/em&gt; tried it.&lt;/p&gt;</content><category term="English"></category><category term="Tech"></category><category term="Programming"></category></entry><entry><title>Installing Isso on Debian &amp; Apache</title><link href="https://danuker.go.ro/installing-isso-on-debian-apache.html" rel="alternate"></link><published>2020-09-01T12:15:00+03:00</published><updated>2020-09-01T12:15:00+03:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2020-09-01:/installing-isso-on-debian-apache.html</id><summary type="html">&lt;p&gt;&lt;a href="https://posativ.org/isso/"&gt;Isso&lt;/a&gt; is a self-hosted alternative to Disqus (comments on websites). &lt;/p&gt;
&lt;p&gt;I installed it. You can comment on my blog without loading third party sites or creating any accounts now. You can even comment anonymously. Please don't abuse this, or I will turn it off.&lt;/p&gt;
&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#installing-the-server"&gt;Installing the server&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#importing-old-comments"&gt;Importing old comments …&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</summary><content type="html">&lt;p&gt;&lt;a href="https://posativ.org/isso/"&gt;Isso&lt;/a&gt; is a self-hosted alternative to Disqus (comments on websites). &lt;/p&gt;
&lt;p&gt;I installed it. You can comment on my blog without loading third party sites or creating any accounts now. You can even comment anonymously. Please don't abuse this, or I will turn it off.&lt;/p&gt;
&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#installing-the-server"&gt;Installing the server&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#importing-old-comments"&gt;Importing old comments&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#apache"&gt;Apache&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#installing-the-client"&gt;Installing the client&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#rant-on-js"&gt;Rant on JS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#no-e-mail-notification-of-reply"&gt;No e-mail notification of reply&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#legal-issues"&gt;Legal issues&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h1 id="installing-the-server"&gt;&lt;a class="toclink" href="#installing-the-server"&gt;Installing the server&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;See: &lt;a href="https://posativ.org/isso/docs/quickstart/"&gt;https://posativ.org/isso/docs/quickstart/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I modified the Debian &lt;code&gt;isso&lt;/code&gt; package's systemd init script, &lt;code&gt;/lib/systemd/system/isso.service&lt;/code&gt;, to start Isso's Python server directly, and not through GUnicorn, which I could not get working easily. This loses performance (I just have one worker thread, this means ~40 requests/second tops; totally not enough for my high-traffic site).&lt;/p&gt;
&lt;p&gt;(You can find the location of the systemd script and anything else installed by the Debian package using &lt;code&gt;dpkg -L isso | less&lt;/code&gt;).&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c1"&gt;# Enable automatic startup on system boot using systemd&lt;/span&gt;
$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;systemctl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;enable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;isso
&lt;span class="c1"&gt;# Start it right now also&lt;/span&gt;
$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;systemctl&lt;span class="w"&gt; &lt;/span&gt;start&lt;span class="w"&gt; &lt;/span&gt;isso
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;I preferred Debian's package because it conveniently creates an &lt;code&gt;isso&lt;/code&gt; user. This was the only one with write rights to the comment DB. Still, e-mails are sensitive data, so I changed it so that no users other than &lt;code&gt;isso&lt;/code&gt; and &lt;code&gt;root&lt;/code&gt; have read rights either:
&lt;code&gt;sudo chmod 600 /var/lib/isso/comments.db&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The Debian package config is in &lt;code&gt;/etc/isso.d/enabled/&lt;/code&gt;. But that is an empty directory, somehow to be interpreted by GUnicorn. I also hammered the SystemD service to use a fixed file &lt;code&gt;/etc/isso.d/enabled/isso.cfg&lt;/code&gt;. It's not like you have tens of configs.&lt;/p&gt;
&lt;p&gt;My config, in order to have the /isso/ virtual subdir instead of a subdomain which would require a separate SSL certificate:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;[general]

; database location, check permissions, automatically created if not exists
dbpath = /var/lib/isso/comments.db

; your website or blog (not the location of Isso!)
host = 
        http://danuker.go.ro
        https://danuker.go.ro

[server]
listen = http://localhost:1550
public-endpoint = https://danuker.go.ro/isso/
reload = off
profile = off

[guard]
enabled = true
ratelimit = 2
direct-reply = 5
reply-to-self = false
require-author = false
require-email = false

[hash]
salt = &amp;lt;censored&amp;gt;
algorithm = pbkdf2

[admin]
enabled = true
password = &amp;lt;censored&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="importing-old-comments"&gt;&lt;a class="toclink" href="#importing-old-comments"&gt;Importing old comments&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I decided to import the old comments from Disqus. Given that the original users wanted to publish them, it is clear they would have wanted this as well.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;scp&lt;span class="w"&gt; &lt;/span&gt;-P&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;22&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-r&lt;span class="w"&gt; &lt;/span&gt;disqus-export.xml&lt;span class="w"&gt; &lt;/span&gt;dan@danuker.go.ro:/home/dan/disqus-export.xml
mosh&lt;span class="w"&gt; &lt;/span&gt;dan@danuker.go.ro
&lt;span class="c1"&gt;# (enter password)&lt;/span&gt;
sudo&lt;span class="w"&gt; &lt;/span&gt;su
&lt;span class="c1"&gt;# (enter password again)&lt;/span&gt;
isso&lt;span class="w"&gt; &lt;/span&gt;-c&lt;span class="w"&gt; &lt;/span&gt;/etc/isso.d/enabled/isso.cfg&lt;span class="w"&gt; &lt;/span&gt;import&lt;span class="w"&gt; &lt;/span&gt;/home/dan/disqus-export.xml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="apache"&gt;&lt;a class="toclink" href="#apache"&gt;Apache&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I use an Apache server instead of the illustrated Nginx. I had to learn to use the &lt;code&gt;ProxyPass&lt;/code&gt; and &lt;code&gt;ProxyPassReverse&lt;/code&gt; directives in my &lt;code&gt;/etc/apache2/sites-enabled/&lt;/code&gt; configs. In case you want its endpoint to be on &lt;code&gt;/isso/&lt;/code&gt; and run the isso server on port 1550, Here they are:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="gh"&gt;# Proxy for Isso commenting&lt;/span&gt;
ProxyPass /isso/ http://localhost:1550/
ProxyPassReverse /isso/ http://localhost:1550/
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h1 id="installing-the-client"&gt;&lt;a class="toclink" href="#installing-the-client"&gt;Installing the client&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Integration in your website (without NodeJS/Bower/NPM optimization crud). I just hammered this into the comment section of the &lt;code&gt;pelican-bootstrap3&lt;/code&gt; theme:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt; &lt;span class="na"&gt;data-isso&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"isso/"&lt;/span&gt;
        &lt;span class="na"&gt;data-isso-reply-to-self&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"false"&lt;/span&gt;
        &lt;span class="na"&gt;data-isso-require-author&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"false"&lt;/span&gt;
        &lt;span class="na"&gt;data-isso-require-email&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"false"&lt;/span&gt;
        &lt;span class="na"&gt;data-isso-avatar&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"true"&lt;/span&gt;
        &lt;span class="na"&gt;data-isso-avatar-bg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"#f0f0f0"&lt;/span&gt;
        &lt;span class="na"&gt;data-isso-vote&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"true"&lt;/span&gt;
        &lt;span class="na"&gt;data-isso-feed&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"false"&lt;/span&gt;
        &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"issojs/embed.js"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"isso-thread"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h1 id="rant-on-js"&gt;&lt;a class="toclink" href="#rant-on-js"&gt;Rant on JS&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;I did not want to use any NodeJS/Bower/NPM package managers. I don't want Bower and NPM and browserify and whatnot for a script that validates 3 forms and sends a post request. To me they look like trojan horses. Sure, PyPi is not much different, but Python includes &lt;a href="https://www.theregister.com/2016/03/23/npm_left_pad_chaos/"&gt;string padding&lt;/a&gt; without needing to install another shady 3rd party dependency that could go rogue at any moment.&lt;/p&gt;
&lt;p&gt;Luckily, the Debian and PyPi packages contain the standalone embeddable JS files, with all dependencies included.&lt;/p&gt;
&lt;h1 id="no-e-mail-notification-of-reply"&gt;&lt;a class="toclink" href="#no-e-mail-notification-of-reply"&gt;No e-mail notification of reply&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;I didn't bother setting up e-mail notifications. If you want to see what people reply to your discussion, bookmark the page and visit it later.&lt;/p&gt;
&lt;h1 id="legal-issues"&gt;&lt;a class="toclink" href="#legal-issues"&gt;Legal issues&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;See all I have to say on the &lt;a href="pages/privacy-statement.html"&gt;Privacy statement page&lt;/a&gt;.&lt;/p&gt;</content><category term="English"></category><category term="Self-hosted"></category><category term="Freedom of speech"></category><category term="Libre Software"></category><category term="Internet"></category><category term="Isso"></category></entry><entry><title>Despre votul electronic</title><link href="https://danuker.go.ro/despre-votul-electronic.html" rel="alternate"></link><published>2020-08-31T12:36:00+03:00</published><updated>2020-08-31T12:36:00+03:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2020-08-31:/despre-votul-electronic.html</id><summary type="html">&lt;p&gt;Sunt un programator.&lt;/p&gt;
&lt;p&gt;Deocamdată mă tem de votul electronic, și o să vă prezint câteva riscuri.&lt;/p&gt;
&lt;h1 id="o-baza-de-date-centralizata"&gt;&lt;a class="toclink" href="#o-baza-de-date-centralizata"&gt;O bază de date centralizată&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Dacă o astfel de bază de date ar aduna voturile, aceasta ar fi cel mai vulnerabil punct. Orice persoană ce are acces la acel sistem poate vedea cine a …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Sunt un programator.&lt;/p&gt;
&lt;p&gt;Deocamdată mă tem de votul electronic, și o să vă prezint câteva riscuri.&lt;/p&gt;
&lt;h1 id="o-baza-de-date-centralizata"&gt;&lt;a class="toclink" href="#o-baza-de-date-centralizata"&gt;O bază de date centralizată&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Dacă o astfel de bază de date ar aduna voturile, aceasta ar fi cel mai vulnerabil punct. Orice persoană ce are acces la acel sistem poate vedea cine a votat și cum, sau chiar să schimbe voturi.&lt;/p&gt;
&lt;p&gt;Orice numărătoare în paralel ar fi imposibilă, datorită naturii software-ului. E foarte scump, dacă nu imposibil, să se inspecteze exact ce cod rulează în orice moment pe un calculator. Fără o astfel de inspecție efectuată de reprezentanți ai partidelor, nu aș avea încredere în sistem.&lt;/p&gt;
&lt;p&gt;Personal, nu aș accepta nici un sistem privat, nici un sistem al guvernului. Asta deoarece orice atacator ar avea enorm de câștigat (control ilegitim asupra puterii), și sistemele informatice sunt în general nesigure indiferent de proveniență, și siguranța informatică nu poate fi dovedită absolut.&lt;/p&gt;
&lt;h1 id="pandemie-parlamentara"&gt;&lt;a class="toclink" href="#pandemie-parlamentara"&gt;Pandemie Parlamentară&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Ședințele parlamentarilor &lt;a href="http://www.cdep.ro/pls/dic/site2015.page?den=act2_1&amp;amp;par1=3#t3c1s1sba68"&gt;ar trebui să fie publice, conform Constituției&lt;/a&gt;, deși "Camerele pot hotărî ca anumite şedinţe să fie secrete".&lt;/p&gt;
&lt;p&gt;În acest moment, cu pandemia, &lt;a href="http://www.cdep.ro/pls/steno/evot2015.data?dat=20200825"&gt;votul Camerei Deputaților&lt;/a&gt; nu e public, și ar putea fi vulnerabil la atacuri informatice. Nici un "Id vot" nu poate fi examinat public, și trebuie să mergem pe încredere că suma voturilor e corectă. Oare parlamentarii pot verifica cum au votat? Pot administratorii sistemului electronic să schimbe votul după bunul plac?&lt;/p&gt;
&lt;p&gt;Asta în contrast cu &lt;a href="http://www.cdep.ro/pls/steno/evot2015.data?dat=20200319"&gt;primul vot la distanță&lt;/a&gt; din martie, de exemplu, unde atât noi cât și parlamentarii pot vedea că dl. deputat Dohotaru Adrian-Octavian nu a votat, în rest toate voturile au fost de "DA".&lt;/p&gt;
&lt;h1 id="furtul-de-identitate"&gt;&lt;a class="toclink" href="#furtul-de-identitate"&gt;Furtul de identitate&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;În cazul în care cineva preia controlul calculatorului/telefonului/contului unui alegător, ar putea vota în locul acestuia. Dar e mult mai scump să spargi milioane de sisteme în același timp, în loc de unul singur (cel centralizat).&lt;/p&gt;
&lt;h1 id="cerinte"&gt;&lt;a class="toclink" href="#cerinte"&gt;Cerințe&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Ce cerințe am eu pentru a putea avea încredere în vot electronic:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Fiecare cetățean să își poată genera singur un certificat digital (semnătură electronică). Asta pentru a preveni posibila interceptare a cheilor private în cazul generării lor într-un loc centralizat - aceleași probleme ca baza de date de mai sus. Mă opun și legii actuale a semnăturii digitale din același motiv: furnizorii adună toate identitățile într-un loc centralizat foarte tentant.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Să existe o bază de date atât de descentralizată încât să poată fiecare cetățean să țină o copie în timpul alegerii, și să o poată examina în timp real - să verifice că sistemul a înregistrat votul intenționat, și să aibă posibilitatea de a-și anula votul permanent în caz că descoperă o schimbare (cauzată de compromiterea certificatului).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Pentru a asigura existența fizică a alegătorului, și a preveni crearea de certificate pentru persoane fictive, fiecare certificat trebuie validat de o autoritate a statului. (Poate Evidența Populației, sau BEC).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Pentru a păstra secretul votului, e necesară o schemă criptografică specială. Un exemplu e ZK-SNARK din moneda criptografică Zcash, sau semnături "ring" din Monero. Aceste scheme ar permite verificarea că toate voturile au fost efectuate corect, și ar permite numărarea voturilor, dar fără a expune cu ce partid a votat un cetățean anume. Nu cunosc în detaliu cum funcționează aceste scheme încă, și acestea mai au &lt;a href="https://www.coindesk.com/zcash-team-reveals-it-fixed-a-catastrophic-coin-counterfeiting-bug"&gt;probleme grave din când în când&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Cerințele mele 1 și 2 sunt îndeplinite deja de Bitcoin, Ethereum, și practic orice monedă virtuală cu o bază de date distribuită. Despre 3, ar fi o procedură similară cu înscrierea din timp la o anumită secție de votare, după care BEC ar publica toate certificatele autorizate să voteze electronic, posibil prin a trimite un "VotCoin" în contul fiecărui cetățean. &lt;/p&gt;
&lt;p&gt;Despre 4, nu cred că acest lucru poate fi asigurat încă, motiv pentru care sunt sceptic în legătură cu orice sistem electronic de vot. Dar dacă nu ar fi cerința #4, atunci orice vot ar fi public, iar fiind public, oricine și-ar putea verifica atât votul cât și numărătoarea.&lt;/p&gt;
&lt;p&gt;Din păcate, un vot public poate invita anumite consecințe rele, cum ar fi cumpărarea acestuia. Poate că acesta a fost și motivul pentru care nu mai vedem voturile pe site-ul Camerei Deputaților. Dar dacă nu știm ce au votat aleșii noștri, cum mai alegem noi? Cum îi tragem la răspundere?&lt;/p&gt;
&lt;p&gt;Link-uri relevante:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://eprint.iacr.org/2017/585.pdf"&gt;"Internet Voting with Zcash"&lt;/a&gt;&lt;/p&gt;</content><category term="Română"></category><category term="Politics"></category><category term="Romania"></category></entry><entry><title>TDD Revisited - pytest (updated 2020-09-03)</title><link href="https://danuker.go.ro/tdd-revisited-pytest-updated-2020-09-03.html" rel="alternate"></link><published>2020-08-31T11:46:00+03:00</published><updated>2020-09-05T13:12:00+03:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2020-08-31:/tdd-revisited-pytest-updated-2020-09-03.html</id><summary type="html">&lt;p&gt;&lt;em&gt;Updated 2020-09-03: &lt;a href="#update-2020-09-03-keep-coupling-low"&gt;Statement on coupling&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I was recently blown away by watching some of &lt;a href="http://www.cleancoder.com/products"&gt;Uncle Bob&lt;/a&gt;'s Clean Code presentations (make sure to check out his &lt;a href="http://blog.cleancoder.com/"&gt;blog&lt;/a&gt;). Of particular focus was &lt;a href="https://www.youtube.com/watch?v=58jGpV2Cg50&amp;amp;t=2628s"&gt;his demo of Test-Driven Development&lt;/a&gt;, which when done right, reduces defects, development cost, and maintenance cost of software.&lt;/p&gt;
&lt;p&gt;In …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;em&gt;Updated 2020-09-03: &lt;a href="#update-2020-09-03-keep-coupling-low"&gt;Statement on coupling&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I was recently blown away by watching some of &lt;a href="http://www.cleancoder.com/products"&gt;Uncle Bob&lt;/a&gt;'s Clean Code presentations (make sure to check out his &lt;a href="http://blog.cleancoder.com/"&gt;blog&lt;/a&gt;). Of particular focus was &lt;a href="https://www.youtube.com/watch?v=58jGpV2Cg50&amp;amp;t=2628s"&gt;his demo of Test-Driven Development&lt;/a&gt;, which when done right, reduces defects, development cost, and maintenance cost of software.&lt;/p&gt;
&lt;p&gt;In addition, it might even nudge the software architecture into a better one, by exposing awkward-to-handle points and letting you easily refactor.&lt;/p&gt;
&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#the-rules-of-tdd"&gt;The rules of TDD&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#uncle-bobs-observations-that-interest-me"&gt;Uncle Bob's observations that interest me&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#update-2020-09-03-keep-coupling-low"&gt;Update 2020-09-03: Keep coupling low&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#pytest"&gt;pytest&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h1 id="the-rules-of-tdd"&gt;&lt;a class="toclink" href="#the-rules-of-tdd"&gt;The rules of TDD&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://web.archive.org/web/20200618002844/butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd"&gt;The rules&lt;/a&gt; are as follows:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;You are not allowed to write any production code unless it is to make a failing unit test pass.&lt;/li&gt;
&lt;li&gt;You are not allowed to write any more of a unit test than is sufficient to fail; and compilation failures are failures.&lt;/li&gt;
&lt;li&gt;You are not allowed to write any more production code than is sufficient to pass the one failing unit test.&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id="uncle-bobs-observations-that-interest-me"&gt;&lt;a class="toclink" href="#uncle-bobs-observations-that-interest-me"&gt;Uncle Bob's observations that interest me&lt;/a&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Only use as many brain cells as necessary each round. Beat around the golden standard (final implementation) instead of going straight for it: test everything outside it first.&lt;ul&gt;
&lt;li&gt;This results in comprehensive coverage, that would catch anything that may go wrong.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;At each TDD increment, make tests more specific, and implementation more general&lt;ul&gt;
&lt;li&gt;Failing to do so might result in coupling your tests with the implementation. This is bad because it makes for brittle tests: any time you change the implementation, you need to change the tests. Make sure to test through the interfaces - such as the less-changing public method signatures, and not private methods or fields of objects.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;You will often find that as you implement the "trivial" tests, you'd already done a lot of the work.&lt;/li&gt;
&lt;li&gt;If a component is hard to test, you might find that it's also badly designed. Try to split it up, make sure to use small, testable units right up to the untestable UI / DB / Web / other I/O endpoints.&lt;ul&gt;
&lt;li&gt;DB and front-ends are notoriously hard to test. To work around this, make sure you push all the logic into testable chunks, and you only use the endpoints as dumb display/storage/input devices.&lt;/li&gt;
&lt;li&gt;Uncle Bob gives an example about UIs: have "Presenters" that are testable, and whose only role is to format the data into "Response Models" to be given to a front-end view (plain objects with mostly strings to display, but also enabled/disabled flags, colors if they change, or coordinates if you're in a game) - so the view has so little code in it that it does not need automated testing.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Use unit tests instead of integration tests.&lt;ul&gt;
&lt;li&gt;Integration tests are notoriously slow, requiring servers, database, heavy browsers (such as Selenium), or even a web framework (routing, middleware, complex models). Slow tests lead to you running them much less often - which make them much less useful. Unit tests which run in a few seconds at most and give you enough confidence in the code let you constantly refactor the code as needed - every TDD round.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you use TDD and get enough coverage, you can fearlessly refactor any part of your system. "Testable" is a synonym for "decoupled", and decoupled code is easy to adapt and maintain.&lt;/p&gt;
&lt;h1 id="update-2020-09-03-keep-coupling-low"&gt;&lt;a class="toclink" href="#update-2020-09-03-keep-coupling-low"&gt;Update 2020-09-03: Keep coupling low&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Only test the behavior of &lt;strong&gt;stable APIs, not methods and classes that are implementation details&lt;/strong&gt;. Otherwise, you get &lt;strong&gt;brittle tests&lt;/strong&gt; that need to be changed whenever the implementation needs changing.&lt;/p&gt;
&lt;p&gt;When your tests are brittle, it's because they are coupled to the implementation. &lt;strong&gt;Coupling kills software.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I remembered from my last job that we tested lots of things. The tests that came out were only on the (tiny) methods that did actual computation. Surely enough, we needed to replace them. This made me look more into what a "unit" is and where should tests be.&lt;/p&gt;
&lt;p&gt;Testing like this is wrong, and methods and classes are not "units". &lt;strong&gt;A (business) use case is a unit. A module is a unit.&lt;/strong&gt; A high-level class expressed in almost-English might be a unit.&lt;/p&gt;
&lt;p&gt;You &lt;strong&gt;should&lt;/strong&gt; test for the presence of &lt;strong&gt;detailed&lt;/strong&gt; behavior that does the right thing in depth, but only &lt;strong&gt;through stable interfaces&lt;/strong&gt;. This way, the tests will need modification only when the stable interfaces also need it - that is, rarely.&lt;/p&gt;
&lt;p&gt;Still, as per "unit tests instead of integration tests", you should not hit the &lt;strong&gt;slow DB, Web, framework middleware, or UI&lt;/strong&gt; during unit tests. You should isolate your code from DB/UI/Web frameworks, so that the machine can execute it quickly.&lt;/p&gt;
&lt;p&gt;This isolation is not easy, especially in today's framework-does-all environments, but following &lt;a href="#uncle-bobs-observations-that-interest-me"&gt;Uncle Bob's tips above&lt;/a&gt; might be helpful: doing-all is machine-costly.&lt;/p&gt;
&lt;p&gt;Test as far as you can reach on the edge of your system, while keeping tests fast and isolated. This would be almost like integration tests, but don't touch the endpoints (or touch them very lightly, such as through an in-memory DB that can be easily reset between cases, instead of a real DB server). &lt;/p&gt;
&lt;p&gt;Update 2020-09-05: Still, if you find that the tests are not local enough to the errors, and half of your tests fail on a bug in a component, making it harder to find the component, you may need to reduce their depth. &lt;a href="https://archive.org/details/pyvideo_422___units-need-testing-too"&gt;Gary Bernhardt&lt;/a&gt; considers a unit to be at most a 100-line class.&lt;/p&gt;
&lt;p&gt;Unit test speed is paramount. If your tests are too slow (more than, say a few seconds), then you will not be able to use them to &lt;strong&gt;make decisions while adding features and refactoring&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;More is spoken &lt;a href="https://www.youtube.com/watch?v=EZ05e7EMOLM"&gt;here by Ian Cooper - TDD, Where Did It All Go Wrong?&lt;/a&gt;. Ian Cooper's talk is inspired from Kent Beck's book on TDD in 2002 - and Ian claims this book is all you need to understand TDD.&lt;/p&gt;
&lt;h1 id="pytest"&gt;&lt;a class="toclink" href="#pytest"&gt;pytest&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;All this excitement led me to try out various testing frameworks. The first one I tried was &lt;code&gt;unittest&lt;/code&gt; which comes with the Python default library:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;unittest&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;StackTest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;unittest&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;TestCase&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;setUp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Stack&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;test_new_stack_is_empty&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;assertTrue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;is_empty&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;test_pushed_stack_is_not_empty&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;assertFalse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;is_empty&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;test_empty_pop_error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;assertRaises&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Stack&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Underflow&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pop&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;I did not enjoy the verbosity of it: &lt;code&gt;self.assertTrue&lt;/code&gt; and &lt;code&gt;self.assertFalse&lt;/code&gt; calls. There must be a better way.&lt;/p&gt;
&lt;p&gt;Also, while it does provide a &lt;code&gt;setUp&lt;/code&gt; method, I then had to use &lt;code&gt;self.s&lt;/code&gt; everywhere, because it was an instance variable. &lt;/p&gt;
&lt;p&gt;I then tried out another framework: &lt;code&gt;pytest&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;pip&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;-U&lt;span class="w"&gt; &lt;/span&gt;pytest
$&lt;span class="w"&gt; &lt;/span&gt;pytest&lt;span class="w"&gt; &lt;/span&gt;stack.py
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;pytest&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;test_new_stack_is_empty&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="k"&gt;assert&lt;/span&gt; &lt;span class="n"&gt;Stack&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;is_empty&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;test_stack_not_empty_after_push&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Stack&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;assert&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;is_empty&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;test_stack_empty_after_push_pop&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Stack&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pop&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;assert&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;is_empty&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;test_can_not_pop_empty&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Stack&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;pytest&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;raises&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Stack&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Underflow&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pop&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;For this particular trial, I gave up on the &lt;code&gt;setUp&lt;/code&gt; method. I preferred saying &lt;code&gt;s = Stack()&lt;/code&gt; in each test case than having to create a class (like &lt;code&gt;StackTest&lt;/code&gt;) with a constructor and then using &lt;code&gt;self.s&lt;/code&gt; instead of just &lt;code&gt;s&lt;/code&gt; everywhere.&lt;/p&gt;
&lt;p&gt;I could also have avoided the &lt;code&gt;self.&lt;/code&gt; prefixes in &lt;code&gt;unittest&lt;/code&gt;, but I would still need to create the class (for the &lt;code&gt;self.assertTrue&lt;/code&gt; stuff).&lt;/p&gt;
&lt;p&gt;In any case, now I can just say &lt;code&gt;assert X&lt;/code&gt; instead of &lt;code&gt;self.assertTrue(X)&lt;/code&gt;. It prints out magnificently, showing you the exact source line, and its evaluated assertion values.&lt;/p&gt;
&lt;p&gt;I vastly prefer &lt;code&gt;pytest&lt;/code&gt; to &lt;code&gt;unittest&lt;/code&gt; and warmly recommend it to you, if you use Python!&lt;/p&gt;
&lt;p&gt;Cheers!&lt;/p&gt;</content><category term="English"></category><category term="Tech"></category><category term="Programming"></category></entry><entry><title>Cryptocurrency security</title><link href="https://danuker.go.ro/cryptocurrency-security.html" rel="alternate"></link><published>2020-07-09T00:00:00+03:00</published><updated>2020-07-09T00:00:00+03:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2020-07-09:/cryptocurrency-security.html</id><summary type="html">&lt;p&gt;In my &lt;a href="review-of-cryptocurrencies.html"&gt;review of cryptocurrencies&lt;/a&gt;, I mentioned that Bitcoin Cash offers "relatively less security compared to Bitcoin".&lt;/p&gt;
&lt;p&gt;What did I mean by that?&lt;/p&gt;
&lt;p&gt;What are the various kinds of security that a cryptocurrency offers? How to enhance them and avoid compromising them?&lt;/p&gt;
&lt;p&gt;I will address the following questions:&lt;/p&gt;
&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#what-does-security-mean-in-a-cryptocurrency"&gt;What does …&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</summary><content type="html">&lt;p&gt;In my &lt;a href="review-of-cryptocurrencies.html"&gt;review of cryptocurrencies&lt;/a&gt;, I mentioned that Bitcoin Cash offers "relatively less security compared to Bitcoin".&lt;/p&gt;
&lt;p&gt;What did I mean by that?&lt;/p&gt;
&lt;p&gt;What are the various kinds of security that a cryptocurrency offers? How to enhance them and avoid compromising them?&lt;/p&gt;
&lt;p&gt;I will address the following questions:&lt;/p&gt;
&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#what-does-security-mean-in-a-cryptocurrency"&gt;What does security mean in a cryptocurrency?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#counterparty-risk"&gt;Counterparty risk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#private-key-security"&gt;Private key security&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#private-computer-security"&gt;Private computer security&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#systemic-security"&gt;Systemic security&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#how-to-quantify-this-security"&gt;How to quantify this security?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#is-it-worth-paying-the-transaction-fees-to-get-the-security"&gt;Is it worth paying the transaction fees to get the security?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#non-proof-of-work-currencies"&gt;Non proof-of-work currencies&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#conclusion"&gt;Conclusion&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://www.flickr.com/photos/151691693@N02/38747838010"&gt;&lt;img alt='"cryptocurrency" by stockcatalog is licensed under CC BY 2.0 ' class="img-fluid" src="images/cryptocurrency-stockcatalog.jpg"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;"cryptocurrency" by stockcatalog is licensed under CC BY 2.0 &lt;/p&gt;
&lt;h1 id="what-does-security-mean-in-a-cryptocurrency"&gt;&lt;a class="toclink" href="#what-does-security-mean-in-a-cryptocurrency"&gt;What does security mean in a cryptocurrency?&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Among the disadvantages of cryptocurrencies (&lt;a href="intro-to-cryptocurrencies.html"&gt;mentioned here&lt;/a&gt;), there are security risks, and they come in many flavors.&lt;/p&gt;
&lt;p&gt;The concept of security is only useful against specific risks. &lt;/p&gt;
&lt;p&gt;Securing a piece of information is called "Operations Security", or &lt;a href="https://en.wikipedia.org/wiki/Operations_security"&gt;OpSec&lt;/a&gt;, and it involves thinking about who could or would like to find out that information, and how to prevent them.&lt;/p&gt;
&lt;p&gt;Security against unknown risks is much harder to think about. You could enumerate many risks, but there's no guarantee that you'll think of the one that occurs.&lt;/p&gt;
&lt;h1 id="counterparty-risk"&gt;&lt;a class="toclink" href="#counterparty-risk"&gt;Counterparty risk&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;This is the risk that the person you're dealing with does not fulfill their end of the deal. Say, you send them your Dogecoin, but they don't send you the product you're buying. This is a form of fraud.&lt;/p&gt;
&lt;p&gt;This can be mitigated by:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Trading with people you trust&lt;/li&gt;
&lt;li&gt;Trading with people you have repeat business with (so their interest is not to end the profitable relationship)&lt;/li&gt;
&lt;li&gt;Breaking up a trade in small pieces (so that you only lose a small amount if the counterparty decides to defraud you)&lt;/li&gt;
&lt;li&gt;Making sure both parties understand the deal clearly before anything changes hands&lt;/li&gt;
&lt;li&gt;Using the services of a trusted mediator or arbiter&lt;ul&gt;
&lt;li&gt;For example, the Bisq decentralized exchange &lt;a href="https://docs.bisq.network/trading-rules#dispute-resolution"&gt;offers decentralized dispute resolution&lt;/a&gt;. The arbiter used to have the power to settle a transaction, but not anymore, because of &lt;a href="https://en.wikipedia.org/wiki/Collusion"&gt;collusion&lt;/a&gt;. As of now, in the case of a misunderstanding, the traders will have their transaction locked until they can agree who pays how much.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="private-key-security"&gt;&lt;a class="toclink" href="#private-key-security"&gt;Private key security&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;This is, perhaps, the riskiest part of owning a cryptocurrency. &lt;a href="https://en.bitcoin.it/wiki/List_of_Major_Bitcoin_Heists,_Thefts,_and_Losses"&gt;People have lost a lot of cryptocurrency&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Your private key is your password for spending your funds. Many wallet programs show you an ordered list of words ("passphrase") when creating a wallet. This is functionally equivalent to a cryptographic private key.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you &lt;strong&gt;lose&lt;/strong&gt; your private key, you will not be able to spend your currency. This is by design, to avoid requiring trust in third-parties. Mitigation:&lt;ul&gt;
&lt;li&gt;Backing up your private key in multiple safe physical locations (consider floods, fires, even &lt;a href="https://www.universityproducts.com/temperature-and-humidity/"&gt;temperature and humidity spoiling your paper&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Trusting a third-party &lt;a href="https://en.bitcoin.it/wiki/Multisignature"&gt;via a multisig&lt;/a&gt; (but this is riskier and more complicated in my opinion).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;If &lt;strong&gt;someone else finds&lt;/strong&gt; your private key, they are able to spend your funds. &lt;ul&gt;
&lt;li&gt;Keep your private key hidden at all times and do not send it anywhere. Note that taking a photo with a phone usually sends it to Google or Apple, and your data security is in &lt;a href="https://en.wikipedia.org/wiki/2018_Google_data_breach"&gt;their&lt;/a&gt; &lt;a href="https://techcrunch.com/2021/09/13/apple-zero-day-nso-pegasus/"&gt;hands&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Keep the computer you use firewalled, exposed as little as possible to the Internet and to USB devices from strangers, and only visit sites and download software you trust. Computer security is complex - do not store funds you can't afford to lose if you can't figure out attack surfaces.&lt;/li&gt;
&lt;li&gt;Use an offline password manager; I can recommend &lt;a href="https://keepassxc.org/"&gt;KeePassXC&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Keeping your money on an exchange is equivalent to letting the exchange have the private key (and you not having it). This defeats the purpose of owning cryptocurrencies. Withdraw from the exchange after trading. &lt;a href="https://www.youtube.com/watch?v=5mcYQpHDgXc"&gt;Learn more here.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Keeping your money in a closed-source wallet is equivalent to letting the developer have the private key. In the particular case of Jaxx, &lt;a href="https://vxlabs.com/2017/06/10/extracting-the-jaxx-12-word-wallet-backup-phrase/"&gt;it also used to let any other program read your private key&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Even keeping your money on an open-source web-based wallet &lt;a href="https://www.coindesk.com/150k-stolen-myetherwallet-users-dns-server-hijacking"&gt;is riskier&lt;/a&gt; when the server is not on your machine.&lt;/li&gt;
&lt;li&gt;Even using an open-source wallet has risks. &lt;a href="https://github.com/spesmilo/electrum/issues/3374#issuecomment-355726294"&gt;Make sure not to expose the RPC ports you're using to attackers.&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When holding significant funds that would hurt you if lost, you may want to have a hardware wallet like Trezor or Ledger, or perhaps a dedicated, always-offline computer to transact using (even with the network card removed). If you are in this situation, read about the &lt;a href="https://glacierprotocol.org/"&gt;Glacier protocol&lt;/a&gt;, learn about the motivations behind every step, and consider following its steps.&lt;/p&gt;
&lt;h1 id="private-computer-security"&gt;&lt;a class="toclink" href="#private-computer-security"&gt;Private computer security&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Some malware gets around being unable to fish for your private key by &lt;a href="https://techcrunch.com/2018/07/03/new-malware-highjacks-your-windows-clipboard-to-change-crypto-addresses/"&gt;replacing the address to send money in the clipboard&lt;/a&gt; with a similar-looking one from the attacker. Always double-check the address before hitting "send".&lt;/p&gt;
&lt;p&gt;Other malware logs your keys and eventually might learn your password.&lt;/p&gt;
&lt;p&gt;Learn how your wallet stores the keys (it is not just the passphrase in a file), and make sure they are encrypted with a password.&lt;/p&gt;
&lt;p&gt;Consider a hardware wallet (though I am not very comfortable with that device having update capabilities, nor do I trust the cryptographic security of its random number generator - I used dice, albeit not casino-grade as the &lt;a href="https://glacierprotocol.org/"&gt;Glacier protocol&lt;/a&gt; suggests).&lt;/p&gt;
&lt;h1 id="systemic-security"&gt;&lt;a class="toclink" href="#systemic-security"&gt;Systemic security&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;After you're reasonably secure locally, there comes another dimension of risk, that in the cryptocurrency system itself.&lt;/p&gt;
&lt;p&gt;Many cryptocurrencies work via proof-of-work, which is a mechanism for offering an incentive for processing transactions, and for avoiding &lt;a href="https://en.wikipedia.org/wiki/Double-spending"&gt;double-spending&lt;/a&gt;. I will present how to mitigate the double-spending risk step by step.&lt;/p&gt;
&lt;p&gt;In order to have a "permanent" transaction, it has to be included in a block with enough "confirmations". The block with the most "work" proven behind it will be the one people and systems will trust.&lt;/p&gt;
&lt;p&gt;"Work" means hashing - the amount of cryptographic puzzles of a specific difficulty you solve.
"Power" means hashes per second - or speed of work. &lt;a href="https://en.wikipedia.org/wiki/Power_(physics)"&gt;This analogous to the definition in Physics.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In order to perform a double-spend attack, you must:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Start mining a hidden chain with majority hash power (at least 51% of your and the public chain's combined powers).&lt;/li&gt;
&lt;li&gt;In your hidden chain, move some money to another address of your own.&lt;/li&gt;
&lt;li&gt;In public, send money to your victim, and wait for the victim to accept the validated transaction and send you whatever you are buying.&lt;/li&gt;
&lt;li&gt;After receiving the bought product, publish your hidden chain. &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Your chain should be longer than the old public one, since you had 51% of power, which is more than the rest of the network. This means the transaction to your victim is now part of a chain containing less work, and it will be abandoned. Your transaction in the freshly-published chain sending money to yourself will be accepted instead.&lt;/p&gt;
&lt;p&gt;Why don't people do this all the time? Find out next.&lt;/p&gt;
&lt;h2 id="how-to-quantify-this-security"&gt;&lt;a class="toclink" href="#how-to-quantify-this-security"&gt;How to quantify this security?&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The cost of overpowering the entire network is easily calculable, for example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;based on hash rate, power usage, and electricity price&lt;/li&gt;
&lt;li&gt;based on the cost of renting computing power for a 51% attack, which is what &lt;a href="https://www.crypto51.app/"&gt;Crypto51&lt;/a&gt; does.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As you can see, an attacker would only find it profitable to perform such an attack when they could gain more than the cost of the attack.&lt;/p&gt;
&lt;p&gt;If you wait more than an hour after receiving $432000 in Bitcoin in order to accept that payment, and there is no blockchain reorganization, you should be safe to give the buyer their product - if the attacker only targeted one person.&lt;/p&gt;
&lt;p&gt;It would still be profitable for a centralized attacker to target multiple people at the same time. So, if an attacker could simultaneously double-spend on 1000 users, they would only need to make $432 from each user.&lt;/p&gt;
&lt;p&gt;But such coordination could only be pulled off by big actors, and it might be against their interests, since such an attack would surely make the news and the big actor might be legally punished.&lt;/p&gt;
&lt;p&gt;One mitigation is to divide the rate by a security margin, say 10. This would imply that the doublespender buying from you is also attacking 9 other people. That way, to judge how fast you can receive funds, divide the &lt;a href="https://www.crypto51.app/"&gt;Crypto51&lt;/a&gt; rate by 10. That way, there is an organizational estimate of security, instead of just the proof-of-work cost.&lt;/p&gt;
&lt;p&gt;Bitcoin's $432000/hr attack protection would become $43200/hr for being safely confirmed by a recipient.&lt;/p&gt;
&lt;p&gt;This means a block every 10 minutes would cost $43200 / 6 = $7200. If you receive less than $7200, one blockchain confirmation should suffice in order to accept the payment.&lt;/p&gt;
&lt;p&gt;In any case, &lt;a href="https://thebitcoinnews.com/video-shows-how-easy-it-is-to-double-spend-btc-using-rbf/"&gt;you should wait for at least one blockchain confirmation&lt;/a&gt; if you do not trust the sender, and care about losing the money.&lt;/p&gt;
&lt;p&gt;Another mitigation is to deal with people you trust, and who do not seem as part of an organization that could pull off such an attack. But who do you trust when dealing with such large amounts?&lt;/p&gt;
&lt;h2 id="is-it-worth-paying-the-transaction-fees-to-get-the-security"&gt;&lt;a class="toclink" href="#is-it-worth-paying-the-transaction-fees-to-get-the-security"&gt;Is it worth paying the transaction fees to get the security?&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Bitcoin may be quite secure in this respect, but it also has &lt;a href="https://coinmetrics.io/charts/#assets=btc,bch,eth,xmr,ltc,etc,btg,bsv,dash,zec_roll=7_left=FeeMedUSD_zoom=1562630400000,1594166400000_includeZero=true_crosshair=true"&gt;quite the transaction fees (roughly $0.63 at time of writing)&lt;/a&gt;. This might make it impractical for microtransaction applications; but there is hope with the Lightning Network (a whole other article).&lt;/p&gt;
&lt;p&gt;Let's look at Bitcoin, and its less-popular, but more-spacious cousin, Bitcoin Cash (ABC). I choose these two because they use the same hash algorithm, and the "difficulty" on the chart is proportional to the attack cost.&lt;/p&gt;
&lt;p&gt;We compare how much &lt;a href="https://coinmetrics.io/charts/#assets=btc,bch_left=DiffMean_zoom=1279411200000,1593475200000"&gt;difficulty&lt;/a&gt; backs the network vs. how much &lt;a href="https://coinmetrics.io/charts/#assets=btc,bch_left=FeeTotUSD"&gt;fees are paid to the miners&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Bitcoin:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$458027 in fees per day&lt;/li&gt;
&lt;li&gt;15784G difficulty units&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bitcoin Cash:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$97 in fees per day&lt;/li&gt;
&lt;li&gt;389G difficulty units&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A difficulty unit is equivalent to &lt;a href="https://en.bitcoin.it/wiki/Difficulty#What_network_hash_rate_results_in_a_given_difficulty.3F"&gt;"around 7 Mhashes per second."&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So, Bitcoin's security costs $458027 / 15784 = ~$29.02 per Gdiff. unit, while Bitcoin Cash's costs $97 / 389 = ~$0.25.&lt;/p&gt;
&lt;p&gt;This means Bitcoin Cash offers more "bang-for-your-buck"; but it does not have a security as strict as Bitcoin's.&lt;/p&gt;
&lt;p&gt;As you can see, when not many transactions are competing for Bitcoin Cash's more spacious blocks, the cost of operating the network is much smaller, and fewer miners will secure the network.&lt;/p&gt;
&lt;p&gt;If you can live with the network requiring an attacker to make $9,839/hr from victims in order to keep staying profitable, then Bitcoin Cash may be for you. &lt;a href="https://blog.coinbase.com/a-deep-dive-into-the-recent-bch-hard-fork-incident-2ee14132f435?gi=88b7092b9666"&gt;There has probably been a double-spend attack on Bitcoin Cash in May 2019.&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you require more security than $983/hour (at the moment of writing, considering the 10-victim coefficient), then you might want to use Bitcoin or Ethereum.&lt;/p&gt;
&lt;p&gt;Beware of much-lower-hash-rate coins. For example, a double-spend on Bitcoin Gold only costs $305, in spite of it having a market cap of $156 million. Dividing by our coefficient again, this means a safe rate to receive would be around $30/hr.&lt;/p&gt;
&lt;h1 id="non-proof-of-work-currencies"&gt;&lt;a class="toclink" href="#non-proof-of-work-currencies"&gt;Non proof-of-work currencies&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;My analysis of systemic security only applies to coins using Proof of Work.&lt;/p&gt;
&lt;p&gt;I am not knowledgeable enough to evaluate the security of Proof-of-Stake currencies in any way. Also, I do not trust what I don't understand. If you find any article explaining proof-of-stake to the same level of clarity, please share it.&lt;/p&gt;
&lt;h1 id="conclusion"&gt;&lt;a class="toclink" href="#conclusion"&gt;Conclusion&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;I hope you now have a clearer picture of cryptocurrencies and the risks of using them. You might still find their benefits worth it, as I do.&lt;/p&gt;
&lt;p&gt;Remember: not your keys, not your coins.&lt;/p&gt;
&lt;p&gt;Have fun and enjoy responsibly!&lt;/p&gt;</content><category term="English"></category><category term="Economy"></category><category term="Money"></category><category term="Capitalism"></category><category term="Cryptocurrencies"></category><category term="OpSec"></category><category term="Tech"></category></entry><entry><title>Don't use VPNs</title><link href="https://danuker.go.ro/dont-use-vpns.html" rel="alternate"></link><published>2020-06-28T20:50:00+03:00</published><updated>2020-06-28T20:50:00+03:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2020-06-28:/dont-use-vpns.html</id><summary type="html">&lt;p&gt;I argue that VPNs are bad for the user, especially if the user is a dissenter from the status quo.&lt;/p&gt;</summary><content type="html">&lt;p&gt;I argue that VPNs are bad for the user, especially if the user is a dissenter from the status quo.&lt;/p&gt;
&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#vpns-present-a-centralized-point-of-monitoring"&gt;VPNs present a centralized point of monitoring&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#vpns-use-proprietary-software"&gt;VPNs use proprietary software&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#real-options-tor-i2p-freenet"&gt;Real options: Tor, I2P, Freenet&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#tor-the-onion-router"&gt;Tor (The Onion Router)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#i2p-invisible-internet-protocol"&gt;I2P (Invisible Internet Protocol)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#freenet"&gt;Freenet&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#closing"&gt;Closing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h1 id="vpns-present-a-centralized-point-of-monitoring"&gt;&lt;a class="toclink" href="#vpns-present-a-centralized-point-of-monitoring"&gt;VPNs present a centralized point of monitoring&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Similarly to your ISP or a &lt;a href="how-to-protect-your-personal-data.html"&gt;CDN&lt;/a&gt;, a VPN could just get handed a &lt;a href="https://www.aclu.org/other/national-security-letters"&gt;National Security Letter&lt;/a&gt; (or your state's equivalent) to start logging your traffic without letting you know. Of course many of them say they don't log users.&lt;/p&gt;
&lt;p&gt;The government would pay more attention when monitoring VPNs in addition to, say, ISPs, because those users are more interested in privacy.&lt;/p&gt;
&lt;p&gt;In addition, if you pay a VPN using a credit card, the payment company now knows you are up to no good, and &lt;a href="https://news.gab.com/2020/06/19/gab-blacklisted-by-visa/"&gt;might blacklist you&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id="vpns-use-proprietary-software"&gt;&lt;a class="toclink" href="#vpns-use-proprietary-software"&gt;VPNs use proprietary software&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Some VPN providers offer &lt;a href="https://github.com/OpenVPN/openvpn"&gt;OpenVPN&lt;/a&gt;, or some other free-software solution; but many use proprietary software. This has quite some implications:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;It is much more difficult to inspect what the software does. The software could be buggy or could spy on you.&lt;/li&gt;
&lt;li&gt;Constant updates might introduce new issues even after you inspect an old version of the software.&lt;/li&gt;
&lt;li&gt;The software might install new root certificates on your system, allowing them to impersonate or Man-in-the-Middle any website, like &lt;a href="https://arstechnica.com/information-technology/2015/02/lenovo-pcs-ship-with-man-in-the-middle-adware-that-breaks-https-connections/"&gt;Lenovo's Superfish&lt;/a&gt; (same is true of any otherwise-legitimate certificate authority).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Depending on your skill, wealth, the importance, and the sensitivity of the information you are transferring, you might want to audit or inspect the source code of the software you will use, as well as build it from the inspected source, and not use binaries.&lt;/p&gt;
&lt;p&gt;In addition, you need to seriously consider the trustworthiness of your service provider. One that pushes binary software that is meant to somehow offer you protection raises a red flag.&lt;/p&gt;
&lt;h1 id="real-options-tor-i2p-freenet"&gt;&lt;a class="toclink" href="#real-options-tor-i2p-freenet"&gt;Real options: Tor, I2P, Freenet&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://commons.wikimedia.org/wiki/File:Mixed_onions.jpg"&gt;&lt;img alt="Onions in the dark are good for you; CC-BY-SA Credit: Colin @ wikimedia.org" class="img-fluid" src="images/1024px-Mixed_onions.jpg"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Onions in the dark are good for you; CC-BY-SA Credit: Colin @ wikimedia.org&lt;/p&gt;
&lt;h2 id="tor-the-onion-router"&gt;&lt;a class="toclink" href="#tor-the-onion-router"&gt;&lt;strong&gt;Tor&lt;/strong&gt; (The Onion Router)&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.torproject.org/"&gt;Tor&lt;/a&gt; works by layering encrypted instructions forming a route of volunteers of the Tor network, eventually "exiting" to the open Internet, or reaching a hidden service. Each volunteer relay will decrypt the instructions targeted for them, and forward what's left to the next relay as per the instructions, without knowing where the final destination or payload is. Such decryption is analogous to peeling layers of an onion - hence the name.&lt;/p&gt;
&lt;p&gt;It would be impractical to send National Security Letters to relays around the world; and they would likely not be bound by them. I believe you should choose an exit node, correspondent, and/or relays outside of your current jurisdiction (i.e. US -&amp;gt; EU, Russia, China, Iran...). (Export control lists are handy here). Still, a lot of network relays or exit nodes might be run by governments.&lt;/p&gt;
&lt;p&gt;WikiLeaks &lt;a href="https://www.wikileaks.org/#submit"&gt;has a Tor address&lt;/a&gt; for the disclosure of leaks; which means this institution that leaked information about US war crimes trusts Tor. &lt;/p&gt;
&lt;p&gt;Note that they have a long address; be wary of short addresses, since, for example, Facebook's vanity onion address is made up entirely of English words - facebookcorewwwi.onion . &lt;a href="https://trac.torproject.org/projects/tor/wiki/doc/NextGenOnions"&gt;Version 3 onion addresses are longer and more secure&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.torproject.org/download/"&gt;Tor Browser&lt;/a&gt; is an easy way to become a lot harder to track, and is pretty well-tested, being perhaps the largest anonymity network.&lt;/p&gt;
&lt;h2 id="i2p-invisible-internet-protocol"&gt;&lt;a class="toclink" href="#i2p-invisible-internet-protocol"&gt;I2P (Invisible Internet Protocol)&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://i2p.net/en/"&gt;I2P&lt;/a&gt; works similarly to Tor, except that it uses &lt;a href="https://en.wikipedia.org/wiki/Garlic_routing"&gt;garlic routing&lt;/a&gt; - multiple messages ("bulbs" or "cloves") get grouped together, to make it supposedly harder to deanonymize.&lt;/p&gt;
&lt;p&gt;I2P is a bit harder to use, since it is &lt;a href="https://i2p.net/en/download"&gt;not so nicely-packaged as Tor Browser&lt;/a&gt;, requiring you to run the Router manually, in addition to your browser.&lt;/p&gt;
&lt;p&gt;Also, in order to access the open Internet, as opposed to anonymous I2P sites, you need an "Outproxy" of which there are quite few; whereas hidden services have better support.&lt;/p&gt;
&lt;p&gt;Both of these networks have a vulnerability, because ISPs might statistically correlate the endpoints of traffic, at the request of government. For instance, they could single you out based on the exact timestamps of your requests, and notice that another computer has network activity with sufficiently similar timestamps (serving your requests).&lt;/p&gt;
&lt;p&gt;This kind of surveillance can be performed by malicious intermediary network relays as well - perhaps that is why there was &lt;a href="https://i2p-metrics.np-tokumei.net/router-distribution"&gt;a significant uptick in Chinese I2P routers starting June 2020&lt;/a&gt;, right before US elections, for instance.&lt;/p&gt;
&lt;h2 id="freenet"&gt;&lt;a class="toclink" href="#freenet"&gt;Freenet&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://freenetproject.org/"&gt;&lt;strong&gt;Freenet&lt;/strong&gt;&lt;/a&gt; was created for more difficult situations, and does not have this specific weakness. Not only is Freenet supposed to offer some anonymity, but nodes also act as a data cache. This way, your content is available from many nodes, and you do not have to be online in order to serve it, and any surveillance will find it hard to pinpoint the original source of the content.&lt;/p&gt;
&lt;p&gt;Most importantly, this ensures that popular-enough content is very censorship-resistant. But it has the disadvantage that dynamic content is much harder to implement.&lt;/p&gt;
&lt;h1 id="closing"&gt;&lt;a class="toclink" href="#closing"&gt;Closing&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;It is up to you to figure out the most appropriate technology for your speech.&lt;/p&gt;
&lt;p&gt;It is a noble mission to expose corrupt governments that want you silenced, but it is also very risky. I hope you find these tools useful, and that you use them in a well-thought-out &lt;a href="https://en.wikipedia.org/wiki/Operations_security"&gt;Operations Security&lt;/a&gt; context. You also need a trustworthy operating system, hardware, network, and penpal.&lt;/p&gt;
&lt;p&gt;Good luck!&lt;/p&gt;</content><category term="English"></category><category term="Privacy"></category><category term="Libre Software"></category><category term="OpSec"></category><category term="Internet"></category><category term="Freedom of speech"></category><category term="Tor"></category><category term="I2P"></category><category term="Freenet"></category></entry><entry><title>Bitcoin price predictions</title><link href="https://danuker.go.ro/bitcoin-price-predictions.html" rel="alternate"></link><published>2020-04-21T00:00:00+03:00</published><updated>2020-04-21T00:00:00+03:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2020-04-21:/bitcoin-price-predictions.html</id><summary type="html">&lt;p&gt;Knowing that the next Bitcoin "halvening" will shrink inflation to half yet again &lt;a href="https://en.bitcoin.it/wiki/Controlled_supply#Projected_Bitcoins_Short_Term"&gt;next month&lt;/a&gt; (I estimate it'll be the 23rd of May), I was curious to see what's in store for the price of Bitcoin.&lt;/p&gt;
&lt;p&gt;Currently, the supply inflation is &lt;a href="https://charts.woobull.com/bitcoin-inflation/"&gt;below 4% per year, according to this pretty chart …&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;p&gt;Knowing that the next Bitcoin "halvening" will shrink inflation to half yet again &lt;a href="https://en.bitcoin.it/wiki/Controlled_supply#Projected_Bitcoins_Short_Term"&gt;next month&lt;/a&gt; (I estimate it'll be the 23rd of May), I was curious to see what's in store for the price of Bitcoin.&lt;/p&gt;
&lt;p&gt;Currently, the supply inflation is &lt;a href="https://charts.woobull.com/bitcoin-inflation/"&gt;below 4% per year, according to this pretty chart.&lt;/a&gt; This means starting next month it'll be less than 2% per year. &lt;/p&gt;
&lt;p&gt;This means it'll be quite better than say, holding Euros, which &lt;a href="https://www.investing.com/economic-calendar/m3-money-supply-198"&gt;show a roughly 5% M3 supply increase per year&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I discovered two analyses. I reproduced them and will plot both in the same chart, then explain them briefly. &lt;a href="mailto:danuthaiduc@gmail.com"&gt;Mail me&lt;/a&gt; and ask for the spreadsheet if you want it!&lt;/p&gt;
&lt;h3 id="toc"&gt;&lt;a class="toclink" href="#toc"&gt;TOC&lt;/a&gt;&lt;/h3&gt;
&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#historic-price-versus-the-two-predictions"&gt;Historic price versus the two predictions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#first-prediction-time-based-power-law"&gt;First prediction: Time-based power law&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#second-prediction-stock-to-flow-based-power-law"&gt;Second prediction: Stock-to-Flow-based power law&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#more-predictions"&gt;More predictions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#conclusion"&gt;Conclusion&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h1 id="historic-price-versus-the-two-predictions"&gt;&lt;a class="toclink" href="#historic-price-versus-the-two-predictions"&gt;Historic price versus the two predictions&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a href="images/btc-predictions.svg"&gt;&lt;img alt="Historic Bitcoin price versus the two predictions" class="img-fluid" src="images/btc-predictions.svg"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1 id="first-prediction-time-based-power-law"&gt;&lt;a class="toclink" href="#first-prediction-time-based-power-law"&gt;First prediction: Time-based power law&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;The &lt;a href="https://medium.com/quantodian-publications/bitcoins-natural-long-term-power-law-corridor-of-growth-649d0e9b3c94"&gt;first prediction&lt;/a&gt; fits a straight line to the log-log plot of Bitcoin price vs. time.&lt;/p&gt;
&lt;p&gt;There's not a lot to it; it looks accurate, but is quite loose.&lt;/p&gt;
&lt;p&gt;Fitting to the extreme points gives a "corridor", which predicts a price of $100k between 2021 and 2028, and a price between $6k and $90k, most likely about $10-20k, at the end of 2020.&lt;/p&gt;
&lt;h1 id="second-prediction-stock-to-flow-based-power-law"&gt;&lt;a class="toclink" href="#second-prediction-stock-to-flow-based-power-law"&gt;Second prediction: Stock-to-Flow-based power law&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;I learned about the Stock-to-Flow (S2F) ratio yesterday.&lt;/p&gt;
&lt;p&gt;It is defined as Stock (total supply) divided by Flow (newly created supply in the past year).&lt;/p&gt;
&lt;p&gt;This is the inverse of inflation, and it computes as the number of years it would take to re-create the supply, at current production.&lt;/p&gt;
&lt;p&gt;Investors are attracted to stores of value. Stores of value are investments with high S2F, &lt;a href="https://en.wikipedia.org/wiki/Store_of_value"&gt;among other properties&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When inflation is zero, it means the current stock is all there is, and creation has stopped. This means the stock becomes rare, and perhaps more valuable. The simple S2F model predicts an infinite price here (which is not realistic). Still, it may be useful.&lt;/p&gt;
&lt;p&gt;For comparison, there are about &lt;a href="https://materials-risk.com/the-gold-stock-to-flow-model/"&gt;190k tons of gold mined, with 2.9k tons mined every year&lt;/a&gt;. This means a S2F of ~65.5 years.&lt;/p&gt;
&lt;p&gt;Bitcoin's inflation in the past year was about 3.87%, so the S2F was 1/0.0387 ~= 25.8 years. But next month, the S2F will roughly double, to roughly 51.6 years.&lt;/p&gt;
&lt;p&gt;What's great about an &lt;a href="https://en.bitcoin.it/wiki/Controlled_supply"&gt;algorithmic supply&lt;/a&gt; is that inflation (and therefore S2F) is dictated, in the long run, by hard rules, making it predictable, and making the investment safer.&lt;/p&gt;
&lt;p&gt;Lo and behold, &lt;a href="https://medium.com/@100trillionUSD/modeling-bitcoins-value-with-scarcity-91fa0fc03e25"&gt;when fitting a power law of Price vs. S2F, you get a good fit&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This model predicts a Bitcoin price of roughly &lt;a href="https://digitalik.net/btc/"&gt;$100k in the next 4 years (May 2020 - May 2024)&lt;/a&gt;. But my chart only shows about $50k; I guess it depends a lot on the fit.&lt;/p&gt;
&lt;h1 id="more-predictions"&gt;&lt;a class="toclink" href="#more-predictions"&gt;More predictions&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Here's a &lt;a href="https://blockonomi.com/bitcoin-price-prediction-2020"&gt;plethora of other predictions&lt;/a&gt; people have made for the current year. Their &lt;a href="https://en.wikipedia.org/wiki/Interquartile_range"&gt;IQR&lt;/a&gt; is $14K to $250k.&lt;/p&gt;
&lt;p&gt;(John McAfee &lt;a href="http://dickening.com/"&gt;reneged on eating his own dick&lt;/a&gt;, haha).&lt;/p&gt;
&lt;h1 id="conclusion"&gt;&lt;a class="toclink" href="#conclusion"&gt;Conclusion&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;While these models might not be very precise, they might be accurate. If you want to gamble your money away, do it informed!&lt;/p&gt;
&lt;p&gt;Today's price of $7200 strikes me as very cheap compared to what seems to be quite the upside in the next years.&lt;/p&gt;
&lt;p&gt;Still, the models diverge quite a lot past 2024. My S2F shows upwards of $500k, while the Time model shows just $100k in 2026. I am very curious what will happen.&lt;/p&gt;
&lt;p&gt;In any case, your decisions are your sole responsibility, and not mine.&lt;/p&gt;
&lt;p&gt;If you've got any other ideas of evaluating Bitcoin quantitatively, do send them to &lt;a href="mailto:danuthaiduc@gmail.com"&gt;my e-mail&lt;/a&gt;!&lt;/p&gt;</content><category term="English"></category><category term="Economy"></category><category term="Money"></category><category term="Capitalism"></category><category term="Cryptocurrencies"></category><category term="Speculation"></category></entry><entry><title>The story of Hong Kong: mapping search engine bias</title><link href="https://danuker.go.ro/the-story-of-hong-kong-mapping-search-engine-bias.html" rel="alternate"></link><published>2020-03-18T00:00:00+02:00</published><updated>2020-03-18T00:00:00+02:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2020-03-18:/the-story-of-hong-kong-mapping-search-engine-bias.html</id><summary type="html">&lt;p&gt;A search engine has an immense influence upon the searcher. Let's explore the story of Hong Kong.&lt;/p&gt;
&lt;p&gt;Hong Kong was a UK colony before being &lt;a href="https://www.hklii.hk/eng/hk/legis/instrument/A301/declaration.html"&gt;ceded&lt;/a&gt; back to China, who declared it will let Hong Kong "enjoy a high degree of autonomy, except in foreign and defence affairs which are …&lt;/p&gt;</summary><content type="html">&lt;p&gt;A search engine has an immense influence upon the searcher. Let's explore the story of Hong Kong.&lt;/p&gt;
&lt;p&gt;Hong Kong was a UK colony before being &lt;a href="https://www.hklii.hk/eng/hk/legis/instrument/A301/declaration.html"&gt;ceded&lt;/a&gt; back to China, who declared it will let Hong Kong "enjoy a high degree of autonomy, except in foreign and defence affairs which are the responsibilities of the Central People’s Government".&lt;/p&gt;
&lt;p&gt;What's not to like? The human rights inspired by UK law, and the military defence of China. Standing on the shoulders of giants, Hong Kong became &lt;a href="https://en.wikipedia.org/wiki/List_of_countries_by_Human_Development_Index#Countries"&gt;one of the best places to live in&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But then, there came trouble.&lt;/p&gt;
&lt;h2 id="google"&gt;&lt;a class="toclink" href="#google"&gt;Google&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Here is the first result I get right now, when Googling "hong kong protest". A BBC article from 2019-11-28:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://www.bbc.com/news/world-asia-china-49317695"&gt;The Hong Kong protests explained in 100 and 500 words&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Critics feared &lt;em&gt;[extradition to China]&lt;/em&gt; could undermine judicial independence and endanger dissidents. [...]&lt;/p&gt;
&lt;p&gt;Clashes between police and activists have become increasingly violent, with police firing live bullets and protesters attacking officers and throwing petrol bombs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The article is written by the BBC, the public UK broadcaster. Its focus is on the extradition bill being controversial, and causing people to protest violently.&lt;/p&gt;
&lt;h2 id="yandex"&gt;&lt;a class="toclink" href="#yandex"&gt;Yandex&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Let's use a different search engine: the Russian one, &lt;a href="https://yandex.com/"&gt;Yandex&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The first result is the &lt;a href="https://en.wikipedia.org/wiki/2019%E2%80%9320_Hong_Kong_protests"&gt;Wikipedia article&lt;/a&gt;, which I believe is the most relevant page. This was the second result on Google as well, and it has about the same focus as the BBC article.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/2019%E2%80%9320_Hong_Kong_protests"&gt;2019–20 Hong Kong protests&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[...] ongoing protests in Hong Kong triggered by the introduction of the Fugitive Offenders amendment bill by the Hong Kong government.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Most importantly, the protests are "ongoing", meaning you can still take part if you're a Hongkonger.&lt;/p&gt;
&lt;h2 id="baidu"&gt;&lt;a class="toclink" href="#baidu"&gt;Baidu&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Now, let's see what a Chinese search engine shows me as the first result: &lt;a href="http://baidu.com/"&gt;Baidu&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://www.telegraph.co.uk/news/worldnews/asia/hongkong/11129765/Hong-Kong-pro-democracy-protests-watch-live.html"&gt;'We'll be back' Hong Kong protesters vow&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hong Kong authorities demolished a protest camp at the heart of the city's pro-democracy movement, but scores of activists taken away by police vowed their fight for genuine elections was not over&lt;/p&gt;
&lt;p&gt;Groups of up to four police arrested holdout protesters one by one&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;What is happening here? Some protesters making empty promises, while going to prison?&lt;/p&gt;
&lt;p&gt;No. It's an article from 2014, depicting the authorities' supression of a protest camp. Here, the protesters are the losing ones. The message is "Go home or go to jail". "We're in charge".&lt;/p&gt;
&lt;p&gt;The article is old, but it marks a victory for the government.&lt;/p&gt;
&lt;p&gt;The second result is some &lt;a href="https://www.npr.org/tags/352993831/hong-kong-protests"&gt;NPR&lt;/a&gt; filler &lt;a href="https://en.wikipedia.org/wiki/Red_herring"&gt;red-herring&lt;/a&gt;, showing people smile and that everything is OK.&lt;/p&gt;
&lt;p&gt;The third result is still interesting, another old 2014 article, this time from a Chinese newspaper, again depicting a victory for the government, and the surrender of some protest leaders:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://www.globaltimes.cn/content/894923.shtml"&gt;Hong Kong protest leaders surrender&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="everyone-is-loyal-to-their-tribe"&gt;&lt;a class="toclink" href="#everyone-is-loyal-to-their-tribe"&gt;Everyone is loyal to their tribe&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The moral is, every news agency has its interests, and every search engine as well. You have to pay attention to the dates, and read articles with conflicting interests in order to get a more complete picture.&lt;/p&gt;
&lt;p&gt;I ask you to think for yourself, and challenge authority. Even the western media may be manipulating information lately; and you can learn to spot fake news coming from anywhere.&lt;/p&gt;</content><category term="English"></category><category term="Politics"></category><category term="Big Tech"></category><category term="Freedom of speech"></category><category term="Media"></category><category term="Google"></category><category term="Yandex"></category></entry><entry><title>Price gouging during disasters</title><link href="https://danuker.go.ro/price-gouging-during-disasters.html" rel="alternate"></link><published>2020-03-03T16:45:00+02:00</published><updated>2020-03-03T16:45:00+02:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2020-03-03:/price-gouging-during-disasters.html</id><summary type="html">&lt;p&gt;When disaster strikes, like a fire, flood, hurricane, or an &lt;a href="https://www.arcgis.com/apps/opsdashboard/index.html#/bda7594740fd40299423467b48e9ecf6"&gt;epidemic&lt;/a&gt;, and utilities and supply chains get disrupted, you might see much higher prices for goods that yesterday were cheap. This is called &lt;strong&gt;price gouging&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://pixabay.com/photos/thunderstorm-flash-crane-hurricane-1761849/"&gt;&lt;img alt="A crane struck by lightning in a thunderstorm" class="img-fluid" src="images/thunderstorm-crane.jpg"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For instance, in 2017 after hurricane Harvey struck Texas, in some locations &lt;a href="https://www.washingtonpost.com/news/business/wp/2017/08/30/99-for-a-case-of-bottled-water-texas-stores-accused-of-price-gouging-in-wake-of-harvey/"&gt;gas prices shot …&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;p&gt;When disaster strikes, like a fire, flood, hurricane, or an &lt;a href="https://www.arcgis.com/apps/opsdashboard/index.html#/bda7594740fd40299423467b48e9ecf6"&gt;epidemic&lt;/a&gt;, and utilities and supply chains get disrupted, you might see much higher prices for goods that yesterday were cheap. This is called &lt;strong&gt;price gouging&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://pixabay.com/photos/thunderstorm-flash-crane-hurricane-1761849/"&gt;&lt;img alt="A crane struck by lightning in a thunderstorm" class="img-fluid" src="images/thunderstorm-crane.jpg"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For instance, in 2017 after hurricane Harvey struck Texas, in some locations &lt;a href="https://www.washingtonpost.com/news/business/wp/2017/08/30/99-for-a-case-of-bottled-water-texas-stores-accused-of-price-gouging-in-wake-of-harvey/"&gt;gas prices shot up to $20 per gallon, water went to $8.50 per bottle, and hotel nights almost tripled&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Even franchisors washed their hands of the stores that did this, severing ties and calling them "egregious and unethical".&lt;/p&gt;
&lt;hr/&gt;
&lt;h3 id="why-do-people-revolt-from-price-gouging"&gt;&lt;a class="toclink" href="#why-do-people-revolt-from-price-gouging"&gt;Why do people revolt from price gouging?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Well, I suppose that's viscerally clear. When you need the stuff most, that's when it gets 10x as expensive.&lt;/p&gt;
&lt;p&gt;Keep reading!&lt;/p&gt;
&lt;hr/&gt;
&lt;h3 id="what-do-people-do-to-prevent-price-gouging"&gt;&lt;a class="toclink" href="#what-do-people-do-to-prevent-price-gouging"&gt;What do people do to prevent price gouging?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;When the hurricane struck, Texas &lt;a href="https://www.texasattorneygeneral.gov/consumer-protection/disaster-and-emergency-scams/how-spot-and-report-price-gouging"&gt;already had state laws forbidding price gouging&lt;/a&gt;. Possibly not everyone followed them, as per the &lt;a href="https://www.washingtonpost.com/news/business/wp/2017/08/30/99-for-a-case-of-bottled-water-texas-stores-accused-of-price-gouging-in-wake-of-harvey/"&gt;article&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;What the article does not say: those that did follow the laws had their shelves emptied in record time, using "first come, first serve", at much less profit.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.publicdomainpictures.net/en/view-image.php?image=37956&amp;amp;picture=empty-grocery-store"&gt;&lt;img alt="Almost empty grocery store" class="img-fluid" src="images/empty-grocery-store.jpg"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;h3 id="what-might-happen-if-price-gouging-were-let-loose"&gt;&lt;a class="toclink" href="#what-might-happen-if-price-gouging-were-let-loose"&gt;What might happen if price gouging were let loose?&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Suppose you didn't buy the $8.50 bottle of water, not needing it too much, and being able to live for a day without water, while you think some more.&lt;/li&gt;
&lt;li&gt;After that, suppose a father came and bought the last 5 bottles for his sick daughter that might die if she didn't get some.&lt;ul&gt;
&lt;li&gt;If the store had sold the water cheaply, there would have been none left for the father.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;As for you, perhaps you think about the high price, and figure you can drive somewhere less affected, where it's cheaper, and buy some there. Hmm, perhaps, even bring some back and sell it - people will surely need it, and you might price it cheaper than the current profiteers, but still make non-negligible money.&lt;/li&gt;
&lt;li&gt;Others might reach the same conclusion, and do the same, and get rewarded by profit while the shortage lasts.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Of course, you can't just start doing this when a hurricane strikes - commerce in many countries requires a license, and they couldn't just let &lt;em&gt;regular people do it&lt;/em&gt;, &lt;strong&gt;gasp&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;Still, if you were an authorized merchant, and could take advantage of the situation, you might do so, instead of your regular business. This would alleviate the shortage, and reward you for your endeavour through profit.&lt;/p&gt;
&lt;p&gt;On the other hand, if you were a particularly greedy merchant, you might set your prices too high - such that very few people, if any, buy your products. In that case, it's your loss - you did not make the most money from the disaster.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If the price is too low, you sell all of your stock, but some people still need it badly and might have paid more&lt;/li&gt;
&lt;li&gt;If the price is too high, you are left with your stock at the end of the crisis, and have lost potential clients at lower prices&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A business gets the most profit by setting the price right, so that &lt;code&gt;number of sales * profit per item&lt;/code&gt; is maximized.&lt;/p&gt;
&lt;hr/&gt;
&lt;h3 id="my-impressions"&gt;&lt;a class="toclink" href="#my-impressions"&gt;My impressions&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Banning price gouging ensures the disappearance of the profit, and therefore, the resources. People will be forced to go somewhere else for water, and will have no financial motive to bring any back - it is not worth transporting heavy, cheap, and voluminous water for long distances.&lt;/p&gt;
&lt;p&gt;People are forced to rely on themselves, friends, charity, or on government aid, which is what the government wants - more control over everyone.&lt;/p&gt;
&lt;p&gt;That is how price signalling (sometimes known by the dirty word "gouging") works. It directs resources from where they're plentiful to where they're needed, while rewarding people prudent enough to stockpile what might be needed direly (sometimes known by the dirty word "speculators").&lt;/p&gt;
&lt;hr/&gt;
&lt;h3 id="my-suggestions"&gt;&lt;a class="toclink" href="#my-suggestions"&gt;My suggestions&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I believe that, during a catastrophe:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Price gouging should be only limited when selling to sick/disabled people, and&lt;/li&gt;
&lt;li&gt;there should be no taxes for goods or services sold during a catastrophe, and&lt;/li&gt;
&lt;li&gt;any natural person should be allowed to sell anything without requiring neither a license nor any reporting.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;These measures would &lt;strong&gt;mobilize the most people&lt;/strong&gt; and ensure a distributed, spontaneous response to any disaster, instead of making people wait for someone to come and rescue them, like sitting ducks.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Stores might be able to pay a premium for emergency delivery of goods, instead of waiting empty-shelved.&lt;/li&gt;
&lt;li&gt;Without the fridge running, your food will go bad soon. You could sell it to someone hungry nearby instead.&lt;/li&gt;
&lt;li&gt;Anyone could taxi people to their loved ones for money, without needing a taxi medallion from the city.&lt;/li&gt;
&lt;li&gt;Your neighbor could, say, hook you up to his car charger, and let you charge your phone&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also, there are some pitfalls you need to be aware of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;fraudsters could sell you contaminated water as drinking water - make sure the bottle of water is factory-sealed&lt;/li&gt;
&lt;li&gt;same with medicine; make sure it's in factory-sealed packaging before buying&lt;/li&gt;
&lt;li&gt;only buy prepared food from people you trust&lt;/li&gt;
&lt;li&gt;make sure produce looks good and smells good&lt;/li&gt;
&lt;li&gt;make sure home-canned food is at least under vacuum. This means it is sealed, but not necessarily that it is sterile.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In general, you won't get the same experience from a private person as from a licensed store: storage temperature and humidity might not be respected, for example. But the state should allow you to buy at your own risk, at least while it can not guarantee your survival.&lt;/p&gt;
&lt;p&gt;Poor people will be affected more strongly by these price variations. Suppose they could barely afford food at the usual price - now it's many times worse. Fortunately, this coin has two sides: they can get rich quick by doing valuable work during the crisis, instead of their usual work, or instead of doing nothing.&lt;/p&gt;
&lt;h3 id="people-that-are-poor-and-sickdisabled"&gt;&lt;a class="toclink" href="#people-that-are-poor-and-sickdisabled"&gt;People that are poor AND sick/disabled&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;People that are poor AND sick would have a lot to suffer. They would be &lt;strong&gt;unable to shop around&lt;/strong&gt; looking for smaller prices, and &lt;strong&gt;unable to work&lt;/strong&gt; to take advantage of the situation. But let's say they could reach their usual store, the nearest one.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If there is price gouging, they will likely find the product they need, but it would be too expensive.&lt;ul&gt;
&lt;li&gt;Potential solution: Legal exceptions for sick/poor people, limiting the price increase, similar to current legislation applying to ALL people.&lt;ul&gt;
&lt;li&gt;Perhaps the state should later reward the store for this, especially if the store is assaulted by lots of such people. This is to prevent businesses from refusing to serve sick customers (as sociopathic as that would be)&lt;/li&gt;
&lt;li&gt;Alternatively, the store could price-in the impact of potential disasters, and refusals should be punished, as is done typically with current legislation.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;If there is no price gouging, they will probably find an empty shelf when they reach the store.&lt;ul&gt;
&lt;li&gt;Potential solution: mandating that stores hold back some products; similar to parking for disabled; but for water, basic foods, and medicine.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;While every resource diverted towards helping the poor sick/disabled slows down the overall disaster recovery, I personally feel this would strike a fair balance.&lt;/p&gt;
&lt;hr/&gt;
&lt;h3 id="should-people-revolt-from-price-gouging"&gt;&lt;a class="toclink" href="#should-people-revolt-from-price-gouging"&gt;Should people revolt from price gouging?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;As for the feeling of disgust when you see someone price-gouge: &lt;strong&gt;you should feel disgust at the scarcity, not the merchant trying to conserve the resource&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;People are not your slaves and should not be forced to sell to you for a cheap price. The high price shows you that the resource is limited - and invites you to personally help out or to compete.&lt;/p&gt;
&lt;p&gt;When the self-interested profit motive is aligned with the common good, people will hopefully tend towards better behavior.&lt;/p&gt;
&lt;hr/&gt;
&lt;h4 id="video-game-recommendation"&gt;&lt;a class="toclink" href="#video-game-recommendation"&gt;Video game recommendation&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Perhaps you can tell I've played some &lt;a href="https://bluebottlegames.com/games/neo-scavenger"&gt;NEO Scavenger&lt;/a&gt; lately. I recommend this game, if you want to see what post-apocalyptic life might look like: sterilizing your own water, hunting, gathering, cooking, transporting goods and selling them. Check out the demo!&lt;/p&gt;
&lt;p&gt;As much as I dislike the fact that it's proprietary software, I enjoyed it. I didn't notice it doing anything strange to my computer, and you can safely contain it in a virtual machine if you are worried.&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;How's this for a disaster plan? Any thoughts?&lt;/p&gt;</content><category term="English"></category><category term="Economy"></category><category term="Politics"></category><category term="Capitalism"></category><category term="Money"></category></entry><entry><title>Frequency of bug/fix commits</title><link href="https://danuker.go.ro/frequency-of-bugfix-commits.html" rel="alternate"></link><published>2019-12-11T14:10:00+02:00</published><updated>2019-12-11T14:10:00+02:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2019-12-11:/frequency-of-bugfix-commits.html</id><summary type="html">&lt;p&gt;I shared my &lt;a href="/programming-languages.html"&gt;previous post&lt;/a&gt; on Reddit, and I got some &lt;a href="https://www.reddit.com/r/programming/comments/e6gyl3/programming_language_terseness_vs_popularity/f9r2yee/?context=3"&gt;very useful feedback&lt;/a&gt; which pointed out the irrelevance of what I was measuring (and also a &lt;a href="https://arxiv.org/abs/1911.11894"&gt;scientific paper&lt;/a&gt; pointing out many statistical errors in a "real" GitHub study).&lt;/p&gt;
&lt;p&gt;So, I figured I'd measure something more relevant: bugs.&lt;/p&gt;
&lt;h2 id="caveats"&gt;&lt;a class="toclink" href="#caveats"&gt;Caveats&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Sadly …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I shared my &lt;a href="/programming-languages.html"&gt;previous post&lt;/a&gt; on Reddit, and I got some &lt;a href="https://www.reddit.com/r/programming/comments/e6gyl3/programming_language_terseness_vs_popularity/f9r2yee/?context=3"&gt;very useful feedback&lt;/a&gt; which pointed out the irrelevance of what I was measuring (and also a &lt;a href="https://arxiv.org/abs/1911.11894"&gt;scientific paper&lt;/a&gt; pointing out many statistical errors in a "real" GitHub study).&lt;/p&gt;
&lt;p&gt;So, I figured I'd measure something more relevant: bugs.&lt;/p&gt;
&lt;h2 id="caveats"&gt;&lt;a class="toclink" href="#caveats"&gt;Caveats&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Sadly, there is no cheap way of measuring bugs due to language. What I did was similar to the paper &lt;strong&gt;criticized&lt;/strong&gt; in the paper above, but with much fewer projects (roughly 20 per language), and a much simpler pipeline.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This is not a scientific study. It is an informal hobby analysis, for discovering fun facts and/or languages. Use at your own risk!&lt;/li&gt;
&lt;li&gt;Correlation is not causation. Just because there are more bugfix commits in a language, doesn't mean the language is at fault.&lt;ul&gt;
&lt;li&gt;The difference might be caused by something else, such as developer experience, or the use cases of the language, or the way the language is used.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;I did not correct for developer experience, number of developers, project size, or many other factors. When you create a model taking such variables into account, and holding them constant, you might get less overlap between languages.&lt;/li&gt;
&lt;li&gt;The detection of bug/fix commits is very primitive: whatever is being returned by the GitHub query "fix OR fixed OR bug". This could be improved by using neural networks and somesuch (I would recommend character-level, in the case of commit messages). Also, the linked paper uses &lt;a href="https://en.wikipedia.org/wiki/Bonferroni_correction"&gt;Bonferroni adjustment&lt;/a&gt; to mitigate the error rate, but I didn't, because I don't know what the error rate is in my case.&lt;/li&gt;
&lt;li&gt;There may still be unfixed bugs in the analyzed repositories (at least those reported as issues, but not yet fixed).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-did-i-do"&gt;&lt;a class="toclink" href="#what-did-i-do"&gt;What did I do&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Search for the programming language's name, and then click on the programming language itself as a filter&lt;/li&gt;
&lt;li&gt;Get top GitHub projects sorted by "most forked"&lt;/li&gt;
&lt;li&gt;Eliminate projects which are about learning or collections of other software&lt;/li&gt;
&lt;li&gt;Try to eliminate projects which, as a commit message policy, use "Fix" or "Bug" even for new features added&lt;/li&gt;
&lt;li&gt;Eliminate projects with less than 200 commits&lt;/li&gt;
&lt;li&gt;Eliminate projects with less than 75% of it being the main programming language&lt;/li&gt;
&lt;li&gt;Only keep one project per language from each GitHub account&lt;/li&gt;
&lt;li&gt;For each project, divide number of bug commits by total commits&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I have breached a few rules with Mathematica and Jupyter Notebook, because it was very difficult to find code with these constraints. Example: &lt;a href="https://github.com/InsightSoftwareConsortium/SimpleITK-Notebooks"&gt;this&lt;/a&gt; is a learning/tutorial project with both R and Python.&lt;/p&gt;
&lt;h2 id="boxplot"&gt;&lt;a class="toclink" href="#boxplot"&gt;Boxplot&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;In spite of the aforementioned limitations, I produced a pretty &lt;a href="https://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.boxplot"&gt;Matplotlib boxplot&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The boxplot boxes show the interquartile range (IQR - 25th percentile to 75th percentile). The median (50th percentile, or value that splits the data in two halves) is in red. The whiskers are not modified from the default &lt;code&gt;whis&lt;/code&gt; behavior, covering data 1.5 IQRs above and below (right and left actually, in this image) the box ends themselves. Anything more than 1.5 IQRs away are outliers (marked with circles).&lt;/p&gt;
&lt;p&gt;&lt;img alt="Boxplot of bugfix frequency" class="img-fluid" src="images/prog-lang-bugfixes.png"/&gt;&lt;/p&gt;
&lt;h2 id="conclusion"&gt;&lt;a class="toclink" href="#conclusion"&gt;Conclusion&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;While this analysis was fun, it was not very informative. As you can see, there is significant overlap, even if we used the IQR which covers 50% of data, much less than the 95% confidence interval required for a typical statistical test. Even JavaScript's lower whisker is lower than any language's 75% percentile.&lt;/p&gt;
&lt;p&gt;This means there is a lot of variation between projects within the same language, so much so that we can not tell which languages are better.&lt;/p&gt;
&lt;p&gt;I added some Jupyter Notebook repositories, because I suspected Mathematica and Clojure use the REPL a lot, which I suspect leads to more testing of the code and fewer bugs committed. It seems using a REPL &lt;em&gt;might&lt;/em&gt; have a positive influence, seeing that the median gets between Clojure and Mathematica, though again, that might not mean much - there are many "suspect" links there, and many Jupyter projects are for learning and/or presentation purposes, which might influence bugfix rates (I couldn't get around that, because there're so few with sufficient commit counts).&lt;/p&gt;
&lt;p&gt;Still, I think I will try out Clojure. The low fix rate (~14% of commits compared to Python's ~23%) might mean I'll learn something.&lt;/p&gt;
&lt;p&gt;As usual, you can find the &lt;a href="https://github.com/danuker/Explorations/tree/master/bugfix-ratios"&gt;Jupyter Notebook on my GitHub repository&lt;/a&gt;.&lt;/p&gt;</content><category term="English"></category><category term="Libre Software"></category><category term="Tech"></category><category term="Programming"></category></entry><entry><title>Programming languages</title><link href="https://danuker.go.ro/programming-languages.html" rel="alternate"></link><published>2019-11-26T13:14:00+02:00</published><updated>2019-11-26T13:14:00+02:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2019-11-26:/programming-languages.html</id><summary type="html">&lt;p&gt;I decided to review some programming languages, by comparing their popularity with their &lt;a href="http://rosettacode.org/"&gt;Rosetta Code&lt;/a&gt; implementation terseness.&lt;/p&gt;
&lt;p&gt;I measured terseness as the average of implementations' estimated zipped code filesize.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 2021-01-17&lt;/strong&gt;: After another &lt;a href="https://www.reddit.com/r/programming/comments/kyu8ze/why_haskell_is_our_first_choice_for_building/gjkibf6/"&gt;enlightening Reddit discussion&lt;/a&gt;, I realized an even worse caveat of just looking at Rosetta Code snippets is …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I decided to review some programming languages, by comparing their popularity with their &lt;a href="http://rosettacode.org/"&gt;Rosetta Code&lt;/a&gt; implementation terseness.&lt;/p&gt;
&lt;p&gt;I measured terseness as the average of implementations' estimated zipped code filesize.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 2021-01-17&lt;/strong&gt;: After another &lt;a href="https://www.reddit.com/r/programming/comments/kyu8ze/why_haskell_is_our_first_choice_for_building/gjkibf6/"&gt;enlightening Reddit discussion&lt;/a&gt;, I realized an even worse caveat of just looking at Rosetta Code snippets is the fact that some languages, like Clojure, need unit tests to reach the reliability offered by Haskell, which makes you define types upfront. The unit tests are not in Rosetta Code, but the type definitions are. Therefore, this analysis is even less relevant.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 2019-12-11&lt;/strong&gt;: I want to add a few caveats that people notified me in &lt;a href="https://www.reddit.com/r/programming/comments/e6gyl3/programming_language_terseness_vs_popularity/"&gt;this Reddit post&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The analyzed source code &lt;strong&gt;includes comments&lt;/strong&gt;, which might make up a lot of the code, like &lt;a href="https://rosettacode.org/wiki/Eban_numbers#REXX"&gt;REXX&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The tasks might use &lt;a href="https://www.reddit.com/r/programming/comments/e6gyl3/programming_language_terseness_vs_popularity/f9tcstp/?context=3"&gt;&lt;strong&gt;different algorithms&lt;/strong&gt;&lt;/a&gt; in different programming languages. Hopefully this averages out, though.&lt;/li&gt;
&lt;li&gt;The compression did not do much. What I thought was it would be a better proxy for "difficulty" than raw source code, but it's the same. &lt;a href="https://github.com/danuker/Explorations/blob/nomath/rosetta-code/Compare-programming-languages.ipynb"&gt;Here is the analysis with raw file sizes instead of zipped sizes&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;I'm not measuring what matters. Of course I'm not, what matters is different for everyone. I encourage you to use &lt;a href="https://github.com/danuker/Explorations/blob/master/rosetta-code/"&gt;my Jupyter Notebook&lt;/a&gt; and create your own analysis. Also, send a comment over, I'm very curious what you thought of! Check out the "nomath" branch also.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I averaged various metrics of popularity (zeros when they were missing):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;a href="https://www.tiobe.com/tiobe-index/"&gt;TIOBE index&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;What languages people tend to &lt;a href="https://web.archive.org/web/20190906151905/https://blog.sourced.tech/post/language_migrations/"&gt;migrate to on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Number of &lt;a href="http://rosettacode.org/"&gt;Rosetta Code&lt;/a&gt; examples themselves (people must have had lots of dedication)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Because not all languages implement all Rosetta Code tasks, I had to estimate the length of the missing ones. I did this using the SVD++ matrix factorization algorithm in &lt;a href="http://surpriselib.com/"&gt;Surprise&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Also, many language-task pairs have multiple source code files. Sometimes there were multiple implementations, but other times it was just one implementation, but split across multiple files. In all cases, I ignored the pair (as if no examples existed).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 2019-11-27&lt;/strong&gt;: I also filtered the tasks to non-math ones that I handpicked.&lt;/p&gt;
&lt;p&gt;I could then compute statistics about the longest programs, and the shortest languages.&lt;/p&gt;
&lt;p&gt;Still, I didn't want &lt;a href="https://code-golf.io/"&gt;code golf craziness from here&lt;/a&gt; (nor &lt;a href="https://codegolf.stackexchange.com/"&gt;code golf craziness from there&lt;/a&gt;). So, I also looked at the popularity of languages.&lt;/p&gt;
&lt;h2 id="non-math-map"&gt;&lt;a class="toclink" href="#non-math-map"&gt;Non-Math Map&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Update 2019-11-27:&lt;/strong&gt; Here is a map of the languages, in popularity vs. code size on &lt;strong&gt;non-math tasks handpicked by me&lt;/strong&gt;, with the &lt;a href="https://en.wikipedia.org/wiki/Pareto_efficiency"&gt;Pareto&lt;/a&gt;-nondominated space in green:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Map of programming language popularity vs. non-math code size" class="img-fluid" src="images/prog-pop-v-lang-size-nomath.png"/&gt;&lt;/p&gt;
&lt;h2 id="overall-map"&gt;&lt;a class="toclink" href="#overall-map"&gt;Overall Map&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Here is the old map, with &lt;strong&gt;all the Rosetta Code tasks&lt;/strong&gt;, including lots of numerical/math ones:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Map of programming language popularity vs. code size" class="img-fluid" src="images/prog-pop-v-lang-size.png"/&gt;&lt;/p&gt;
&lt;h2 id="comments"&gt;&lt;a class="toclink" href="#comments"&gt;Comments&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;My analysis found quite a few interesting languages. The most condensed were:&lt;/p&gt;
&lt;table class="table-striped table"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Language&lt;/th&gt;
&lt;th&gt;Average estimated code (zipped bytes)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://rosettacode.org/wiki/Category:Burlesque"&gt;Burlesque&lt;/a&gt; - crazy code golf language&lt;/td&gt;
&lt;td&gt;110.36&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Excel - sadly, not usable outside spreadsheets&lt;/td&gt;
&lt;td&gt;115.15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IDL - "Interactive Data Language"; commercial but has &lt;a href="https://github.com/gnudatalanguage/gdl"&gt;a free clone&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;141.71&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://rosettacode.org/wiki/GUISS"&gt;GUISS&lt;/a&gt; - a Windows GUI automation language&lt;/td&gt;
&lt;td&gt;144.67&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://rosettacode.org/wiki/TI-83_BASIC"&gt;TI-83-BASIC&lt;/a&gt; - a Texas Instruments calculator language&lt;/td&gt;
&lt;td&gt;144.97&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://rosettacode.org/wiki/PARI/GP"&gt;PARI/GP&lt;/a&gt; - a computer algebra system&lt;/td&gt;
&lt;td&gt;145.51&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Not all of these are useful programming languages (they are very domain-specific).&lt;/p&gt;
&lt;p&gt;But &lt;a href="http://pari.math.u-bordeaux.fr/"&gt;&lt;strong&gt;PARI/GP&lt;/strong&gt;&lt;/a&gt;, while not very popular, had &lt;a href="https://rosettacode.org/wiki/Category:PARI/GP"&gt;440 samples in Rosetta Code&lt;/a&gt; when my dataset was created. A pretty comprehensive set if you ask me! It has &lt;a href="http://pari.math.u-bordeaux.fr/Events/PARI2018b/talks/prog.pdf"&gt;programming capabilities&lt;/a&gt;. The fact that it was written by mathematicians for mathematicians intrigues me; I will check it out (I could easily install the &lt;code&gt;pari-gp&lt;/code&gt; Debian package then run &lt;code&gt;gp&lt;/code&gt;). If it is flexible enough, it should be much easier to write code in! I will set the unpopularity threshold a bit below this language.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Edit 2019-11-27&lt;/strong&gt;: After looking at non-math tasks, I chose to study R and Clojure first, instead of this algebra system; it is no longer on the Pareto frontier when including Mathematica (but it is still close).&lt;/p&gt;
&lt;p&gt;It seems &lt;a href="https://www.wolfram.com/language/"&gt;&lt;strong&gt;Mathematica's language&lt;/strong&gt;&lt;/a&gt;, a proprietary one, is also quite condensed. I don't want to learn it because it's proprietary and quite locked-in - even their tutorials show pictures instead of copyable code.&lt;/p&gt;
&lt;p&gt;The third one that caught my eye was &lt;strong&gt;MATLAB&lt;/strong&gt;. I did not expect it to be so terse, I did not think it so when I was using it during college. The reason might have been not knowing its vast library of in-built functions. A libre version is called &lt;a href="https://www.gnu.org/software/octave/"&gt;&lt;strong&gt;Octave&lt;/strong&gt;&lt;/a&gt;, which is also slightly terser, but was not on any popularity list. Still, many MATLAB scripts run as they are in Octave.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://clojure.org/"&gt;&lt;strong&gt;Clojure&lt;/strong&gt;&lt;/a&gt; (&lt;strong&gt;new on the Pareto frontier as of 2019-11-27&lt;/strong&gt;) - After considering just non-math tasks, Clojure reaches the frontier, albeit not much better than R. Clojure is a lisp-like language on the JVM.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.r-project.org/"&gt;&lt;strong&gt;R&lt;/strong&gt;&lt;/a&gt; is a free-software statistical computing language. I am liking it a lot, and it is very popular among data scientists. If I can not learn or use PARI/GP, I will try my brain at R.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.ruby-lang.org/en/"&gt;&lt;strong&gt;Ruby&lt;/strong&gt;&lt;/a&gt; and &lt;a href="https://www.php.net/"&gt;&lt;strong&gt;PHP&lt;/strong&gt;&lt;/a&gt; are very popular languages, built with the Web in mind. I have used Ruby professionally and I love it, it really is perceptibly denser than Python. Here is an example in an &lt;code&gt;irb&lt;/code&gt; session:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;even?&lt;/span&gt;
&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kp"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Here, I am "asking" the number 3 whether it is an even number. Notice the question mark, a useful convention to remind yourself that the return value is a boolean. Contrast to the Python way, which has no support for this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="kc"&gt;False&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Tiny cases like this add up, and I am not surprised Ruby is objectively terser.&lt;/p&gt;
&lt;p&gt;The reason I didn't stick with Ruby is because its numerical computing ecosystem is not as developed as Python's. But it &lt;a href="https://github.com/ruby-numo/numo-narray"&gt;is growing&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As for &lt;strong&gt;PHP&lt;/strong&gt;, I have not had much experience with it, and I'm surprised that it's shorter than Python (albeit only slightly).&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.python.org/"&gt;&lt;strong&gt;Python&lt;/strong&gt;&lt;/a&gt; is my current workhorse. This analysis is done using Python (with &lt;a href="https://pandas.pydata.org/"&gt;Pandas&lt;/a&gt; and the Mathematica-inspired &lt;a href="https://jupyter.org/try"&gt;Jupyter-Notebook&lt;/a&gt;, which can actually be used with many languages, including &lt;a href="https://github.com/jdemeyer/pari_jupyter"&gt;PARI/GP&lt;/a&gt;). It has a large and fast-growing user base, great support for a wide range of applications, and can be sped up via C extensions (as many computing libraries do).&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.java.com/en/"&gt;&lt;strong&gt;Java&lt;/strong&gt;&lt;/a&gt; is a more verbose language. I remember code "patterns" that led to something similar to &lt;code&gt;StudentFactoryManagerObserverFacadeController&lt;/code&gt;, and don't want to go back there. Still, it is arguably the most popular language (though Python ~~will most likely outgrow it~~ &lt;a href="https://insights.stackoverflow.com/trends?tags=java%2Cpython"&gt;might have outgrown it in some areas&lt;/a&gt;).&lt;/p&gt;
&lt;h2 id="hardest-tasks"&gt;&lt;a class="toclink" href="#hardest-tasks"&gt;Hardest tasks&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Update 2019-12-11&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The factorization was also useful for detecting the tasks that took the most code, independent of programming language.&lt;/p&gt;
&lt;p&gt;They might serve as inspiration for "extreme" difficulty coding interview tasks.&lt;/p&gt;
&lt;table class="table-striped table"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;Average expected code length&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://rosettacode.org/wiki/Minesweeper_game"&gt;Minesweeper-game&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;1128.487693&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://rosettacode.org/wiki/MD5/Implementation"&gt;MD5-Implementation&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;1056.812754&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://rosettacode.org/wiki/Stable_marriage_problem"&gt;Stable-marriage-problem&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;1001.869361&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://rosettacode.org/wiki/The_ISAAC_Cipher"&gt;The-ISAAC-Cipher&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;992.001283&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://rosettacode.org/wiki/Tic-tac-toe"&gt;Tic-tac-toe&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;963.968912&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://rosettacode.org/wiki/Honeycombs"&gt;Honeycombs&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;952.617747&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://rosettacode.org/wiki/Zebra_puzzle"&gt;Zebra-puzzle&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;950.222265&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://rosettacode.org/wiki/K-means%2B%2B_clustering"&gt;K-means++-clustering&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;831.377990&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://rosettacode.org/wiki/Total_circles_area"&gt;Total-circles-area&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;828.344111&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://rosettacode.org/wiki/Sudoku"&gt;Sudoku&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;820.059907&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="conclusion"&gt;&lt;a class="toclink" href="#conclusion"&gt;Conclusion&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Do not take this analysis too seriously. It has inaccuracies, and was done as a hobby/curiosity, not a formal scientific experiment.&lt;/p&gt;
&lt;p&gt;Still, I hope you learned something from this analysis. Sure, code length is not an end-all be-all metric, but short code might be easier to work with (at the expense of being harder to learn initially). I would appreciate your answer about any of the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What do you think of your programming language? Is it close to the Pareto frontier?&lt;/li&gt;
&lt;li&gt;Is the Rosetta dataset too artificial of a comparison?&lt;/li&gt;
&lt;li&gt;Does my analysis reflect reality?&lt;/li&gt;
&lt;li&gt;Did it help you choose a new language?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The Jupyter notebook and popularity data for this analysis are available &lt;a href="https://github.com/danuker/Explorations/blob/master/rosetta-code/"&gt;here&lt;/a&gt;. Check out the "nomath" branch also.&lt;/p&gt;</content><category term="English"></category><category term="Libre Software"></category><category term="Tech"></category><category term="Programming"></category></entry><entry><title>Angajat, PFA, sau SRL?</title><link href="https://danuker.go.ro/angajat-pfa-sau-srl.html" rel="alternate"></link><published>2019-11-23T18:00:00+02:00</published><updated>2019-11-23T18:00:00+02:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2019-11-23:/angajat-pfa-sau-srl.html</id><summary type="html">&lt;p&gt;Să zicem că vrei să lucrezi în România. Ce forme legale sunt, și ce impozitare au?&lt;br&gt;&lt;br&gt;În aceste calcule am presupus că:&lt;br&gt;&lt;ul&gt;&lt;li&gt;ești un neplătitor de TVA (deci nu poți nici deduce TVA din achiziții)&lt;/li&gt;&lt;li&gt;nu ai cheltuieli deductibile (care ar reduce impozitul pe venit)&lt;/li&gt;&lt;li&gt;salariul minim e de 2080 RON/lună&lt;/li&gt;&lt;li&gt;impozit pe venit de 10% (sau 3% pt. SRL)&lt;/li&gt;&lt;li&gt;CAS e de 10%&lt;/li&gt;&lt;li&gt;CASS e de 25%&lt;/li&gt;&lt;li&gt;impozitul pe dividende e de 5%&lt;/li&gt;&lt;li&gt;se aplică &lt;a href="http://legislatie.just.ro/Public/DetaliiDocumentAfis/218242#id_artA1942_ttl"&gt;deducerea personală fără persoane în întreținere, conform Art. 77 al Codului Fiscal&lt;/a&gt;.&lt;/ul&gt;&lt;/li&gt;&lt;/p&gt;</summary><content type="html">&lt;p&gt;Să zicem că vrei să lucrezi în România. Ce forme legale sunt, și ce impozitare au?&lt;/p&gt;
&lt;p&gt;În aceste calcule am presupus că:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ești un neplătitor de TVA (deci nu poți nici deduce TVA din achiziții)&lt;/li&gt;
&lt;li&gt;nu ai cheltuieli deductibile (care ar reduce impozitul pe venit)&lt;/li&gt;
&lt;li&gt;salariul minim e de 2080 RON/lună&lt;/li&gt;
&lt;li&gt;impozit pe venit de 10% (sau 3% pt. SRL)&lt;/li&gt;
&lt;li&gt;CAS e de 25%&lt;/li&gt;
&lt;li&gt;CASS e de 10%&lt;/li&gt;
&lt;li&gt;impozitul pe dividende e de 5%&lt;/li&gt;
&lt;li&gt;se aplică &lt;a href="http://legislatie.just.ro/Public/DetaliiDocumentAfis/218242#id_artA1942_ttl"&gt;deducerea personală fără persoane în întreținere, conform Art. 77 al Codului Fiscal&lt;/a&gt;.&lt;ul&gt;
&lt;li&gt;Deducerea personală se aplică doar salariilor, și nu veniturilor PFA (dar nu e semnificativă; de obicei tot PFA e mai rentabil). Deducerea e pentru impozitul de venit, deci diferența efectivă ce rămâne în buzunarul tău e de doar 10% din sumele publicate de politicieni în acel tabel.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Update 2022&lt;/strong&gt;: Salariul minim e acum de &lt;a href="https://legislatie.just.ro/Public/DetaliiDocument/246892"&gt;2550 RON/lună&lt;/a&gt;. Altă corecție: CASS (sănătate) e 10% și CAS (pensie) e 25%. Erau invers în lista de mai sus.&lt;/p&gt;
&lt;h1 id="continut"&gt;&lt;a class="toclink" href="#continut"&gt;Conținut&lt;/a&gt;&lt;/h1&gt;
&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#continut"&gt;Conținut&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#calculator-venit-net"&gt;Calculator venit net&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#grafice-venit-net"&gt;Grafice venit net&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#angajat"&gt;Angajat&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#pfa"&gt;PFA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#srl"&gt;SRL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#concluzie"&gt;Concluzie&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="calculator-venit-net"&gt;&lt;a class="toclink" href="#calculator-venit-net"&gt;Calculator venit net&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Încep cu un calculator:&lt;/p&gt;
&lt;script src="calculator/jquery-3.4.1.js"&gt;&lt;/script&gt;
&lt;script src="calculator/pfa.js"&gt;&lt;/script&gt;
&lt;style&gt;
    input[type=text] {
        background-color: lightyellow;
        text-align: right;
    }
&lt;/style&gt;
&lt;table class="table-striped table"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Salariu minim lunar&lt;/td&gt;
&lt;td&gt;&lt;input id="salariu_minim" type="text" value="2550.00"/&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Salariu / venit brut lunar&lt;/td&gt;
&lt;td&gt;&lt;input id="salariu_brut" type="text" value="2550.00"/&gt;&lt;/td&gt;
&lt;br/&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;input type="button" value="Calculeaza"/&gt;
&lt;br/&gt;
&lt;br/&gt;&lt;/p&gt;
&lt;table class="table-striped bordered table"&gt;
&lt;thead&gt;
&lt;th&gt;
&lt;/th&gt;
&lt;th colspan="3"&gt;Sume lunare (RON)&lt;/th&gt;
&lt;/thead&gt;
&lt;thead&gt;
&lt;th&gt;
&lt;/th&gt;
&lt;th&gt;
            Salariat
        &lt;/th&gt;
&lt;th&gt;
            PFA
        &lt;/th&gt;
&lt;th&gt;
            SRL (medie lunară)
        &lt;/th&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Salariu complet&lt;br/&gt;(plătit de angajator)&lt;/td&gt;
&lt;td id="salariu_complet"&gt;&lt;/td&gt;
&lt;td id="pfa_complet"&gt;&lt;/td&gt;
&lt;td id="srl_complet"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Contribuție asiguratorie de muncă&lt;br/&gt;(plătită de angajator)&lt;/td&gt;
&lt;td id="cam_sal"&gt;&lt;/td&gt;
&lt;td&gt;0.00&lt;/td&gt;
&lt;td&gt;0.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CAS&lt;/td&gt;
&lt;td id="cas_sal"&gt;&lt;/td&gt;
&lt;td id="cas_pfa"&gt;&lt;/td&gt;
&lt;td&gt;0.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CASS&lt;/td&gt;
&lt;td id="cass_sal"&gt;&lt;/td&gt;
&lt;td id="cass_pfa"&gt;&lt;/td&gt;
&lt;td id="cass_srl"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Impozit pe venit&lt;/td&gt;
&lt;td id="imp_sal"&gt;&lt;/td&gt;
&lt;td id="imp_pfa"&gt;&lt;/td&gt;
&lt;td id="imp_srl"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Impozit pe dividende&lt;/td&gt;
&lt;td&gt;0.00&lt;/td&gt;
&lt;td&gt;0.00&lt;/td&gt;
&lt;td id="dividende"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Comision contabil&lt;/td&gt;
&lt;td&gt;0.00&lt;/td&gt;
&lt;td&gt;&lt;input id="contabil_pfa" type="text" value="0.00"/&gt;&lt;/td&gt;
&lt;td&gt;&lt;input id="contabil" type="text" value="250.00"/&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Venit net PF&lt;/td&gt;
&lt;td id="net_sal"&gt;&lt;/td&gt;
&lt;td id="net_pfa"&gt;&lt;/td&gt;
&lt;td id="net_srl"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="grafice-venit-net"&gt;&lt;a class="toclink" href="#grafice-venit-net"&gt;Grafice venit net&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Continui cu două grafice.&lt;/p&gt;
&lt;p&gt;&lt;img alt="grafic cu veniturile nete" class="img-fluid" src="images/taxe-net.png"/&gt;
&lt;img alt="grafic cu veniturile nete, in proporție față de cele brute" class="img-fluid" src="images/taxe-proportie.png"/&gt;&lt;/p&gt;
&lt;h2 id="angajat"&gt;&lt;a class="toclink" href="#angajat"&gt;Angajat&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Ca angajat, îți este interzis să lucrezi sub salariul minim pe oră. Astfel, dacă nu poți produce cât salariul minim + dări, angajatorii te acceptă doar ca PFA, pentru a-și minimiza costul și riscurile legale.
În general, angajarea e forma cea mai taxată de a presta muncă, deși în jurul salariului minim e un pic mai puțin taxată decât prin PFA. La salariul minim, plătești circa 41% din ceea ce îți dă un angajator, iar dacă ai un salariu mai mare, taxarea crește încă un pic (dar e aproape tot atât; nu mai mult de 43%).&lt;/p&gt;
&lt;p&gt;Sigur, teoretic, ar trebui să primești beneficii din plata CAS și CASS: anume, asigurările de sănătate, și pensia.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sănătatea publică&lt;/strong&gt; e vraiște &lt;a href="https://en.wikipedia.org/wiki/Healthcare_in_Europe#Euro_Health_Consumer_Index_2018"&gt;conform unui studiu din 2018&lt;/a&gt;. România e pe ultimul loc la calitatea tratamentului ("outcomes"), dar are drepturile pacienților mai dezvoltate decât Albania, motiv pentru care, per total, e penultimul loc din cele 35 de țări analizate, și nu ultimul.&lt;/p&gt;
&lt;p&gt;Sistemul electronic CNAS &lt;a href="https://www.hotnews.ro/stiri-sanatate-23293481-33-care-cardul-sanatate-nu-functioneaza-primul-anunt-cnas-dupa-doua-saptamani-tacere-lucreaza-remedierea-problemelor-din-25-iulie-adica-abia-din-25-crizei.htm"&gt;are pene serioase&lt;/a&gt;. Dar &lt;a href="https://economie.hotnews.ro/stiri-telecom-23483365-licitatie-peste-32-milioane-lei-cnas-vrea-incheie-acord-cadru-3-ani-pentru-buna-functionare-sistemelor-din-sanatate.htm"&gt;CNAS încearcă să îl îmbunătățească&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Iar când comparăm &lt;strong&gt;pensia&lt;/strong&gt; medie de &lt;a href="https://www.bugetul.ro/s-a-aflat-care-este-pensia-medie-in-romania/"&gt;1188 lei&lt;/a&gt; cu salariul mediu brut, de &lt;a href="https://www.calculatorvenituri.ro/Indicators/AverageWage"&gt;5163 lei&lt;/a&gt;, ea este de 23%, adică sub contribuția de 25% pentru CASS din salariul mediu de acum. Asta chiar dacă contribui, să zicem, de la 21 până la 64 de ani (total 43 de ani), dar iei pensie de la 65 până la 75 (speranță de viață), adică 10 ani. Acest lucru înseamnă că randamentul fondului de pensii este groaznic: la fiecare leu contribuit primești înapoi 23/25 * 10/43 = 0.2139 lei - o pierdere de 78.6%.&lt;/p&gt;
&lt;h2 id="pfa"&gt;&lt;a class="toclink" href="#pfa"&gt;PFA&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Poți să îți reduci taxele semnificativ, dacă ești dispus să faci un pic de birocrație, anume:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;înregistrare la ONRC&lt;/li&gt;
&lt;li&gt;dacă se aplică (impozitare în sistem real și nu normă de venit), ținerea contabilității &lt;a href="http://legislatie.just.ro/Public/DetaliiDocument/165938"&gt;"în partidă simplă"&lt;/a&gt;,&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;De ce? Pentru că un PFA datorează CAS și CASS doar dacă are venituri egale cu salariul minim sau mai mult, iar atunci CAS și CASS sunt obligatorii doar &lt;a href="https://www.avocatnet.ro/articol_50201/PFA-%C8%99i-contribu%C8%9Biile-sociale-in-2019-Ce-se-pl%C4%83te%C8%99te-la-stat-pentru-CAS-%C8%99i-CASS.html"&gt;la nivelul salariului minim; fiind &lt;strong&gt;la alegerea ta dacă plătești mai mult&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Observă însă cum, dacă ai fi PFA cu un venit chiar sub salariul minim și te aștepți la venituri mai mari, e mai bine să le refuzi până ai putea avea peste circa 2830 RON, pentru a evita o scădere netă din cauza CAS și CASS:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Venit brut 2079 RON -&amp;gt; venit net 1871.10 RON&lt;/li&gt;
&lt;li&gt;Venit brut 2080 RON -&amp;gt; venit net 1196.00 RON (scădere dramatică)&lt;/li&gt;
&lt;li&gt;Venit brut 2831 RON -&amp;gt; venit net 1871.90 RON (revenire la nivelul de sub salariul minim)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Aceasta e o motivație perversă pentru a rămâne sub salariul minim. Dacă CAS și CASS ar fi obligatorii doar parțial, încât să nu scadă venitul net, atunci mai mulți antreprenori ar putea ignora acest efect, și s-ar putea concentra pe afacerea lor.&lt;/p&gt;
&lt;p&gt;Ai putea primi pensie o sumă oricât de precisă, dar e o problemă cu CAS: ce servicii medicale ar fi asigurate dacă ai contribui, să zicem, 1% din CAS?
O soluție ar fi să sortăm toate serviciile după beneficiu per cost, și să calculăm contribuția minimă pentru a beneficia de fiecare serviciu. Astfel, dacă ai plăti mai puțin decât cel mai ieftin și folositor serviciu, nu l-ai avea asigurat, pur și simplu.&lt;/p&gt;
&lt;p&gt;Am considerat că nu sunt costuri cu contabilitatea, din cauză că e mai ușor de făcut decât la SRL. Dacă crezi altfel, poți modifica acel cost în tabel.&lt;/p&gt;
&lt;h2 id="srl"&gt;&lt;a class="toclink" href="#srl"&gt;SRL&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;La SRL, e mai mic impozitul pe venit: 3% dacă nu ai angajați. Dar sunt alte taxe pe venitul persoanei fizice.&lt;/p&gt;
&lt;p&gt;Prin a nu fi angajat (și a suferi taxele de &lt;a href="#angajat"&gt;mai sus&lt;/a&gt;), in firmă se poate scoate profitul ca dividende taxate cu 5% (în plus față de cei 3%). Acest venit se supune și CASS de 208 RON în cazul depășirii salariului minim.&lt;/p&gt;
&lt;p&gt;Totuși, din 10000 RON plătiți ca dividend unei firme, PF ar primi 9017.40 net, ceea ce înseamnă o taxare sub 10%. Dar contabilitatea e mai dificilă.&lt;/p&gt;
&lt;p&gt;Am estimat costul contabilității la 250 de RON/lună, în baza unei oferte de la o firmă. Am descoperit ulterior că &lt;a href="https://www.avocatnet.ro/forum/discutie_671260/Cum-se-procedeaza-cu-contabilitatea-la-SRL.html"&gt;îmi pot face singur contabilitatea, cu excepția bilanțului&lt;/a&gt;, dar în orice caz sunt necesare mai multe hârțogării decât la PFA (registru NIR?, balanțe lunare, declarație venit trimestrială în plus față de cea anuală unică pe PF).&lt;/p&gt;
&lt;p&gt;Pentru a permite o analiză mai personalizată, îți recomand să reglezi acel cost, după evaluarea a cât e de grea pentru tine această birocrație, sau după oferta unui contabil.&lt;/p&gt;
&lt;h2 id="concluzie"&gt;&lt;a class="toclink" href="#concluzie"&gt;Concluzie&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Pentru mine, PFA e forma mai potrivită, din cauză vreau să-mi fac singur contabilitatea, și nu vreau să am prea multă birocrație. Dar fiecare persoană e altfel: dacă ai salariu mai mic sau ești complet alergic la birocrație, poți continua să fii angajat (dar să știi ce pierzi); iar dacă nu te temi deloc de ea, fă-ți o firmă!&lt;/p&gt;
&lt;p&gt;Sper că v-a ajutat această analiză, iar dacă descoperiți greșeli sau schimbări, vă rog să mă atenționați!&lt;/p&gt;
&lt;p&gt;Spor la lucru!&lt;/p&gt;</content><category term="Română"></category><category term="Politics"></category><category term="Economy"></category><category term="Romania"></category></entry><entry><title>How to protect your personal data</title><link href="https://danuker.go.ro/how-to-protect-your-personal-data.html" rel="alternate"></link><published>2019-11-18T21:10:00+02:00</published><updated>2019-11-18T21:10:00+02:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2019-11-18:/how-to-protect-your-personal-data.html</id><summary type="html">&lt;p&gt;On the surface, &lt;a href="https://en.wikipedia.org/wiki/Content_delivery_network"&gt;CDNs&lt;/a&gt; (Content Delivery Networks) present a great way of speeding up the loading of websites.&lt;/p&gt;
&lt;p&gt;Without a CDN, requests &lt;a href="https://wondernetwork.com/pings/"&gt;take longer for users that are far away network-wise&lt;/a&gt;, but not a lot longer if users are near the server (perhaps on the same continent). &lt;a href="https://wheresitfast.com/results/5dd2a36351a54069486c9cc2"&gt;Here are some …&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;p&gt;On the surface, &lt;a href="https://en.wikipedia.org/wiki/Content_delivery_network"&gt;CDNs&lt;/a&gt; (Content Delivery Networks) present a great way of speeding up the loading of websites.&lt;/p&gt;
&lt;p&gt;Without a CDN, requests &lt;a href="https://wondernetwork.com/pings/"&gt;take longer for users that are far away network-wise&lt;/a&gt;, but not a lot longer if users are near the server (perhaps on the same continent). &lt;a href="https://wheresitfast.com/results/5dd2a36351a54069486c9cc2"&gt;Here are some results about this site&lt;/a&gt;: Izmir (Turkey) is close to Romania and loads my page quickly (0.974 seconds), but Medellín (Colombia, South America) is quite slower (my page loads in a bit over 3 seconds).&lt;/p&gt;
&lt;p&gt;This doesn't just have to do with the speed of light through fiber optic and/or electrons through copper, but also with the amount and performance of network devices along the way.&lt;/p&gt;
&lt;p&gt;With a CDN, you rely on a company which has servers in many parts of the world, thereby reducing the time it takes to serve clients.&lt;/p&gt;
&lt;p&gt;However, CDNs have quite the caveats, as we'll explore in this post.&lt;/p&gt;
&lt;p&gt;Another practice that has similar impact is websites tracking their visitors using a &lt;strong&gt;third-party analytics site&lt;/strong&gt;, which may be more convenient than using a self-hosted solution.&lt;/p&gt;
&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#privacy"&gt;Privacy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#security"&gt;Security&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#censorship"&gt;Censorship&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#what-you-can-do-as-a-user"&gt;What you can do as a user&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#what-you-can-do-as-a-site-owner"&gt;What you can do as a site owner&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="privacy"&gt;&lt;a class="toclink" href="#privacy"&gt;Privacy&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The most important caveat is loss of privacy. When a website tells a browser to request a resource from a CDN, the CDN usually gets the &lt;a href="https://en.wikipedia.org/wiki/HTTP_referrer"&gt;referrer&lt;/a&gt; field as well. So, the CDN can see what IPs visit what other websites.&lt;/p&gt;
&lt;p&gt;If you're particularly unlucky, the CDN &lt;a href="https://techcrunch.com/2015/09/09/google-partners-with-cloudflare-fastly-level-3-and-highwinds-to-help-developers-push-google-cloud-content-to-users-faster/"&gt;partners with a data broker&lt;/a&gt;. Quote:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Google says the idea here is to “encourage the &lt;strong&gt;best practice&lt;/strong&gt; of regularly distributing content originating from Cloud Platform out to the edge close to your end-users. Google provides a private, high-performance link between Cloud Platform and the CDN providers we work with, allowing your content to travel a low-latency, reliable route &lt;strong&gt;from our data centers out to your users&lt;/strong&gt;.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So, your &lt;a href="https://www.eff.org/deeplinks/2015/01/healthcare.gov-sends-personal-data"&gt;search for a health insurance scheme, for instance&lt;/a&gt;, might result in personal health data disclosures.&lt;/p&gt;
&lt;p&gt;This is a blatant violation of privacy, even more proof that the GDPR is a joke designed to give people cookie warnings (and a false sense of privacy). See my &lt;a href="gdpranoia.html#edit-2019-11-18-implementation-and-impact"&gt;recent edit on my GDPR article&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="security"&gt;&lt;a class="toclink" href="#security"&gt;Security&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If a CDN gets hacked, which luckily hasn't happened &lt;a href="https://thehackernews.com/2017/02/cloudflare-vulnerability.html"&gt;too&lt;/a&gt; &lt;a href="https://www.zdnet.com/article/jquery-hacked-site-was-hit-but-not-the-library/"&gt;often&lt;/a&gt;, the users could get a malicious version of, say, a JS library. This can lead to arbitrary stealing of data, personal or financial.&lt;/p&gt;
&lt;p&gt;A technique for validating such scripts &lt;a href="https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity"&gt;has been developed&lt;/a&gt;, but it's an extra burden on a website developer.&lt;/p&gt;
&lt;h2 id="censorship"&gt;&lt;a class="toclink" href="#censorship"&gt;Censorship&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;In addition to the surveillance introduced by these ubiquitous centralized middlemen, relying on their infrastructure introduces an extra point of failure in a website: namely, the website can be effectively and easily censored by the middleman.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.cloudflare.com/cloudflare-criticism/"&gt;CloudFlare&lt;/a&gt; admits and "recognizes" this power, and seems to even brag about it. Please don't give them more power.&lt;/p&gt;
&lt;h2 id="what-you-can-do-as-a-user"&gt;&lt;a class="toclink" href="#what-you-can-do-as-a-user"&gt;What you can do as a user&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;It is important to know there are two kinds of CDNs:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Content hosting; where the webmaster sends a website to a CDN to host on many servers; these are usually paid services, and there is not much you can do, if you want to see the site properly (since the CDN has the customer billing data, and the site won't serve you directly, you have to go through the CDN tracking you).&lt;/li&gt;
&lt;li&gt;"Generic" library hosting, like Bootstrap or various Javascript frameworks. These are noticeably missing from the &lt;a href="https://en.wikipedia.org/wiki/Content_delivery_network"&gt;Wikipedia article&lt;/a&gt;. These are available for "free" (as in, you pay with private data), via Google Hosted Libraries, &lt;code&gt;cdnjs&lt;/code&gt;, jsDelivr, Microsoft AJAX CDN, jQuery CDN and so on (I won't link to them). These can be blocked more conveniently, because many sites work in spite of blocking surprisingly many scripts. And even if you do request them, stripping their referrer renders them relatively blind (they won't know &lt;strong&gt;which&lt;/strong&gt; site asked for Bootstrap).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;First of all, you should &lt;strong&gt;strip cross-origin referrers&lt;/strong&gt;. &lt;a href="https://blog.mozilla.org/security/2018/01/31/preventing-data-leaks-by-stripping-path-information-in-http-referrers/"&gt;Firefox in private mode tries to prevent this&lt;/a&gt;, and it might be effective against CDNs.&lt;/p&gt;
&lt;p&gt;Firefox (or the more private &lt;a href="https://www.gnu.org/software/gnuzilla/"&gt;IceCat&lt;/a&gt;) lets you configure it in regular browsing mode also, &lt;a href="https://wiki.mozilla.org/Security/Referrer"&gt;by setting &lt;code&gt;network.http.referer.XOriginPolicy&lt;/code&gt; to 1 or 2&lt;/a&gt;, but I can't find a setting or a plugin I would trust for Chrome.&lt;/p&gt;
&lt;p&gt;Second of all, stripping referrers still can't prevent an analytics script from encoding something before sending it home. To solve this, you can &lt;strong&gt;block third-party requests&lt;/strong&gt; as well, with a tool I warmly recommend: &lt;a href="https://github.com/gorhill/uBlock/wiki/Blocking-mode:-medium-mode"&gt;&lt;strong&gt;uBlock Origin&lt;/strong&gt;&lt;/a&gt;, but this might affect site functionality).&lt;/p&gt;
&lt;p&gt;I usually use "hard" mode, and choose which 3rd-party resources to unblock (if any) the first time I visit any site (then click the "lock" icon if I want to save them). But for not-so-hardcore users, I recommend "medium" mode, in addition to the stripped referrer.&lt;/p&gt;
&lt;p&gt;In uBlock's "medium" mode, CDNs still track you via images and CSS, if you don't strip it.&lt;/p&gt;
&lt;hr/&gt;
&lt;h4 id="using-ublock-origins-advanced-user-panel-one-can-block-red-or-permit-green-requests"&gt;&lt;a class="toclink" href="#using-ublock-origins-advanced-user-panel-one-can-block-red-or-permit-green-requests"&gt;Using uBlock Origin's "advanced user" panel, one can block (red) or permit (green) requests:&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;a href="https://github.com/gorhill/uBlock/blob/master/README.md"&gt;&lt;img alt="uBlock Origin: interface crash course" class="img-fluid" src="images/ublock.png"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;Third, you can use Firefox (and therefore IceCat) to comfortably read pages without any CSS loaded; simply click the &lt;strong&gt;"Reader View"&lt;/strong&gt; button which arranges everything for a magical experience:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Firefox Reader view; shortcut is Ctrl+Alt+R" class="img-fluid" src="images/firefox-magic.png"/&gt;&lt;/p&gt;
&lt;h2 id="what-you-can-do-as-a-site-owner"&gt;&lt;a class="toclink" href="#what-you-can-do-as-a-site-owner"&gt;What you can do as a site owner&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;It is simple to respect users' privacy: do not use any 3rd party resources. Host everything yourself: CSS, minified JS, and media.&lt;/p&gt;
&lt;p&gt;Usually, the resource sizes are on the same order of magnitude as HTML pages anyway (at least CSS, JS, and typically-sized images). Sure, you'll get more requests, but you can cache the resources way longer than the HTML (for instance, my site asks your browser to cache them for a week).&lt;/p&gt;
&lt;p&gt;As for advertising, a site owner can make old-fashioned deals with people who want to advertise, and can host the ads on the site itself, and not through a third-party ad platform. Admittedly, this is more difficult to do, if you rely on the income. But if you're catering to a privacy-savvy audience, they likely have ad blockers anyway.&lt;/p&gt;
&lt;p&gt;I am proud that my website does not make unrequested external requests. The only external requests your browser might make are the Disqus ones, and only if you click on the "Load Disqus" button below, to see the comments. But very few people do that, and I am glad that I respected their wish!&lt;/p&gt;
&lt;p&gt;Still, I'd love to hear more from you (if not through Disqus, then via plain &lt;a href="mailto:danuthaiduc@gmail.com"&gt;e-mail&lt;/a&gt;)! What should I write about next?&lt;/p&gt;</content><category term="English"></category><category term="Privacy"></category><category term="Politics"></category><category term="Freedom of speech"></category><category term="Big Tech"></category><category term="Self-hosted"></category><category term="GDPR"></category><category term="Tech"></category><category term="OpSec"></category><category term="Internet"></category></entry><entry><title>Why Android is falling apart</title><link href="https://danuker.go.ro/why-android-is-falling-apart.html" rel="alternate"></link><published>2019-11-18T21:00:00+02:00</published><updated>2019-11-18T21:00:00+02:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2019-11-18:/why-android-is-falling-apart.html</id><summary type="html">&lt;p&gt;If you're an Android user, you've probably seen more and more "glitches" lately, where you get delayed notifications, events, or even alarms.&lt;/p&gt;
&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#my-experience-with-a-samsung-galaxy-s6"&gt;My experience with a Samsung Galaxy S6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#app-killing"&gt;App killing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#firebase-notifications"&gt;Firebase &amp;amp; notifications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#blocking-wifi-scanning-for-other-apps-while-google-location-services-still-scans-everything"&gt;Blocking WiFi scanning for other apps while Google Location Services still scans everything&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#open-source-is-not-freelibre-software"&gt;Open Source is not …&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</summary><content type="html">&lt;p&gt;If you're an Android user, you've probably seen more and more "glitches" lately, where you get delayed notifications, events, or even alarms.&lt;/p&gt;
&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#my-experience-with-a-samsung-galaxy-s6"&gt;My experience with a Samsung Galaxy S6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#app-killing"&gt;App killing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#firebase-notifications"&gt;Firebase &amp;amp; notifications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#blocking-wifi-scanning-for-other-apps-while-google-location-services-still-scans-everything"&gt;Blocking WiFi scanning for other apps while Google Location Services still scans everything&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#open-source-is-not-freelibre-software"&gt;Open Source is not Free/Libre Software&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#why-all-this"&gt;Why all this?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#actionable-advice"&gt;Actionable advice&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="my-experience-with-a-samsung-galaxy-s6"&gt;&lt;a class="toclink" href="#my-experience-with-a-samsung-galaxy-s6"&gt;My experience with a Samsung Galaxy S6&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I have a second-hand Chinese-made "Samsung" Galaxy S6 (there's a whole other post to write about buying second hand phones; at least make sure the phone is built in the same country as the manufacturer says, and that it works with your SIM card - make sure to try calling someone, and browsing the web).&lt;/p&gt;
&lt;p&gt;The default clock widget is called "Weather and Clock", which leads you to a weather app even if you tap on the clock.
There is one way to disable this: use the weather-free clock widget.
However, when you tap that, you get &lt;em&gt;absolutely nothing&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Usually, Android offers easy access to the alarms, stopwatch, and timer by tapping on the clock widget. But to have this behaviour on an S6, you have to add a shortcut to the Clock app, using up an extra icon spot on the home screen like so:&lt;/p&gt;
&lt;p&gt;&lt;img alt="clock icon next to the factory clock" class="img-fluid" src="images/glitchy-clock.png"/&gt;&lt;/p&gt;
&lt;p&gt;I could not get used to tapping the Clock app. I wanted the default Android behaviour that would not waste my home screen real estate.&lt;/p&gt;
&lt;p&gt;So, I installed &lt;a href="https://f-droid.org/en/packages/com.simplemobiletools.clock/"&gt;a libre clock app from F-Droid&lt;/a&gt;. Lo and behold, I can get the tapping behaviour I want. But now comes another "glitch":&lt;/p&gt;
&lt;p&gt;When I steep tea and try to use a timer, the process freezes 5 seconds after the screen turns off, rendering this free-as-in-freedom clock application almost useless.&lt;/p&gt;
&lt;p&gt;I have turned off Power saving, as well as removed the app from being "battery optimized" (a.k.a. killed) in the Battery -&amp;gt; tiny Battery Usage button -&amp;gt; tiny 3-dots menu button -&amp;gt; Optimize battery usage -&amp;gt; tap "Apps not optimized" and choose "All apps" instead -&amp;gt; Find your app manually in a huge list and disable the button on its right.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: Because this is so hard to perform, it is a &lt;a href="https://www.darkpatterns.org/"&gt;Dark Pattern&lt;/a&gt;. I believe it is meant to discourage you from using third-party background/automated apps. I can not explain this simply by incompetence of developers; I am quite convinced the Android or Samsung developers are prevented from fixing this.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;But even after performing the steps in this dark pattern, the only benefit I got is an additional 5 to 15 seconds of timer time, before it being killed.&lt;/p&gt;
&lt;h2 id="app-killing"&gt;&lt;a class="toclink" href="#app-killing"&gt;App killing&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;There are some people gathering data about this excessive app killing (even foreground ones!), turning smartphones into dumbphones, and Samsung is among the offenders: &lt;a href="https://dontkillmyapp.com/"&gt;Don't kill my app!&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="firebase-notifications"&gt;&lt;a class="toclink" href="#firebase-notifications"&gt;Firebase &amp;amp; notifications&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I tried using libre-software communication apps &lt;a href="https://nextcloud.com/talk/"&gt;Nextcloud Talk&lt;/a&gt; and &lt;a href="https://delta.chat/en/"&gt;Delta Chat&lt;/a&gt;. But they don't work satisfactorily because notifications are iffy.&lt;/p&gt;
&lt;p&gt;Trying to find out why this is the case, I was shocked to find out that &lt;strong&gt;Google manages every notification on your phone&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;How exactly?&lt;/p&gt;
&lt;p&gt;The only way to get a notification from a background service to your screen (waking up the device) is to use Google Firebase / Cloud Messaging (formerly just Google Cloud Messaging). This piece of work is needed even if your application would otherwise be offline - all for "conserving battery".&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Delta Chat &lt;a href="https://github.com/deltachat/deltachat-android/issues/82"&gt;gets around this&lt;/a&gt; by having an always-on notification, keeping the process in the foreground, but in my experience it doesn't work that great either. It could have to do with battery optimizers putting it to sleep (see "App killing" above).&lt;/li&gt;
&lt;li&gt;Nextcloud Talk installed from F-Droid has no notifications. They are thinking about offering notification support &lt;a href="https://github.com/nextcloud/talk-android/issues/257"&gt;without Firebase&lt;/a&gt;. Only the Google Play version has notifications, and they are through Firebase.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here are more details about Cloud Messaging, &lt;a href="https://firebase.google.com/docs/cloud-messaging/concept-options"&gt;straight from the horse's mouth&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="blocking-wifi-scanning-for-other-apps-while-google-location-services-still-scans-everything"&gt;&lt;a class="toclink" href="#blocking-wifi-scanning-for-other-apps-while-google-location-services-still-scans-everything"&gt;Blocking WiFi scanning for other apps while Google Location Services still scans everything&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;There exists an Android Pie &lt;a href="https://issuetracker.google.com/issues/79906367"&gt;bug report&lt;/a&gt;, which is starred by 297 people as of writing this.
The report is asking for Google to be less aggressive with blocking Wi-Fi scanning for apps.
Some apps used it for indoor localization, others for helping users optimize radio channel usage, and others to detect rogue access points.&lt;/p&gt;
&lt;p&gt;Google took away their ability to function by severely limiting the number of scans, again for "battery usage" reasons. This is in spite of the fact that users clearly wanted those apps to use battery.&lt;/p&gt;
&lt;p&gt;I call &lt;strong&gt;bullshit&lt;/strong&gt; on this, and here are two reasons why.&lt;/p&gt;
&lt;h3 id="1-the-missing-permission-for-frequent-wi-fi-scans"&gt;&lt;a class="toclink" href="#1-the-missing-permission-for-frequent-wi-fi-scans"&gt;1. The (missing) permission for frequent Wi-Fi scans&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;It can be done via the &lt;a href="https://issuetracker.google.com/issues/112688545#comment6"&gt;"NETWORK_SETTINGS" permission&lt;/a&gt;, but that is only available to apps signed with the same key as the OS itself (this is Google, for most people). It is not accessible to users even with developer tools turned on. Why so secure?&lt;/p&gt;
&lt;h3 id="2-google-records-wi-fi-access-points-constantly"&gt;&lt;a class="toclink" href="#2-google-records-wi-fi-access-points-constantly"&gt;2. Google records Wi-Fi access points constantly&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.howtogeek.com/211186/how-to-disable-google-location-wi-fi-scanning-on-android/"&gt;In this article&lt;/a&gt; it is shown how to disable Google's constant Wi-Fi scanning.&lt;/p&gt;
&lt;p&gt;Notice the wording: "Let Google's location service and other apps scan for networks, even when Wi-Fi is off". This means &lt;strong&gt;Google can screw with your "battery usage", but competitors can't&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Why would Google throttle everyone else's Wi-Fi scanning, but not their own?
One explanation I found is to prevent &lt;a href="https://location.services.mozilla.com/"&gt;any competitors&lt;/a&gt; or &lt;a href="https://wigle.net"&gt;community efforts&lt;/a&gt; from gathering data that would threaten &lt;a href="https://developers.google.com/maps/documentation/geolocation/usage-and-billing"&gt;Google's Geolocation API moolah&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Perhaps the &lt;a href="https://www.theverge.com/2018/7/18/17580694/google-android-eu-fine-antitrust"&gt;Chrome integration anti-trust fine&lt;/a&gt; was not enough for Google, and they are begging for more.&lt;/p&gt;
&lt;p&gt;Eh, at least you can turn it off for Google as well, and improve your "battery usage".&lt;/p&gt;
&lt;p&gt;&lt;img alt='Google scans Wi-Fi and Bluetooth hotspots even when the features are "off"' class="img-fluid" src="images/android-wifi-bluetooth.png"/&gt;&lt;/p&gt;
&lt;h2 id="open-source-is-not-freelibre-software"&gt;&lt;a class="toclink" href="#open-source-is-not-freelibre-software"&gt;Open Source is not Free/Libre Software&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;As you know, Android is "Open Source".&lt;/p&gt;
&lt;p&gt;"Open Source" means "you can look at the source". But this is not enough, because it's pointless if you can't change the actual software running on the device. The device itself is heavily locked-down.&lt;/p&gt;
&lt;p&gt;This is why &lt;a href="https://www.gnu.org/philosophy/open-source-misses-the-point.html"&gt;GNU is against the "Open Source" term&lt;/a&gt;. I agree, and I will try to use "libre software" or "free software".&lt;/p&gt;
&lt;h2 id="why-all-this"&gt;&lt;a class="toclink" href="#why-all-this"&gt;Why all this?&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Google's and other manufacturer's actions in the market should tell you that the mobile industry is not a hardware business anymore, but one about "Internet Services" - i.e. subscription payments and/or watching ads. &lt;a href="https://www.youtube.com/watch?v=esUOQpKNLsE"&gt;Check out TechAltar's YouTube video on the subject, focusing on Xiaomi.&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This involves cheaper hardware, but with strings attached - &lt;strong&gt;you do not have software freedom on it&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The providers claim reducing battery usage as an excuse, but reducing battery usage can justify killing anything on a phone. Same as banning cars to prevent car accidents.&lt;/p&gt;
&lt;p&gt;Sadly, many consumers fell into these traps, with their money. But you don't have to follow them.&lt;/p&gt;
&lt;h2 id="actionable-advice"&gt;&lt;a class="toclink" href="#actionable-advice"&gt;Actionable advice&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If you find yourself bugged by your phone working unreliably, especially on background processes, the most effective way to send a signal to the manufacturers is to avoid buying it, or to return it, provide the reasons, and ask for your money back. If there's anything the manufacturers care about, it's money.&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;If you have an older device, check out if it is by any chance supported by &lt;a href="https://lineageos.org/"&gt;Lineage OS&lt;/a&gt;. That is a freer-software operating system, and is a step in the right direction; though it still includes some vendor-specific binary blobs. I've had a much better experience on old phones with Lineage than with the vendor's distro (except you will lose your warranty, and I overheated my Moto G to death within 8 months: Lineage had no thermal throttling/protection in my case; be warned!).&lt;/p&gt;
&lt;p&gt;If you're looking to buy a new device, consider whether &lt;a href="https://wiki.lineageos.org/devices/"&gt;LineageOS supports it&lt;/a&gt;. This way, in the event the manufacturer pushes glitchy apps, and the seller won't take back the phone, at least you can flash Lineage on it (but be aware of the risks).&lt;/p&gt;
&lt;p&gt;Or you can try different ROMs. Check out &lt;a href="https://www.xda-developers.com/"&gt;XDA-Developers&lt;/a&gt;, a mobile modding site. Of course, these come with higher risks.&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;&lt;strong&gt;Apple&lt;/strong&gt; is not an alternative; they offer even &lt;a href="https://www.cnet.com/news/apple-sorry-iphone-battery-slowdown-ios-update-official/"&gt;less control of your own device&lt;/a&gt;. While the article gives an idea of what Apple did, it also claims something I disagree with:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Of course, when a chemically aged battery is replaced with a new one, iPhone performance returns to normal when operated in standard conditions.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That is not true, because of software bloat. Every update packs more and more features, and is designed for newer and newer devices. It seems the lawyered-up people didn't know that, hehe.&lt;/p&gt;
&lt;p&gt;Also, if you don't update, &lt;a href="https://discussions.apple.com/thread/1156889"&gt;bad things might happen&lt;/a&gt;.&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;Another alternative is to use a tablet + &lt;strong&gt;a dumbphone&lt;/strong&gt;. This is what I do; the tablet is my cheap "Samsung" that does not work on a mobile network. Paradoxically, &lt;a href="https://www.cel.ro/telefoane-mobile/telefon-mobil-allview-m9-join-dual-sim-black-pMyc0Mz0n-l/"&gt;the cheap 3G dumbphone I own&lt;/a&gt; keeps my alarms and calendar events more reliably than the Galaxy I mentioned (sadly it doesn't have a timer feature; I use &lt;a href="https://kde.org/applications/utilities/org.kde.kteatime"&gt;KTeaTime&lt;/a&gt; on my laptop now). I use the dumbphone as my main phone. As a bonus, the Calculator app starts up much faster. This is in spite of the price difference. Why pay for a smartphone, and get a dumb-crippled one?
For maps I use &lt;a href="https://f-droid.org/en/packages/net.osmand.plus/"&gt;OsmAnd&lt;/a&gt;, which is based on OpenStreetMap, and I warmly recommend it - even has offline navigation.&lt;/p&gt;
&lt;p&gt;Lastly, I'd appreciate if you shared this post with your friends. Friends don't let friends pay for smartphones but get dumbphones!&lt;/p&gt;</content><category term="English"></category><category term="Big Tech"></category><category term="Capitalism"></category><category term="Libre Software"></category><category term="Google"></category><category term="Privacy"></category><category term="Smartphones"></category></entry><entry><title>Opinii despre candidați la președinție</title><link href="https://danuker.go.ro/opinii-despre-candidati-la-presedintie.html" rel="alternate"></link><published>2019-11-07T17:50:00+02:00</published><updated>2019-11-07T17:50:00+02:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2019-11-07:/opinii-despre-candidati-la-presedintie.html</id><summary type="html">&lt;p&gt;Am luat fiecare candidat în ordinea inversă a semnăturilor, și am săpat să văd cum și-a folosit puterea, dacă a avut-o vreodată.&lt;/p&gt;
&lt;p&gt;De ce ordinea inversă? Pentru că avem două tururi, și vă recomand să votați cu candidatul cel mai potrivit vouă, pentru a profita la maxim de vot, și …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Am luat fiecare candidat în ordinea inversă a semnăturilor, și am săpat să văd cum și-a folosit puterea, dacă a avut-o vreodată.&lt;/p&gt;
&lt;p&gt;De ce ordinea inversă? Pentru că avem două tururi, și vă recomand să votați cu candidatul cel mai potrivit vouă, pentru a profita la maxim de vot, și nu să votați cu cei populari! De obicei, cei mai populari "plac la toată lumea", dar dacă vreți un candidat bine aliniat cu interesele dvs., sunt șanse mari ca unul mai puțin cunoscut să vă convină mai mult.&lt;/p&gt;
&lt;p&gt;De asemenea, am căutat dacă au alte interese pentru bunăstarea țării, cum ar fi copii sau investiții (deși investițiile pot fi vândute).&lt;/p&gt;
&lt;p&gt;Ca motiv comic, am evaluat și capacitatea lingvistică a unor candidați. Vă rog să nu o luați prea în serios.&lt;/p&gt;
&lt;p&gt;Dacă doriți să evaluez și alte trăsături, abilități sau acțiuni, să-mi spuneți!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Link cu pozițiile în buletinul de vot, declarații de avere și interese: site-ul &lt;a href="http://prezidentiale2019.bec.ro/candidati/"&gt;Biroului Electoral Central&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Link cu o copie a acestor date, dar sortabile: &lt;a href="https://ro.wikipedia.org/wiki/Alegeri_preziden%C8%9Biale_%C3%AEn_Rom%C3%A2nia,_2019#Depunerea_candidaturilor"&gt;Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Dezbateri între candidați: vedeți &lt;a href="https://ro.wikipedia.org/wiki/Alegeri_preziden%C8%9Biale_%C3%AEn_Rom%C3%A2nia,_2019#Program"&gt;programul&lt;/a&gt; și &lt;a href="https://ro.wikipedia.org/wiki/Alegeri_preziden%C8%9Biale_%C3%AEn_Rom%C3%A2nia,_2019#Participare"&gt;candidații participanți&lt;/a&gt;. Mărturisesc că nu le-am ascultat, de vreme ce sunt lungi.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr/&gt;
&lt;h4 id="cuprins"&gt;&lt;a class="toclink" href="#cuprins"&gt;Cuprins&lt;/a&gt;&lt;/h4&gt;
&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#ninel-peia"&gt;Ninel Peia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#sebastian-popescu"&gt;Sebastian Popescu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#bogdan-stanoevici"&gt;Bogdan Stanoevici&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#john-banu"&gt;John Banu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#viorel-catarama-preferatul-meu"&gt;Viorel Cataramă - preferatul meu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#catalin-ivan"&gt;Cătălin Ivan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#alexandru-cumpanasu"&gt;Alexandru Cumpănașu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#hunor-kelemen"&gt;Hunor Kelemen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#ramona-bruynseels"&gt;Ramona Bruynseels&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#theodor-paleologu"&gt;Theodor Paleologu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#dan-barna"&gt;Dan Barna&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#mircea-diaconu"&gt;Mircea Diaconu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#viorica-dancila"&gt;Viorica Dăncilă&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#klaus-iohannis"&gt;Klaus Iohannis&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;hr/&gt;
&lt;h2 id="ninel-peia"&gt;&lt;a class="toclink" href="#ninel-peia"&gt;Ninel Peia&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Fost &lt;a href="http://www.cdep.ro/pls/parlam/structura2015.mp?idm=284&amp;amp;leg=2012&amp;amp;cam=2&amp;amp;idl=1"&gt;deputat PSD&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id="pro"&gt;&lt;a class="toclink" href="#pro"&gt;Pro&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Are &lt;a href="https://www.ninelpeia.ro/curriculum-vitae/"&gt;3 copii&lt;/a&gt;. Astfel, are un interes de a le asigura viitorul (dar eu consider că e dezorientat acest interes; vezi Contra).&lt;/li&gt;
&lt;li&gt;Deține &lt;a href="https://www.ziuaconstanta.ro/informatii/alegeri-prezidentiale/declaratie-de-avere-ninel-peia-candidat-la-alegerile-prezidentiale-2019-documente-702366.html"&gt;o grămadă de terenuri și două case&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="contra"&gt;&lt;a class="toclink" href="#contra"&gt;Contra&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;A fost dat afară din PSD ca urmare a &lt;a href="https://www.gandul.info/politica/deputatul-ninel-peia-exclus-din-psd-dupa-ce-a-sustinut-ca-vaccinurile-i-au-imbolnavit-pe-copiii-din-arges-15102517"&gt;susținerii că vaccinurile i-au îmbolnăvit pe copii, și a unei amenințări cu violență&lt;/a&gt; ("bătăiţă la popoul gol" - mai în glumă? mai în serios?).&lt;/li&gt;
&lt;li&gt;A propus &lt;a href="http://www.cdep.ro/pls/proiecte/upl_pck2015.proiect?idp=15735"&gt;interzicerea educației sexuale, fără acordul părinților&lt;/a&gt;. Hai să nu le spunem copiilor cum &lt;a href="https://www.monitorulsv.ro/Local/2019-07-31/La-13-ani-insarcinata-in-luna-a-V-a-o-adolescenta-a-abandonat-scoala-si-va-intra-intr-un-program-gratuit-de-consiliere-psihologica"&gt;să nu facă copii la 13-14 ani&lt;/a&gt; și să &lt;a href="https://unopa.ro/evolutia-hiv-sida-in-romania-31-decembrie-2018/"&gt;nu ia boli&lt;/a&gt;! Educația e în interesul societății în general, nu doar al părinților și copiilor. De ce e educația sexuală mai prejos?&lt;/li&gt;
&lt;li&gt;A propus indemnizații pentru &lt;a href="http://www.cdep.ro/pls/proiecte/upl_pck2015.proiect?idp=15478"&gt;mame a 3 sau mai mulți copii&lt;/a&gt;. Nu sunt de acord cu asta, din cauză că statul nu trebuie să încurajeze creșterea populației prin pomeni, ci prin asigurarea unui mediu favorabil: economie, siguranță, justiție, drepturi civile. În plus, e o dedicație pentru soția dlui. Peia, cuplul având 3 copii.&lt;/li&gt;
&lt;li&gt;A propus suprascrierea &lt;a href="http://legislatie.just.ro/Public/DetaliiDocument/67092"&gt;legii ce suspendă serviciul militar obligatoriu&lt;/a&gt;, cu una ce &lt;a href="http://www.cdep.ro/pls/proiecte/upl_pck2015.proiect?idp=15029"&gt;"instituie executarea serviciului voluntar"&lt;/a&gt; - adică, voluntar, dar nici cel obligatoriu nu mai e suspendat??? În plus, voluntariatul există deja.&lt;/li&gt;
&lt;li&gt;Propune &lt;a href="http://www.cdep.ro/pls/proiecte/upl_pck2015.proiect?idp=15894"&gt;închisoarea pe viață&lt;/a&gt; pentru subminarea economiei naționale. Cred că e excesivă închisoarea pe viață. Dacă o singură persoană subminează economia, înseamnă că era la un pas de eșec oricum.&lt;/li&gt;
&lt;li&gt;A propus &lt;a href="http://www.cdep.ro/pls/proiecte/upl_pck2015.proiect?idp=14555"&gt;interzicerea vânzării de băuturi carbogazoase lângă școli, sau către minori până la 16 ani&lt;/a&gt; (cu excepția apei minerale). Deși e o inițiativă lăudabilă, și adresează probleme adevărate, o pun la "contra" din cauză că eu cred că părinții trebuie să fie responsabili pentru sănătatea copiilor lor, nu magazinele. Ar putea fi eliminată această problemă prin a nu da bani de buzunar copiilor (nu e nevoie de legislație).&lt;/li&gt;
&lt;li&gt;Ipoteze "halucinante" cum că &lt;a href="https://evz.ro/un-deputat-si-doctorand-la-academia-sri-lanseaza-o-ipoteza-halucinanta-romania-urma-sa-fie-rupta-in-trei-dupa-incendiul-de-la-colectiv.html"&gt;unele minți "machiavelice" doresc "spargerea" țării în trei&lt;/a&gt;. Sincer să fiu, nu cred că ar fi o idee rea să avem un fel de autonomie, pentru a avea mai multă alegere - poate în fiecare județ. În cazul în care ar exista mai multe state, am avea mai multe seturi de legi din care să ni le alegem pe cele mai potrivite, și să ne mutăm în acel stat. Dar ipotezele acestui domn mi se par aberante și nefondate.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="altele"&gt;&lt;a class="toclink" href="#altele"&gt;Altele&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;E contra &lt;a href="http://www.cdep.ro/pls/proiecte/upl_pck2015.proiect?idp=13018"&gt;organismelor modificate genetic&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Împreună cu un coleg PSD, a propus &lt;a href="http://www.cdep.ro/pls/proiecte/upl_pck2015.proiect?idp=15451"&gt;reglementarea mai strictă a armelor de agrement (de exemplu airsoft, )&lt;/a&gt;. Acest lucru ar face ca alineatul (4) din &lt;a href="http://legislatie.just.ro/Public/DetaliiDocument/53150#id_artA659_ttl"&gt;art. 65 al regimului armelor și munițiilor&lt;/a&gt; să nu fie degeaba, prin adăugarea lui "doar" după "pot fi folosite".&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="sebastian-popescu"&gt;&lt;a class="toclink" href="#sebastian-popescu"&gt;Sebastian Popescu&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;E &lt;a href="https://partidulnouaromanie.ro/acasa/articol/153/sebastian-popescu---presedinte-partidul-noua-romanie"&gt;președintele&lt;/a&gt; &lt;a href="https://partidulnouaromanie.ro/"&gt;Partidului Noua Românie&lt;/a&gt;. Nu a mai fost la putere.&lt;/p&gt;
&lt;p&gt;Ce are PNR în campanie?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://partidulnouaromanie.ro/program-electoral"&gt;Multe promisiuni.&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ce înseamnă "Omul înaintea statului"? Poate însemna orice, de la socialism (omul să fie întreținut, dar și taxat de stat, cum orice drepturi implică obligații pentru alții) la capitalism (omul să fie lăsat în pace de stat).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dacă apeși pe graficul de pe pagina principală (ești mai afacerist așa), găsești scopul lor declarat de a &lt;a href="https://partidulnouaromanie.ro/acasa/articol/308/romanii-intretin-un-sistem-de-stat-mai-scump-mai-birocratic-si-mai-ineficient"&gt;reduce cheltuielile bugetare&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Dacă te uiți mai adânc în &lt;a href="https://partidulnouaromanie.ro/program-electoral"&gt;programul electoral&lt;/a&gt;, vezi "majorarea alocației" și "10,000 de euro pentru fiecare copil", depuși la CEC și cheltuibili numai în vederea facultății, deschiderii unei afaceri, sau probleme medicale grave. Adică exact opusul reducerii cheltuielilor bugetare.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Inițial, aceste măsuri îmi păreau contradictorii. Dar după mai multă gândire, bănuiesc că acestea două ar putea fi consecvente, ambele susținând mediul privat (în special format din tineri). Merită mai multe investigații; dar prima dată trebuie să evaluez și ceilalți candidați. Voi actualiza aici acest articol dacă voi avea mai multe informații.&lt;/p&gt;
&lt;h2 id="bogdan-stanoevici"&gt;&lt;a class="toclink" href="#bogdan-stanoevici"&gt;Bogdan Stanoevici&lt;/a&gt;&lt;/h2&gt;
&lt;h4 id="contra_1"&gt;&lt;a class="toclink" href="#contra_1"&gt;Contra&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Un &lt;a href="http://www.ziare.com/victor-ponta/guvern/actorul-bogdan-stanoevici-propus-ministru-a-plecat-din-tara-inainte-de-revolutie-s-a-intors-in-2011-1285794"&gt;actor&lt;/a&gt; de profesie. A fost numit &lt;a href="http://www.ziare.com/victor-ponta/guvern/ponta-a-prezentat-noul-guvern-psd-l-a-validat-chiar-daca-e-plin-de-tehnocrati-tineri-1285671"&gt;de PSD&lt;/a&gt; "Ministru-delegat pentru relațiile cu românii de pretutindeni", și nu a luat prea în serios acel titlu, de vreme ce &lt;a href="http://www.ziare.com/bogdan-stanoevici/ministru-delegat/ambasadorul-britanic-in-romania-s-a-intalnit-cu-bogdan-stanoevici-pentru-a-discuta-despre-votul-de-la-londra-1331186"&gt;a primit o vizită de la ambasadorul Marii Britanii pentru lămuriri&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Cred că trebuie să joace alte roluri decât reprezentarea unei țări.&lt;/p&gt;
&lt;h2 id="john-banu"&gt;&lt;a class="toclink" href="#john-banu"&gt;John Banu&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Președinte al &lt;a href="https://www.pnro.ro/reprezentantii-nostri/"&gt;Partidului Națiunea Română&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id="contra_2"&gt;&lt;a class="toclink" href="#contra_2"&gt;Contra&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Ce promite acest partid? Lucruri ce &lt;a href="https://www.pnro.ro/documente-partid/program/"&gt;sună sofisticate, dar ce sunt, de fapt, foarte vagi&lt;/a&gt;. Nimic concret.&lt;/p&gt;
&lt;p&gt;De exemplu:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ce înseamnă "Garantarea, promovarea și respectarea necondiționată a demnității umane."? Garantarea cum? Ce propuneri concrete de schimbări aveți?&lt;/li&gt;
&lt;li&gt;Ce înseamnă "crearea cadrului exprimării libertăților individuale circumscrise drepturilor comunitare în contextul respectării legilor"? Sună foarte sofisticat, dar nu spune nimic.&lt;/li&gt;
&lt;li&gt;"PNRo militează pentru promovarea României și a intereselor sale pe plan internațional prin toate pârghiile existente: Organisme Internaționale, Președinție, MAE, Ambasade, Cultură, Sport, Tehnologie etc." - Din nou, nu spune nimic.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="viorel-catarama-preferatul-meu"&gt;&lt;a class="toclink" href="#viorel-catarama-preferatul-meu"&gt;Viorel Cataramă - preferatul meu&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Președinte al partidului &lt;a href="http://dreaptaliberala.ro/statutul-partidului-politic-dreapta-liberala-dl/"&gt;Dreapta Liberală&lt;/a&gt;. A fost &lt;a href="http://www.cdep.ro/pls/parlam/structura2015.mp?idm=1030&amp;amp;leg=1996&amp;amp;cam=1"&gt;senator asociat cu PNL&lt;/a&gt; în 1996-2000.&lt;/p&gt;
&lt;p&gt;Acest om susține capitalismul, și vrea ca sectorul privat să meargă bine. Cum sectorul privat e motorul economiei (fiind sectorul ce produce, în timp ce statul nu produce, și poate doar consuma din ce a produs cel privat), și cum &lt;a href="https://openbudget.ro/"&gt;muncim deja 50% din timp pentru stat&lt;/a&gt;, consider că e momentul să reducem statul, în favoarea economiei libere.&lt;/p&gt;
&lt;p&gt;Acest candidat plănuiește să declare povara fiscală ca o problemă de siguranță națională, dacă nu va izbuti altfel (intrând în atribuțiile &lt;a href="https://csat.presidency.ro/"&gt;CSAT&lt;/a&gt;) - &lt;a href="https://youtu.be/8qH7hK7_o3A?t=600"&gt;vezi acest video, de la minutul 10&lt;/a&gt;. Sunt de acord cu acest lucru: birocrația e atât de scumpă, încât poate duce la destabilizare socială (și/sau continuarea emigrărilor economice).&lt;/p&gt;
&lt;p&gt;Regret că nu am făcut această analiză mai devreme, să pot să o distribui mai larg. Eh, acum știu pentru parlamentare.&lt;/p&gt;
&lt;h4 id="pro_1"&gt;&lt;a class="toclink" href="#pro_1"&gt;Pro&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;A fondat și deține compania de mobilă &lt;a href="https://ro.wikipedia.org/wiki/Elvila"&gt;Elvila&lt;/a&gt;. Astfel, are &lt;a href="http://prezidentiale2019.bec.ro/wp-content/uploads/2019/09/di_catarama.pdf"&gt;un interes&lt;/a&gt; în dezvoltarea afacerilor în România (deși rămâne de văzut dacă are interesul tuturor afacerilor, sau doar a sa).
Are doi copii, &lt;a href="https://www.click.ro/vedete/romanesti/viorel-catarama-la-tribunal-cu-mama-copilului-sau"&gt;un băiat cu fosta iubită&lt;/a&gt;, și încă &lt;a href="https://www.click.ro/vedete/romanesti/adina-alberts-nascut-ce-spune-viorel-catarama-dupa-ce-devenit-tatic-de-fata"&gt;o fetiță cu soția sa de acum&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A inițiat singur o multitudine de proiecte de lege. De vreme ce link-urile de pe &lt;a href="http://www.cdep.ro/pls/parlam/structura2015.mp?idm=1030&amp;amp;leg=1996&amp;amp;cam=1&amp;amp;pag=2&amp;amp;idl=1&amp;amp;prn=0&amp;amp;par="&gt;pagina CDep cu propunerile sale nu funcționează bine&lt;/a&gt;, o să public link-urile corectate aici (deși nu sunt complete).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://senat.ro/legis/lista.aspx?nr_cls=L35&amp;amp;an_cls=1997"&gt;L35/1997&lt;/a&gt; - a permis firmelor cu capital străin să dețină drepturi asupra terenurilor; ce-i drept, pe o versiune de lege greșită, dar până la urmă, s-a rezolvat conflictul de versiuni ale legilor, și a ajuns în lege ca &lt;a href="http://legislatie.just.ro/Public/DetaliiDocument/11574#id_artA12793651_ttl"&gt;art. 6 din OUG 92/1997 privind stimularea investițiilor directe, cu modificările ulterioare&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://senat.ro/legis/lista.aspx?nr_cls=L50&amp;amp;an_cls=1997"&gt;L50/1997&lt;/a&gt; - &lt;a href="https://senat.ro/legis/PDF/1997/97L050CR.pdf"&gt;pentru eliminarea impozitului pe profit, dacă a fost reinvestit în modernizare sau extindere&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://senat.ro/legis/lista.aspx?nr_cls=L51&amp;amp;an_cls=1997"&gt;L51/1997&lt;/a&gt; - despre securitizarea creditelor ipotecare;  legii propuse pe site-ul Senatului.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://senat.ro/legis/lista.aspx?nr_cls=L80&amp;amp;an_cls=1997"&gt;L80/1997&lt;/a&gt; - despre constituirea unui fond special pentru acoperirea deficitului, protecției sociale, și sprijinirea exportului; dar a fost retrasă de către inițiator.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://senat.ro/legis/lista.aspx?nr_cls=L179&amp;amp;an_cls=1997"&gt;L179/1997&lt;/a&gt; - restructurare şi modernizare a industriei metalurgice - Mă întristează enorm că industria metalurgică a fost lăsată în paragină. Această lege cu potențial imens a fost retrasă de către Senat. De ce? &lt;a href="http://www.cdep.ro/pls/parlam/structura2015.gp?leg=1996&amp;amp;cam=1"&gt;PSD era cel mai reprezentat partid și atunci, sub forma "PSDR".&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://senat.ro/legis/lista.aspx?nr_cls=L406&amp;amp;an_cls=1997"&gt;L406/1997&lt;/a&gt; - propunere despre regimul investiţiilor autohtone (nu putem ști ce anume).&lt;/li&gt;
&lt;li&gt;&lt;a href="https://senat.ro/legis/lista.aspx?nr_cls=L573&amp;amp;an_cls=1997"&gt;L573/1997&lt;/a&gt; - măsuri de sprijinire a întreprinderilor mici şi mijlocii; &lt;a href="https://senat.ro/legis/PDF/1997/97L573CR.PDF"&gt;înlocuită cu o lege formulată de putere&lt;/a&gt; - &lt;a href="http://www.cdep.ro/pls/proiecte/upl_pck2015.proiect?cam=2&amp;amp;idp=834"&gt;proiect&lt;/a&gt; ce a devenit &lt;a href="http://legislatie.just.ro/Public/DetaliiDocument/18823?isFormaDeBaza=True&amp;amp;rep=True"&gt;lege (varianta neactualizata din 1999)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://senat.ro/legis/lista.aspx?nr_cls=L574&amp;amp;an_cls=1997"&gt;L574/1997&lt;/a&gt; - despre protecţia capitalului autohton şi sprijinirea dezvoltării lui în procesul de privatizare. Hmm. Cam inconsecvent; mai devreme era cu terenuri pentru capital străin, acum pentru protecționism? Poate că nu, poate că e pentru reducerea protecționismului; nu putem ști.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://senat.ro/legis/lista.aspx?nr_cls=L575&amp;amp;an_cls=1997"&gt;L575/1997&lt;/a&gt; - pentru reducerea fiscalităţii şi relansarea activităţii economice. Clar că nu a fost adoptată, devreme ce fiscalitatea &lt;a href="https://openbudget.ro/"&gt;e mare și astăzi, încât lucrăm pentru stat 49.89% din timp!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://senat.ro/legis/lista.aspx?nr_cls=L171&amp;amp;an_cls=1998"&gt;L171/1998&lt;/a&gt; - Această lege este prima ce are date semnificative pe site-ul Senatului! Felicitări! &lt;a href="https://senat.ro/legis/PDF/1998/98L171CR.pdf"&gt;Aici&lt;/a&gt;, dl. Cataramă dorește mai mult control asupra numirii membrilor Comisiei Naționale a Valorilor Mobiliare (el era președintele Comisiei Economice din Senat de la acea vreme).&lt;/li&gt;
&lt;li&gt;&lt;a href="https://senat.ro/legis/lista.aspx?nr_cls=L172&amp;amp;an_cls=1998"&gt;L172/1998&lt;/a&gt; - Dl. Cataramă a reușit reducerea impozitului pe profit la 50% în cazul exporturilor. Felicitări!&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://senat.ro/legis/lista.aspx?nr_cls=L11&amp;amp;an_cls=1999"&gt;L11/1999&lt;/a&gt; - privind reeşalonarea datoriilor firmelor și scutirea acestora de penalități. Senatul a respins-o pe motiv că Guvernul &lt;a href="https://senat.ro/legis/PDF/1999/99L011CR.PDF"&gt;nu va acorda scutiri și reduceri arbitrare (ca aceasta), va sancționa ferm contribuabilii rău platnici, și că va reduce gradul de fiscalitate.....&lt;/a&gt; Notă: &lt;strong&gt;cele 5 puncte de suspensie sunt copiate din PDF, idem cu exprimarea Senatului&lt;/strong&gt;. Adică nu e o prioritate să reducă fiscalitatea.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.ziare.com/social/spital/catarama-pnl-propune-ca-toate-spitalele-si-invatamantul-superior-sa-fie-private-plus-eliminarea-ajutoarelor-sociale-1460915"&gt;Propunea privatizarea spitalelor și învățământului superior.&lt;/a&gt; Consider că privatizarea (fără subvenții) e o metodă de a obliga răspunderea directă a acestor instituții către clienți.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Totuși, cred că privatizarea spitalelor trebuie însoțită de asigurări de sănătate private, din cauza motivărilor mai aliniate cu vindecarea afecțiunilor (asigurare), în loc de tratarea lor (plată per tratament).&lt;/li&gt;
&lt;li&gt;În mod similar, privatizarea facultăților duce la riscul ca acestea să devină doar niște petreceri mari. Recomand facultăților private să colaboreze cu parteneri de afaceri pe termen lung, sau să ceară plata ca procent din salariul viitor al absolventului pe câțiva ani, pentru a-și menține interesul în a dezvolta oameni dezvoltați economic.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="contra_3"&gt;&lt;a class="toclink" href="#contra_3"&gt;Contra&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;E pentru votul electronic; personal, consider votul electronic un pericol pentru democrație. O comisie cu reprezentați ai partidelor nu au cum să știe ce se întâmplă în memoria unui calculator la BEC, și ce rulează de fapt pe acesta.&lt;/li&gt;
&lt;li&gt;Mă tem e că acest candidat ar putea ridica "scara" economică pe care el a urcat, astfel încât alții (IMM-urile de acum) să nu îl poată detrona. Dar mă îndoiesc că va face acest lucru, din cauză că are un avantaj masiv (firma sa) în fața celor ce fac acest lucru, și nu ar avea interesul să pună bețe în roate micilor concurenți.&lt;/li&gt;
&lt;li&gt;Are propuneri vagi despre "consolidarea familiei [...] fara a ingradi insa in vreun fel drepturile individului la viata privata". E anti-gay? Nu doresc acest lucru (vezi Contra de la &lt;a href="#catalin-ivan"&gt;Cătălin Ivan&lt;/a&gt;). "Live and let live".&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Edit 2019-11-08:&lt;/strong&gt; A fost &lt;a href="https://evz.ro/cnsas-a-dat-verdictul-viorel-catarama-sursa-a-securitatii-ce-spun-notele-informative.html"&gt;informator al Securității&lt;/a&gt;. Mă întristează acest lucru, dar încă cred că e cel mai potrivit candidat.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="altele_1"&gt;&lt;a class="toclink" href="#altele_1"&gt;Altele&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Nu am apucat să citesc încă aceste propuneri ale lui:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://senat.ro/legis/lista.aspx?nr_cls=L331&amp;amp;an_cls=1998"&gt;L331/1998&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://senat.ro/legis/lista.aspx?nr_cls=L393&amp;amp;an_cls=1998"&gt;L393/1998&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://senat.ro/legis/lista.aspx?nr_cls=L394&amp;amp;an_cls=1998"&gt;L394/1998&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://senat.ro/legis/lista.aspx?nr_cls=L396&amp;amp;an_cls=1998"&gt;L396/1998&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://senat.ro/legis/lista.aspx?nr_cls=L397&amp;amp;an_cls=1998"&gt;L397/1998&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://senat.ro/legis/lista.aspx?nr_cls=L259&amp;amp;an_cls=1999"&gt;L259/1999&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="catalin-ivan"&gt;&lt;a class="toclink" href="#catalin-ivan"&gt;Cătălin Ivan&lt;/a&gt;&lt;/h2&gt;
&lt;h4 id="pro_2"&gt;&lt;a class="toclink" href="#pro_2"&gt;Pro&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Are copii (vezi declaratie avere: venit alocatie)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="contra_4"&gt;&lt;a class="toclink" href="#contra_4"&gt;Contra&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.catalinivan.ro/despre-mine/"&gt;Platitudini vagi&lt;/a&gt;, cu excepția poziției creștine&lt;/li&gt;
&lt;li&gt;&lt;a href="http://stiripentruviata.ro/interviu-catalin-ivan-sincer-pana-la-capat-despre-activismul-lgbt-islamizarea-europei-de-vest-transnistria-relatia-cu-rusia-si-pesedismul-sau/"&gt;Pro-viață (anti-avort), pro-familie (anti-gay)&lt;/a&gt; - personal, consider că un copil nedorit, dar cu părinți obligați prin lege să-l nască, va duce o viață nemeritat de grea (citește despre &lt;a href="https://ro.wikipedia.org/wiki/Politica_demografic%C4%83_a_regimului_Ceau%C8%99escu"&gt;decreței&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;De asemenea, susțin drepturile homosexualilor. Dacă două persoane gay vor să aibă aceleași drepturi ca două persoane heterosexuale căsătorite, cu ce mă afectează? Mă bucur că și-au găsit un partener stabil, în loc să iasă prin oraș la agățat (și să se dea la mine sperând că sunt și eu gay :))).&lt;/p&gt;
&lt;h2 id="alexandru-cumpanasu"&gt;&lt;a class="toclink" href="#alexandru-cumpanasu"&gt;Alexandru Cumpănașu&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Acest candidat ia în considerare moartea &lt;a href="https://www.mediafax.ro/social/alexandra-fata-ucisa-in-caracal-era-nepoata-unei-personalitati-publice-era-masacrata-in-casa-cu-politistii-si-procurorii-la-poarta-18251479"&gt;nepoatei sale Alexandra Măceșanu, ucisă la Caracal&lt;/a&gt;, și vrea să înființeze, ca primă măsură în calitate de președinte, un departament anti-mafie ce va combate traficul de persoane &lt;a href="https://youtu.be/8qH7hK7_o3A?t=1097"&gt;(vezi acest video, de la minutul 18:17)&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id="pro_3"&gt;&lt;a class="toclink" href="#pro_3"&gt;Pro&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Are multă pasiune pentru ce face, și a făcut &lt;a href="https://www.youtube.com/channel/UCeacaFxEqjZki1gC9c1SvHA/videos"&gt;multe videouri pe YouTube&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id="contra_5"&gt;&lt;a class="toclink" href="#contra_5"&gt;Contra&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Din păcate, nu are alte poziții politice, din câte îmi dau seama. Consider că e bine să avem instituții de ordine eficiente, dar nu e singura problemă în stat.&lt;/p&gt;
&lt;h2 id="hunor-kelemen"&gt;&lt;a class="toclink" href="#hunor-kelemen"&gt;Hunor Kelemen&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Pagina sa în română e &lt;a href="http://hunor.udmr.ro/ro-respekt/"&gt;aici&lt;/a&gt;.
Candidat din partea UDMR.&lt;/p&gt;
&lt;h4 id="contra_6"&gt;&lt;a class="toclink" href="#contra_6"&gt;Contra&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Îți oferă "respekt" cu "k". Pentru că e mai șmeker.&lt;/li&gt;
&lt;li&gt;UDMR are tendințe socialiste, cum ar fi &lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16468"&gt;internet gratis suportat de restaurante&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;UDMR e aproape de PSD, conform &lt;a href="images/harta-ideologica.png"&gt;hărții mele ideologice&lt;/a&gt; din &lt;a href="analiza-partide-partea-3.html"&gt;articolul precedent&lt;/a&gt;, iar eu sunt contra PSD (vezi secțiunea &lt;a href="#viorica-dancila"&gt;Contra la Viorica Dăncilă&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="altele_2"&gt;&lt;a class="toclink" href="#altele_2"&gt;Altele&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Susține reducerea programei în școli.&lt;/li&gt;
&lt;li&gt;Reprezintă drepturile maghiarilor, încât să ceară &lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19094"&gt;autonomia Ținutului Secuiesc&lt;/a&gt; și &lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17289"&gt;o mai largă adoptare a limbilor materne minoritare în instituții publice&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="ramona-bruynseels"&gt;&lt;a class="toclink" href="#ramona-bruynseels"&gt;Ramona Bruynseels&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://ramonapresedinte.ro"&gt;Candidat independent&lt;/a&gt;&lt;/p&gt;
&lt;h4 id="pro_4"&gt;&lt;a class="toclink" href="#pro_4"&gt;Pro&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://youtu.be/4fL4L2-qlmQ?t=205"&gt;Are 2 fete&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;A lucrat drept consilier juridic la armată, mai multe poziții la BCR, ONG-uri, și guvern.&lt;/li&gt;
&lt;li&gt;A studiat la &lt;a href="http://gov.ro/fisiere/echipa-pm/ramona_ioana_bruynseels.pdf"&gt;Harvard Kennedy School&lt;/a&gt;. Din păcate, costă $23 pentru a obține o confirmare de la acea școală.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="contra_7"&gt;&lt;a class="toclink" href="#contra_7"&gt;Contra&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;A fost în Guvern &lt;a href="http://gov.ro/fisiere/echipa-pm/ramona_ioana_bruynseels.pdf"&gt;din 2017 până în prezent&lt;/a&gt;, iar acum e consilier de stat în "aparatul propriu de lucru al Prim-ministrului", adică al Vioricăi Dăncilă&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="theodor-paleologu"&gt;&lt;a class="toclink" href="#theodor-paleologu"&gt;Theodor Paleologu&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A fost &lt;a href="http://www.cdep.ro/pls/parlam/structura2015.mp?idm=220&amp;amp;leg=2008&amp;amp;cam=2"&gt;deputat&lt;/a&gt;, printre inițiatorii unor proiecte de lege (deși nu a ajuns niciunul în vigoare, încă).&lt;/p&gt;
&lt;h4 id="pro_5"&gt;&lt;a class="toclink" href="#pro_5"&gt;Pro&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;A fost printre inițiatorii &lt;a href="http://www.cdep.ro/pls/proiecte/upl_pck2015.proiect?idp=15149"&gt;proiectului de a organiza alegerile locale în două tururi, din nou&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;A propus &lt;a href="http://www.cdep.ro/pls/proiecte/upl_pck2015.proiect?idp=13866"&gt;interzicerea mineritului pe bază de cianuri&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;A propus &lt;a href="http://www.cdep.ro/pls/proiecte/upl_pck2015.proiect?idp=15173"&gt;Registrul Electronic Național al Lucrărilor Științifice&lt;/a&gt;, cu scopul de a permite publicarea gratuită de articole științifice, și de a depista plagiatul.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="contra_8"&gt;&lt;a class="toclink" href="#contra_8"&gt;Contra&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;A propus măsuri pentru colectarea mai &lt;a href="http://www.cdep.ro/pls/proiecte/upl_pck2015.proiect?idp=12154"&gt;severă a taxelor de timbru cultural&lt;/a&gt;. Acești bani merg la "uniuni și organizații de creatori", care fac ce vor cu ei. Uniunile pot fi aprobate doar de Ministerul Culturii; acesta e un tip de centralizare cu care nu sunt de acord. În plus, &lt;a href="https://uniuneascriitorilor.ro/cotizatii"&gt;uniunile cer cotizații și de la membri&lt;/a&gt;, iar la schimb oferă &lt;a href="https://uniuneascriitorilor.ro/statut"&gt;unele beneficii&lt;/a&gt;, pe lângă învârtirea de bani.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="altele_3"&gt;&lt;a class="toclink" href="#altele_3"&gt;Altele&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://evz.ro/teodor-paleologu-se-inscrie-si-el-in-pmp-1080367-1.html"&gt;S-a mutat din PDL în PMP&lt;/a&gt;, din motivul unui accident aviatic, împreună cu alți membri PDL.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://stiripentruviata.ro/video-catalin-ivan-il-provoaca-pe-theodor-paleologu-sa-admita-ca-sustine-parteneriatul-civil-dezbatere-la-tvr-1/"&gt;Pro parteneriatului civil&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Edit 2019-11-08:&lt;/strong&gt; În &lt;a href="https://www.youtube.com/watch?v=obKrM5rC5zA"&gt;dezbaterea finală de la Europa FM&lt;/a&gt;, pretinde că e "de dreapta" și consideră reglementarea excesivă ca fiind o cauză importantă a corupției. Însă nu am văzut acest lucru menționat pe &lt;a href="https://pmponline.ro/paleologu-presedinte"&gt;pagina campaniei sale&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;E un orator înrăit, ați putea spune "bombastic". Plus că arată "hip" cu pipa lui.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="dan-barna"&gt;&lt;a class="toclink" href="#dan-barna"&gt;Dan Barna&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Mă bucur mult că avem două tururi. Dacă am fi avut un singur tur, l-aș fi votat pe dl. Barna. Dar poate va ajunge în al doilea tur, caz în care o să îi ofer susținerea.&lt;/p&gt;
&lt;p&gt;E reprezentantul USR, ce are &lt;a href="https://www.usr.ro/10-prioritati/"&gt;o listă lungă de acțiuni concrete&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id="pro_6"&gt;&lt;a class="toclink" href="#pro_6"&gt;Pro&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Are o &lt;a href="https://www.danbarnapresedinte.ro/zece_proiecte_pentru_romania"&gt;listă cu propuneri concrete&lt;/a&gt;. Asta e rar la candidați.&lt;/li&gt;
&lt;li&gt;Despre &lt;a href="https://www.danbarnapresedinte.ro/program_economie"&gt;economie&lt;/a&gt;, propune implicarea mai activă a Președintelui în discuția bugetului, reducerea poverii fiscale, și reducerea birocrației. Cred că ultimele două sunt foarte importante, și adresează cele mai grave probleme din România.&lt;/li&gt;
&lt;li&gt;Propune folosirea fondurilor europene, în locul celor naționale, unde UE se oferă. Acest lucru duce la respectarea normelor UE, nu a baronilor locali, pentru acele investiții.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="contra_9"&gt;&lt;a class="toclink" href="#contra_9"&gt;Contra&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Propune investiții mai mari în &lt;a href="https://www.danbarnapresedinte.ro/program_educatie"&gt;educație&lt;/a&gt; și &lt;a href="https://www.danbarnapresedinte.ro/program_sanatate"&gt;sănătate&lt;/a&gt;. Pentru mine, mai mulți bani publici înseamnă un potențial mai mare de corupție.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mircea-diaconu"&gt;&lt;a class="toclink" href="#mircea-diaconu"&gt;Mircea Diaconu&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Conform &lt;a href="https://ro.wikipedia.org/wiki/Mircea_Diaconu"&gt;Wikipedia&lt;/a&gt;, e un actor asociat cu PD în CNA, senator PNL în 2008-2012 (când &lt;a href="https://ro.wikipedia.org/wiki/Alegeri_legislative_%C3%AEn_Rom%C3%A2nia,_2008"&gt;PNL avea doar 18.7% din locuri&lt;/a&gt;), europarlamentar independent, apoi membru ALDE în 2014-2019.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/parlam/structura2015.mp?idm=42&amp;amp;cam=1&amp;amp;leg=2008"&gt;Pagina activității parlamentare ca senator PNL&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.europarl.europa.eu/meps/ro/124805/MIRCEA_DIACONU/history/8"&gt;Pagina activității parlamentare UE&lt;/a&gt;; &lt;a href="https://www.europarl.europa.eu/meps/ro/124805/MIRCEA_DIACONU/all-activities/plenary-speeches/8"&gt;intervenții în plen&lt;/a&gt;&lt;/p&gt;
&lt;h4 id="pro_7"&gt;&lt;a class="toclink" href="#pro_7"&gt;Pro&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;A propus un proiect pentru &lt;a href="http://www.cdep.ro/pls/proiecte/upl_pck2015.proiect?idp=10482"&gt;limitarea absențelor și vacanțelor plătite ale parlamentarilor&lt;/a&gt;. A fost respins, evident.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="contra_10"&gt;&lt;a class="toclink" href="#contra_10"&gt;Contra&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Cu alți colegi, a propus finanțarea conservării monumentelor istorice din &lt;a href="http://www.cdep.ro/pls/proiecte/upl_pck2015.proiect?idp=11359"&gt;o nouă taxă pe autorizații de construcții&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Asociat cu ALDE, care e aproape de PSD, conform &lt;a href="images/harta-ideologica.png"&gt;hărții mele ideologice&lt;/a&gt; din &lt;a href="analiza-partide-partea-3.html"&gt;articolul precedent&lt;/a&gt;, iar eu sunt contra PSD (vezi secțiunea &lt;a href="#viorica-dancila"&gt;Contra la Viorica Dăncilă&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="altele_4"&gt;&lt;a class="toclink" href="#altele_4"&gt;Altele&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Cu alți colegi, a propus introducerea unui &lt;a href="http://www.cdep.ro/pls/proiecte/upl_pck2015.proiect?idp=11076"&gt;stimulent financiar&lt;/a&gt; pentru angajarea de proaspăt absolvenți, în special studenți la medicină.&lt;/li&gt;
&lt;li&gt;Cu alți colegi, a propus majorarea indemnizațiilor pentru &lt;a href="http://www.cdep.ro/pls/proiecte/upl_pck2015.proiect?idp=10438&amp;amp;cam=2"&gt;cei supuși muncii forțate din 1950-1961&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="viorica-dancila"&gt;&lt;a class="toclink" href="#viorica-dancila"&gt;Viorica Dăncilă&lt;/a&gt;&lt;/h2&gt;
&lt;h4 id="pro_8"&gt;&lt;a class="toclink" href="#pro_8"&gt;Pro&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://adevarul.ro/locale/timisoara/fiul-premierului-propus-viorica-dancila-intr-un-mesaj-agramat-pentr-klaus-iohannis-nu-presedintele-meu-1_5a5e94bbdf52022f75944af1/index.html"&gt;Are un copil&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Ea și soțul dețin clădiri și terenuri .&lt;a href="https://www.digi24.ro/stiri/actualitate/politica/ce-avere-are-vasilica-viorica-dancila-imobile-terenuri-si-conturi-de-zeci-de-mii-de-euro-861575"&gt;sursă 1&lt;/a&gt; &lt;a href="http://storage07transcoder.rcs-rds.ro/storage/2018/01/25/869935_869935_document-2018-01-16-22229432-0-declaratie-avere-viorica-dancila.pdf"&gt;(declarație avere)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="contra_11"&gt;&lt;a class="toclink" href="#contra_11"&gt;Contra&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;E asociată unui partid ce &lt;a href="https://www.realitatea.net/protest-10-august-2019-bucuresti-diaspora_2211161.html"&gt;a văzut oameni ce ies în stradă la protest, și apoi i-a bătut&lt;/a&gt;. Nu văd cum împacă ea acest fapt, ca persoană, cu interesul în viitorul propriu și a familiei proprii în România. Nu îi pasă de eroziunea libertăților civile (chiar și proprii, dacă nu a societății în general)? Credeți că această persoană ar sesiza legi neconstituționale, în calitate de Președinte?&lt;/li&gt;
&lt;li&gt;A lăsat &lt;a href="https://www.wall-street.ro/articol/Economie/246468/ludovic-orban-starea-finantelor-este-foarte-proasta-florin-citu-executia-bugetara-de-pana-acum-este-ingriijoratoare.html"&gt;bugetul mult pe pe minus&lt;/a&gt;, cheltuind și fondul de rezervă când a fost dată afară.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.click.ro/news/national/viorica-dancila-si-depus-candidatura-pentru-prezidentiale-nicio-mama-sa-nu-i-fie-frica"&gt;Dificultăți în exprimare&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="altele_5"&gt;&lt;a class="toclink" href="#altele_5"&gt;Altele&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Membru al PSD din &lt;a href="http://www.cdep.ro/pdfs/guv201801/CV_Dancila.pdf"&gt;1996&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="klaus-iohannis"&gt;&lt;a class="toclink" href="#klaus-iohannis"&gt;Klaus Iohannis&lt;/a&gt;&lt;/h2&gt;
&lt;h4 id="pro_9"&gt;&lt;a class="toclink" href="#pro_9"&gt;Pro&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Multe din abuzurile PSD din Parlament au fost sesizate de dl. Iohannis ca fiind neconstituționale. Printre &lt;a href="https://parlament.openpolitics.ro/politici/controversate"&gt;cele mai controversate, descoperite de Parlament Transparent,&lt;/a&gt; găsim următoarele:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://parlament.openpolitics.ro/politici/propuneri/fefc6bdc-d649-406d-8183-a1bc71fa1818"&gt;modificări imense la Codul de procedură penală, cu foarte puțin timp de dezbatere, pentru îngreunarea urmăririi penale&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://parlament.openpolitics.ro/politici/propuneri/e68dc34a-c970-4117-8bba-62ed0c977460"&gt;dedicații pentru prefecți și primari&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://parlament.openpolitics.ro/politici/propuneri/92707e47-0650-4dde-86c5-fe33a1c499a6"&gt;dezincriminarea neglijenței în serviciu și parțială a abuzului în serviciu, îngreunarea confiscării extinse a averilor, reducerea pedepselor pentru o serie de infracțiuni de serviciu&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;El și soția dețin în total 854.6m² de clădiri. &lt;a href="https://www.presidency.ro/files/documente/Iohannis_KlausWerner-decl_avere-iunie2016.pdf"&gt;(declarație avere)&lt;/a&gt;. Dar acestea au o parte întunecată, vezi și partea "Contra".&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="contra_12"&gt;&lt;a class="toclink" href="#contra_12"&gt;Contra&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;A obținut o proprietate prin falsificări de documente și retrocedări ilegale. Acest lucru îmi reduce încrederea. &lt;a href="https://evz.ro/dezvaluiri-cum-s-a-imbogatit-iohannis-folosindu-se-de-falsi-mostenitori-si-de-acte-fabricate.html"&gt;sursă 1&lt;/a&gt; &lt;a href="https://evz.ro/iohannis-despre-faptul-ca-alti-profesori-nu-au-sase-case-ghinion.html"&gt;sursă 2&lt;/a&gt; &lt;a href="https://www.riseproject.ro/articol/mostenirea-din-spatele-averii-imobiliare-a-lui-klaus-iohannis/"&gt;sursă 3&lt;/a&gt;. Casa a fost, mai târziu, &lt;a href="http://www.ziare.com/klaus-johannis/presedinte/iohannis-a-pierdut-definitiv-in-instanta-casa-din-centrul-sibiului-1454763"&gt;pierdută într-un proces.&lt;/a&gt; Mă bucur că se aplică justiția și în cazul președinților, măcar un pic.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://adevarul.ro/news/politica/iohannis-scos-emisia-live-sistemul-siguranta-unui-post-radio-pauza-vorbire-lunga-audio-1_5a60e84ddf52022f75a45f66/index.html"&gt;Vorbire.....  ...lentă&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="altele_6"&gt;&lt;a class="toclink" href="#altele_6"&gt;Altele&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Susținut de PNL.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.romaniatv.net/de-ce-nu-are-copii-klaus-iohannis-ma-scuzati-domnu-neamt-dar-eu-nu-votez-un-presedinte-fara-copii_172909.html"&gt;Nu are copii, din motive biologice.&lt;/a&gt;&lt;/p&gt;</content><category term="Română"></category><category term="Politics"></category><category term="Economy"></category><category term="Romania"></category></entry><entry><title>Analiză partide - partea 3</title><link href="https://danuker.go.ro/analiza-partide-partea-3.html" rel="alternate"></link><published>2019-11-01T00:00:00+02:00</published><updated>2019-11-01T00:00:00+02:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2019-11-01:/analiza-partide-partea-3.html</id><summary type="html">&lt;p&gt;Am refăcut analiza de la partea a 2-a a acestei analize, și am dus-o mai departe.&lt;/p&gt;
&lt;p&gt;Metoda calculării votului normalizat (comparabil între partide) era cam ciudată (abținerile erau considerate diferite de lipsa unui vot sau de absențe). Ca urmare, apăreau diferențe artificiale irelevante dintre partide.&lt;/p&gt;
&lt;p&gt;Am decis să iau ca …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Am refăcut analiza de la partea a 2-a a acestei analize, și am dus-o mai departe.&lt;/p&gt;
&lt;p&gt;Metoda calculării votului normalizat (comparabil între partide) era cam ciudată (abținerile erau considerate diferite de lipsa unui vot sau de absențe). Ca urmare, apăreau diferențe artificiale irelevante dintre partide.&lt;/p&gt;
&lt;p&gt;Am decis să iau ca vot normalizat procentul de membri ai partidului (prezenți sau nu) care au votat "da". Astfel, se schimbă toată analiza ce urmează.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/dic/site2015.page?den=act2_1&amp;amp;par1=3#t3c1s3sba76"&gt;Vezi în Constituție&lt;/a&gt; diferența dintre "votul majorității membrilor" în cazul legilor organice (prezenți sau absenți) și "votul majorității membrilor prezenți" pentru legi ordinare (ce are putere chiar dacă ar fi un singur parlamentar prezent, de exemplu).&lt;/p&gt;
&lt;p&gt;Sper că această abordare arată o imagine mai corectă. Cred acest lucru deoarece numărul voturilor de "da" este cel cu efect, și chiar dacă membrii prezenți votează "da", absența multora înseamnă că partidul nu e chiar pe poziția "da".&lt;/p&gt;
&lt;p&gt;Totuși, să luăm ca exemplu &lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20342"&gt;acest vot&lt;/a&gt;, unde sunt absenți 32 de membri PNL, 7 USR, 5 UDMR, și 6 PMP.&lt;/p&gt;
&lt;p&gt;Pe lângă cei 97 de prezenți ce nu au votat "da", dacă acești absenți s-ar fi prezentat și votat, ar fi ajuns la 147, și ar fi depășit cele 136 de voturi "da", iar această lege ordinară nu ar fi fost adoptată.&lt;/p&gt;
&lt;p&gt;În ce măsură credeți că absențele au fost intenționate, într-un joc politic? O analiză ce ar estima acest lucru ar fi foarte sofisticată; iar cea pe care o citiți nu ia în considerare absențele ca vot "pro".&lt;/p&gt;
&lt;p&gt;Am actualizat această analiză și în &lt;a href="https://github.com/danuker/Explorations/blob/master/parlament/Analiz%C4%83%20voturi%20Camera%20Deputa%C8%9Bilor.ipynb"&gt;varianta Jupyter Notebook editabilă, disponibilă aici&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id="voturi-specifice-ale-partidelor"&gt;&lt;a class="toclink" href="#voturi-specifice-ale-partidelor"&gt;Voturi specifice ale partidelor&lt;/a&gt;&lt;/h1&gt;
&lt;h4 id="luand-in-considerare-numai-voturile-de-da-ca-proportie-din-totalul-membrilor-partidului"&gt;&lt;a class="toclink" href="#luand-in-considerare-numai-voturile-de-da-ca-proportie-din-totalul-membrilor-partidului"&gt;luând în considerare numai voturile de "da" ca proporție din totalul membrilor partidului&lt;/a&gt;&lt;/h4&gt;
&lt;h3 id="voturi-specifice-psd"&gt;&lt;a class="toclink" href="#voturi-specifice-psd"&gt;Voturi specifice PSD:&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22362"&gt;Vot 22362&lt;/a&gt;: scor 0.699 pro obligării BNR să readucă aurul în țară. Interesant! &lt;a href="http://www.cdep.ro/pls/steno/steno2015.stenograma?ids=8056&amp;amp;idm=6"&gt;Stenograma dezbaterii dinainte de vot e aici.&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22763"&gt;Vot 22763&lt;/a&gt;: scor 0.639 contra vacantării lui Octavian Goga, deputat PSD condamnat penal&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22363"&gt;Vot 22363&lt;/a&gt;: scor 0.638 pro obligării la a încerca medierea, în caz contrar pierzând dreptul la judecată (din nou; dar a devenit &lt;a href="http://legislatie.just.ro/Public/DetaliiDocument/216614"&gt;lege&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22764"&gt;Vot 22764&lt;/a&gt;: scor 0.635 contra modificării ordinii de vot pentru a-l vacanta pe Octavian Goga, deputat PSD ce trebuie demis, înainte de a-i permite să voteze pentru o moțiune de cenzură.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22365"&gt;Vot 22365&lt;/a&gt;: scor 0.604 pro unei legi PSD-ALDE anticorupție, cu dedicație pentru Dragnea (a doua încercare)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20604"&gt;Vot 20604&lt;/a&gt;: scor 0.603 pro reglementării operațiunilor petroliere pe următorii 45 de ani, pe repede-nainte, în lipsa datelor&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20136"&gt;Vot 20136&lt;/a&gt;: scor 0.600 pro unei legi PSD-ALDE anticorupție, cu dedicație pentru Dragnea (cu timp insuficient pentru dezbatere)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=21110"&gt;Vot 21110&lt;/a&gt;: scor 0.594 pro stabilirii prin lege a unor criterii de performanță a funcționarilor publici&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20603"&gt;Vot 20603&lt;/a&gt;: scor 0.587 pro transpunerii unei legi UE împotriva spălării banilor, cu o excepție neconstituțională pentru minorități&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22364"&gt;Vot 22364&lt;/a&gt;: scor 0.583 pro unei schimbări neconstituționale ale Codului de Procedură Penală&lt;/p&gt;
&lt;h3 id="voturi-specifice-minoritati"&gt;&lt;a class="toclink" href="#voturi-specifice-minoritati"&gt;Voturi specifice Minorități:&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Nu am avut timp să comentez toate voturile.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16490"&gt;Vot 16490&lt;/a&gt;: scor 0.674 contra permiterii în continuare a libertății religioase, chiar și nerecunoscute de Guvern (Legea 489/2006)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=21028"&gt;Vot 21028&lt;/a&gt;: scor 0.634 pro înființării unei agenții de sistem dual (PNL, USR zic că ar fi doar pentru sinecuri)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=21325"&gt;Vot 21325&lt;/a&gt;: scor 0.556 pro centralizării administrației ariilor naturale protejate, și eliminării ONG-urilor ce se ocupau de ele (încercarea nr. 1)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22235"&gt;Vot 22235&lt;/a&gt;: scor 0.548 pro respingerii scutirii de impozit local pentru persoane persecutate politic, din cauza abrogării legii la care face referire&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=21052"&gt;Vot 21052&lt;/a&gt;: scor 0.525&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22463"&gt;Vot 22463&lt;/a&gt;: scor 0.521 pro înfiinţării Agenţiei pentru Calitatea şi Marketingul Produselor Agroalimentare - pentru că &lt;a href="http://www.cdep.ro/pls/steno/steno2015.stenograma?ids=8064&amp;amp;idm=15"&gt;13000 de agenții deja existente nu sunt destule&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=21082"&gt;Vot 21082&lt;/a&gt;: scor 0.517&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22226"&gt;Vot 22226&lt;/a&gt;: scor 0.509&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22078"&gt;Vot 22078&lt;/a&gt;: scor 0.505&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=21096"&gt;Vot 21096&lt;/a&gt;: scor 0.505&lt;/p&gt;
&lt;h3 id="voturi-specifice-alde"&gt;&lt;a class="toclink" href="#voturi-specifice-alde"&gt;Voturi specifice ALDE:&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Nu am avut timp să comentez toate voturile.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20604"&gt;Vot 20604&lt;/a&gt;: scor 0.639 pro reglementării operațiunilor petroliere pe următorii 45 de ani, pe repede-nainte, în lipsa datelor&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22362"&gt;Vot 22362&lt;/a&gt;: scor 0.594 pro obligării BNR să readucă aurul în țară. Interesant! &lt;a href="http://www.cdep.ro/pls/steno/steno2015.stenograma?ids=8056&amp;amp;idm=6"&gt;Stenograma dezbaterii dinainte de vot e aici.&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=21082"&gt;Vot 21082&lt;/a&gt;: scor 0.579&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20603"&gt;Vot 20603&lt;/a&gt;: scor 0.578 pro transpunerii unei legi UE împotriva spălării banilor, cu o excepție neconstituțională pentru minorități&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22381"&gt;Vot 22381&lt;/a&gt;: scor 0.559&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=21100"&gt;Vot 21100&lt;/a&gt;: scor 0.559&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20602"&gt;Vot 20602&lt;/a&gt;: scor 0.558&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22363"&gt;Vot 22363&lt;/a&gt;: scor 0.548 pro obligării la a încerca medierea, în caz contrar pierzând dreptul la judecată (din nou; dar a devenit &lt;a href="http://legislatie.just.ro/Public/DetaliiDocument/216614"&gt;lege&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22364"&gt;Vot 22364&lt;/a&gt;: scor 0.538 pro unei schimbări neconstituționale ale Codului de Procedură Penală&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22380"&gt;Vot 22380&lt;/a&gt;: scor 0.535 pro modificării Legii fondului funciar 18/1991 a.î. să permită cereri de reconstituire a dreptului la proprietate oricând&lt;/p&gt;
&lt;h3 id="voturi-specifice-udmr"&gt;&lt;a class="toclink" href="#voturi-specifice-udmr"&gt;Voturi specifice UDMR:&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17001"&gt;Vot 17001&lt;/a&gt;: scor 0.723 contra transmiterii de infrastuctură portuară din domeniul național în domeniul județului Tulcea, în scop turistic&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16997"&gt;Vot 16997&lt;/a&gt;: scor 0.720 contra stimulării ocupării de locuri de muncă&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17000"&gt;Vot 17000&lt;/a&gt;: scor 0.715 contra reglementării auditului financiar conform UE&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20418"&gt;Vot 20418&lt;/a&gt;: scor 0.708 contra implementarea unei legi UE privind distribuţia de asigurări&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17289"&gt;Vot 17289&lt;/a&gt;: scor 0.707 contra respingerii reducerii pragului de 20% pentru folosirea limbilor materne minoritare în administrația publică locală, la 10% din populație, printre altele&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19452"&gt;Vot 19452&lt;/a&gt;: scor 0.688 contra restructurării Agenţiei Naționale pentru Arii Naturale Protejate pentru evitarea personalității juridice redundante la nivel local. UDMR vrea și birocrație locală, nu doar centrală.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20416"&gt;Vot 20416&lt;/a&gt;: scor 0.681 contra modificării componenței comisiilor permanente ale CDEP&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16468"&gt;Vot 16468&lt;/a&gt;: scor 0.678 contra respingerii internetului gratuit în clădirile administrației publice, &lt;strong&gt;teraselor, barurilor, și altor unități de alimentație publică, precum și obligarea furnizării de 500MB lunar de internet pe mobil&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22523"&gt;Vot 22523&lt;/a&gt;: scor 0.677 contra reglementării tratamentului așezărilor informale d.p.d.v. urbanistic&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20129"&gt;Vot 20129&lt;/a&gt;: scor 0.666 contra aprobării OUG privind OUG privind regimul străinilor rezidenți pe termen lung, după o scrisoare de la UE în care atenționează România cu implementarea legii UE&lt;/p&gt;
&lt;h3 id="voturi-specifice-neafiliati"&gt;&lt;a class="toclink" href="#voturi-specifice-neafiliati"&gt;Voturi specifice Neafiliați:&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22309"&gt;Vot 22309&lt;/a&gt;: scor 0.625&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22162"&gt;Vot 22162&lt;/a&gt;: scor 0.613&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22151"&gt;Vot 22151&lt;/a&gt;: scor 0.613&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=21329"&gt;Vot 21329&lt;/a&gt;: scor 0.580&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22155"&gt;Vot 22155&lt;/a&gt;: scor 0.575&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=21323"&gt;Vot 21323&lt;/a&gt;: scor 0.563&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=21338"&gt;Vot 21338&lt;/a&gt;: scor 0.563&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22306"&gt;Vot 22306&lt;/a&gt;: scor 0.553&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22529"&gt;Vot 22529&lt;/a&gt;: scor 0.550&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=21330"&gt;Vot 21330&lt;/a&gt;: scor 0.543&lt;/p&gt;
&lt;h3 id="voturi-specifice-pnl"&gt;&lt;a class="toclink" href="#voturi-specifice-pnl"&gt;Voturi specifice PNL:&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20598"&gt;Vot 20598&lt;/a&gt;: scor 0.743 contra autorizării Ministerului Finanțelor Publice de a vinde certificate de emisii de gaze cu efect de seră, UDMR propune Ministerului Mediului&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20647"&gt;Vot 20647&lt;/a&gt;: scor 0.708 contra înființării Gărzii Forestiere&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20656"&gt;Vot 20656&lt;/a&gt;: scor 0.702 contra permiterii detașării a mai multor cadre didactice&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16217"&gt;Vot 16217&lt;/a&gt;: scor 0.700 contra respingerii prelungirii termenului de răspuns al ANPC în cazul serviciilor financiare&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16292"&gt;Vot 16292&lt;/a&gt;: scor 0.693 contra respingerii publicării datelor de interes public de către instituțiile publice locale sau județene&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20500"&gt;Vot 20500&lt;/a&gt;: scor 0.693 contra adaptării legii apelor la legislația europeană, cu unele neajunsuri &lt;a href="http://www.cdep.ro/pls/steno/steno2015.stenograma?ids=7970&amp;amp;idm=12"&gt;reclamate de PNL&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16625"&gt;Vot 16625&lt;/a&gt;: scor 0.686 contra respingerii condiționării la persoane în dificultate a ajutoarelor de încălzire de la primării. Aici înțeleg eu greșit &lt;a href="http://legislatie.just.ro/Public/DetaliiDocument/209205"&gt;legea&lt;/a&gt;, sau toată lumea a votat pe dos (pentru a permite primăriilor să acorde ajutoare în continuare și persoanelor ce nu au nevoie de ajutor?)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22528"&gt;Vot 22528&lt;/a&gt;: scor 0.684 contra abținere de la modificarea contravențiilor silvice, pe motiv că sunt unele lacune (amenzi prea mici)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20998"&gt;Vot 20998&lt;/a&gt;: scor 0.681 contra pentru prelungirea învățământului obligatoriu de la 10 clase la 11&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17198"&gt;Vot 17198&lt;/a&gt;: scor 0.680 contra respingerii adăugării cursurilor de prim ajutor în programa școlară, prin Legea Învățământului (și nu prin planuri-cadru cum se stabilește programa școlară în mod normal)&lt;/p&gt;
&lt;h3 id="voturi-specifice-usr"&gt;&lt;a class="toclink" href="#voturi-specifice-usr"&gt;Voturi specifice USR:&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Comentariu: USR contrariază mult în voturile mai vechi, chiar și fără să dea motive.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16216"&gt;Vot 16216&lt;/a&gt;: scor 0.762 contra respingerii de a considera Teatrului Evreiesc de Stat pentru spor de activitate de importanță națională, după ce legea referită ca bază a fost înlocuită&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16154"&gt;Vot 16154&lt;/a&gt;: scor 0.756 contra respingerii reducerii TVA la 9% pentru livrări de bunuri sau servicii pentru diagnostice medicale, după ce obiectul legii (Codul fiscal) a fost înlocuit&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16569"&gt;Vot 16569&lt;/a&gt;: scor 0.749 contra respingerii fixării probelor de bacalaureat în lege, în locul metodologiei Ministerului Educației Naționale&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16209"&gt;Vot 16209&lt;/a&gt;: scor 0.747 contra respingerii obligării la licență pentru exportul de lemn în stare brută&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16194"&gt;Vot 16194&lt;/a&gt;: scor 0.741 contra respingerii unei OUG dublate ce permite Guvernului să stabilească prețul maximal al medicamentelor&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16153"&gt;Vot 16153&lt;/a&gt;: scor 0.737 contra respingerii scăderii TVA la 9% pentru aparatură medicală, din cauza schimbării Codului Fiscal între timp&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16280"&gt;Vot 16280&lt;/a&gt;: scor 0.732 contra instituirii zilei naționale a pădurilor&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16497"&gt;Vot 16497&lt;/a&gt;: scor 0.722 contra păstrării dreptului de antenă a candidaților electorali independenți la 5 minute pe întreaga campanie, și nu mărirea acestora la 30&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20645"&gt;Vot 20645&lt;/a&gt;: scor 0.715 contra explicitării turnurilor de turbini eoliene drept clădiri, cf. Codului Fiscal&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16854"&gt;Vot 16854&lt;/a&gt;: scor 0.710 contra adăugării mai multor orașe (Târgu Mureș, Slatina, Turnu Măgurele, Râmnicu Vâlcea) la pensie anticipată parțială din cauza poluării&lt;/p&gt;
&lt;h3 id="voturi-specifice-pmp"&gt;&lt;a class="toclink" href="#voturi-specifice-pmp"&gt;Voturi specifice PMP:&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Comentariu: Nu pricep de ce PMP a propus atâtea proiecte pornind de la legi abrogate. Să fi intenționând grevarea sistemului?&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20649"&gt;Vot 20649&lt;/a&gt;: scor 0.789 contra desființării transportului public București de la Ministerul Transportului (cu consecința de a o înmâna consiliului local)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16141"&gt;Vot 16141&lt;/a&gt;: scor 0.777 contra respingerii centralizării achizițiilor pentru medicină școlară&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16143"&gt;Vot 16143&lt;/a&gt;: scor 0.775 contra respingerii asistării cabinetelor de medicină școlară din bugetul de stat sau local&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16138"&gt;Vot 16138&lt;/a&gt;: scor 0.772 contra respingerii unei soluții parțiale pentru invocarea malpraxisului de către succesorii pacienților decedați; o altă soluție (completă) nu a fost implementată încă&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16144"&gt;Vot 16144&lt;/a&gt;: scor 0.770 contra respingerii autonomiei CNAS făcând referire la o numerotare veche a Legii 95/2006 a sănătății&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16158"&gt;Vot 16158&lt;/a&gt;: scor 0.769 contra respingerii înființării unor structuri organizatorice ale administrației locale ce ar administra cabinete medicale școlare&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16297"&gt;Vot 16297&lt;/a&gt;: scor 0.769 contra eliminării scutirii de detenție cu 30 de zile pentru fiecare lucrare științifică sau invenție brevetată (prevăzute în &lt;a href="http://legislatie.just.ro/Public/DetaliiDocument/150699#id_artA830_ttl"&gt;Legea nr. 254/2013 art. 96 (1) f)&lt;/a&gt; ) - această lege a fost oricum schimbată ulterior la 20 de zile scutite în total, oricare ar fi numărul de lucrări publicate sau brevetate.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16151"&gt;Vot 16151&lt;/a&gt;: scor 0.763 contra respingerii abrogării unei legi deja abrogate (despre sesizări disciplinare ale șefilor sau demnitarilor)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16222"&gt;Vot 16222&lt;/a&gt;: scor 0.759 contra respingerii unui fond pentru sprijinirea cetățenilor români în situații grave în străinătate&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16116"&gt;Vot 16116&lt;/a&gt;: scor 0.758 contra respingerii separării alocației pentru copii în venitul minim garantat (această propunere e o dublură a ce s-a întâmplat deja)&lt;/p&gt;
&lt;h1 id="harta-ideologica"&gt;&lt;a class="toclink" href="#harta-ideologica"&gt;Hartă ideologică&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Am obținut și o hartă a ideologiei partidelor, prin îndesarea miilor de voturi în două dimensiuni. Pentru detalii tehnice, consultați &lt;a href="https://github.com/danuker/analize-politice/blob/master/Analiz%C4%83%20voturi%20Camera%20Deputa%C8%9Bilor.ipynb"&gt;varianta Jupyter Notebook editabilă, disponibilă aici&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Distanța pe această hartă reprezintă dezacordul dintre două partide. Dezacordul maxim posibil teoretic, când un partid ar vota opus altuia tot timpul, ar fi 1. Dar dezacordul maxim actual e circa 0.2, între PSD și PMP, motiv pentru care le-am folosit ca axă orizontală.&lt;/p&gt;
&lt;p&gt;Aria unei bule politice e proporțională cu numărul deputaților asociați cu ea.&lt;/p&gt;
&lt;p&gt;La o nouă rulare, nu va fi produs un grafic identic, din cauza optimizării nedeterministe. Vă rog să nu interpretați acest grafic cu o mare precizie (eroarea poate fi și 0.05). Puteți, însă, descoperi alte voturi interesante, pe care nu le-am comentat, rulând optimizarea iar și iar.&lt;/p&gt;
&lt;p&gt;&lt;img alt="png" class="img-fluid" src="images/harta-ideologica.png"/&gt;&lt;/p&gt;
&lt;p&gt;În continuare prezint voturile cele mai aliniate cu axele X (orizontală) și Y (verticală), găsite în această rulare.&lt;/p&gt;
&lt;h3 id="x"&gt;&lt;a class="toclink" href="#x"&gt;X +&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22079"&gt;Vot 22079&lt;/a&gt;: scor 0.198 pro anchetei despre neutralitatea Consiliul Național al Audiovizualului în 2018-2019&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17262"&gt;Vot 17262&lt;/a&gt;: scor 0.173 pro anchetei despre pensionarea şi reangajarea aceloraşi persoane în MAI&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20417"&gt;Vot 20417&lt;/a&gt;: scor 0.170 pro anchetei privind interceptări ilegale cerute de Dragnea&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20120"&gt;Vot 20120&lt;/a&gt;: scor 0.160 pro readucerii pe ordinea de zi a voturilor amânate de PSD&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20402"&gt;Vot 20402&lt;/a&gt;: scor 0.132 pro evaluării eficienței combaterii pestei porcine africane&lt;/p&gt;
&lt;h3 id="x-"&gt;&lt;a class="toclink" href="#x-"&gt;X -&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=21085"&gt;Vot 21085&lt;/a&gt;: scor 1.221 pro aprobării bugetului CDEP pentru anul 2019; au crescut cheltuielile cu 15% (salarii, pensii speciale)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22380"&gt;Vot 22380&lt;/a&gt;: scor 1.221 pro modificării Legii fondului funciar 18/1991 a.î. să permită cereri de reconstituire a dreptului la proprietate oricând&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=21084"&gt;Vot 21084&lt;/a&gt;: scor 1.221 pro permutării a doi membri PSD în comisiile permanente ale CDEP&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=21087"&gt;Vot 21087&lt;/a&gt;: scor 1.218 pro împăcării unor legi despre achiziții publice&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=21092"&gt;Vot 21092&lt;/a&gt;: scor 1.215 pro scoaterii normativelor de cost pentru investiții din fonduri publice (pentru unii, cec în alb, pentru alții, deblocarea investițiilor)&lt;/p&gt;
&lt;h3 id="y"&gt;&lt;a class="toclink" href="#y"&gt;Y +&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16855"&gt;Vot 16855&lt;/a&gt;: scor 0.121 pro înființării de centre de excelență &lt;em&gt;cu personalitate juridică&lt;/em&gt; pentru elevi (&lt;a href="http://www.cdep.ro/pls/steno/steno2015.stenograma?ids=7791&amp;amp;idm=6"&gt;acuzată de a crea sinecuri&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18985"&gt;Vot 18985&lt;/a&gt;: scor 0.114 pro înlesnirii detașării profesorilor, pentru a preda la o altă școală fără să fi făcut concurs pentru ea&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16313"&gt;Vot 16313&lt;/a&gt;: scor 0.112 pro circului pentru achiziția operei de Brâncuși "Cumințenia Pământului"&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16117"&gt;Vot 16117&lt;/a&gt;: scor 0.111 pro respingerii creșterii duratei concediului paternal de la 10 zile la 15&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16127"&gt;Vot 16127&lt;/a&gt;: scor 0.108 pro respingerii recunoașterii reciproce a cotizației dintre sistemul public și privat de pensii pentru pensionare anticipată&lt;/p&gt;
&lt;h3 id="y-"&gt;&lt;a class="toclink" href="#y-"&gt;Y -&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20120"&gt;Vot 20120&lt;/a&gt;: scor 1.106 pro readucerii pe ordinea de zi a voturilor amânate de PSD&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22079"&gt;Vot 22079&lt;/a&gt;: scor 1.103 pro anchetei despre neutralitatea Consiliul Național al Audiovizualului în 2018-2019&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17262"&gt;Vot 17262&lt;/a&gt;: scor 1.101 pro anchetei despre pensionarea şi reangajarea aceloraşi persoane în MAI&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20417"&gt;Vot 20417&lt;/a&gt;: scor 1.096 pro anchetei privind interceptări ilegale cerute de Dragnea&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22590"&gt;Vot 22590&lt;/a&gt;: scor 1.087 pro abținere contra unor schimbări complexe asupra legilor electorale pentru facilitarea diasporei, pe motiv că nu ar ajuta&lt;/p&gt;
&lt;h1 id="voturi-controversate"&gt;&lt;a class="toclink" href="#voturi-controversate"&gt;Voturi controversate&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Am analizat ce subiecte au fost votate cel mai controversat și cel mai unanim.&lt;/p&gt;
&lt;p&gt;Am măsurat "controversa" prin deviația standard, și am descoperit voturi interesante astfel.&lt;/p&gt;
&lt;p&gt;Totuși, sunt 246 de voturi unanime, din 1601 voturi din această bază de date la acest moment. Nu pot să le citesc pe toate; și fiind foarte multe, în lipsa unor tehnici mai bune de sortat ce mă interesează (poate bazate pe Natural Language Processing), nu îmi oferă informație pentru alegerea mea.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;deviatie_medie&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;normalize&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;axis&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;display&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Markdown&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'## Voturi cu deviație mare'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;link_cdep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;deviatie_medie&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;display&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Markdown&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'## Voturi cu deviație mică'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;link_cdep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;deviatie_medie&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;250&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h1 id="voturi-cu-deviatia-cea-mai-mare"&gt;&lt;a class="toclink" href="#voturi-cu-deviatia-cea-mai-mare"&gt;Voturi cu deviația cea mai mare&lt;/a&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22079"&gt;Vot 22079&lt;/a&gt;: scor 0.367 - Vezi &lt;a href="analiza-partide-partea-2.html"&gt;postarea precedentă&lt;/a&gt; (PSD)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20136"&gt;Vot 20136&lt;/a&gt;: scor 0.348 - Vezi &lt;a href="analiza-partide-partea-2.html"&gt;postarea precedentă&lt;/a&gt; (UDMR)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22732"&gt;Vot 22732&lt;/a&gt;: scor 0.336 - Vezi &lt;a href="analiza-partide-partea-2.html"&gt;postarea precedentă&lt;/a&gt; (PSD)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=21028"&gt;Vot 21028&lt;/a&gt;: scor 0.334 - Vezi &lt;a href="analiza-partide-partea-2.html"&gt;postarea precedentă&lt;/a&gt; (Minorități)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22381"&gt;Vot 22381&lt;/a&gt;: scor 0.333 - PNL, USR și PMP nu sunt de acord cu puterea, la a fixa prin lege orele de școală în funcție de vârstă&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20602"&gt;Vot 20602&lt;/a&gt;: scor 0.333 - PNL, USR, UDMR, și nici PMP nu sunt de acord cu PSD și ALDE, la adoptarea unei OUG prin care ANAF poate păstra 15% din sumele impozitate, precum și premii lunare pentru angajații ANAF. Această propunere a apărut din cauza multor demisii ale angajaților ANAF, pentru a-i stimula pe cei rămași. În plus, OUG-ul mai face schimbări cu pensiile, dar nu îmi dau seama ce. Pe &lt;a href="http://legislatie.just.ro/Public/DetaliiDocument/195391#id_artA525_ttl"&gt;legislatie.just.ro&lt;/a&gt; nu pot vedea ce a fost abrogat. Un sistem opac.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22157"&gt;Vot 22157&lt;/a&gt;: scor 0.333 - aici încep să am suspiciuni. Deși nu toate partidele au votat la fel în votul final, niciunul nu a explicat în stenograme de ce. De asemenea, unii membri PNL și USR au fost în comisii, însă comisiile au recomandat unanim adoptarea acestei legi. Nu știu cum funcționează aceste comisii, dar mi se pare foarte suspect.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Am copiat cele două versiuni furnizate de cineva care știe aplica diferențe mai bine decât mine, &lt;a href="http://legislatie.just.ro/Public/DetaliiDocumentAfis/206860"&gt;dinainte&lt;/a&gt; și &lt;a href="http://legislatie.just.ro/Public/DetaliiDocument/213026"&gt;după&lt;/a&gt; adoptarea acestei OUG, într-un &lt;a href="https://kate-editor.org/"&gt;editor text&lt;/a&gt;, și am scurtat liniile din ele (selectare tot -&amp;gt; "Tools" -&amp;gt; "Apply Word Wrap"), din cauză că liniile noi nu se copiază de pe &lt;code&gt;just.ro&lt;/code&gt;. Apoi, folosind &lt;a href="https://meldmerge.org/"&gt;Meld&lt;/a&gt;, am putut face un "blank file comparison", și am văzut diferențele reale:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;precum și ale autorităților cu atribuții de reglementare&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;se referă la alte "autorități" ce primesc dreptul de a-și stabili cheltuielile prin normative proprii. Ce nu mi-e clar: ce autorități sunt acestea? Cine are atribuții de reglementare? Poate că legiuitorii știu, dar ne ascund, folosind această formulare vagă și inclusivă (știe cine trebuie). Sau poate am văzut prea multe filme cu conspirații în ultima vreme.&lt;/p&gt;
&lt;p&gt;Uite câteva pe care le-am găsit și ar putea fi destinatarii acestor cecuri în alb: &lt;a href="http://www.ansvsa.ro/"&gt;ANSVSA&lt;/a&gt;, &lt;a href="https://www.anre.ro/ro/despre-anre/statutul-si-rolul-an"&gt;ANRE&lt;/a&gt;, &lt;a href="https://www.anrsc.ro/"&gt;ANRSC&lt;/a&gt;, &lt;a href="http://acropo.gov.ro/web/"&gt;ACROPO&lt;/a&gt;, &lt;a href="https://asfromania.ro/"&gt;ASF&lt;/a&gt;, &lt;a href="https://anmcs.gov.ro/web/ro/"&gt;ANMCS&lt;/a&gt;, &lt;a href="http://www.ancom.ro/ancom_106"&gt;ANCOM&lt;/a&gt;, &lt;a href="https://www.anrsc.ro/"&gt;ANSRC&lt;/a&gt;, &lt;a href="https://www.dataprotection.ro/"&gt;ANSPDCP&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Poate ar trebui să urmărim îndeaproape &lt;a href="https://openbudget.ro/"&gt;bugetul statului&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;normativele de cheltuieli pentru dotarea cu autoturisme prevăzute în anexa nr. 3 pct. I lit. B nu se aplică în cazul autoturismelor achiziționate din fonduri externe nerambursabile.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Eh, de ce să nu tratăm fondurile europene ca bani gratis aruncați cu elicopterul?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;În cazuri justificate, prin memorandum aprobat în ședința Guvernului, instituțiile din domeniul apărării, ordinii publice și siguranței naționale care au achiziționat autoturisme, inclusiv în condițiile alin. (9), pot fi abilitate să transmită, pentru o perioadă determinată, folosința gratuită a acestora altor instituții sau autorități publice.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Nu cred că această modificare ar introduce prea mult dezacord.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=21339"&gt;Vot 21339&lt;/a&gt;: scor 0.332 - ajustarea în sus a cheltuielilor, probleme cu bugetul, au fost rezolvate mai târziu&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22587"&gt;Vot 22587&lt;/a&gt;: scor 0.328 - Vezi &lt;a href="analiza-partide-partea-2.html"&gt;postarea precedentă&lt;/a&gt; (PSD)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16696"&gt;Vot 16696&lt;/a&gt;: scor 0.327 - Vezi &lt;a href="analiza-partide-partea-2.html"&gt;postarea precedentă&lt;/a&gt; (Minorități)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22586"&gt;Vot 22586&lt;/a&gt;: scor 0.326 - Vezi &lt;a href="analiza-partide-partea-2.html"&gt;postarea precedentă&lt;/a&gt; (PSD)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22459"&gt;Vot 22459&lt;/a&gt;: scor 0.325 - reducerea unor suspendări de permis de conducere, &lt;a href="http://legislatie.just.ro/Public/DetaliiDocument/216962"&gt;la cererea titularului acestora&lt;/a&gt; (trebuie să știi de lege ca să o poți aplica). Foarte specific (ca și cum un prieten al puterii ar avea permisul suspendat)!&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22530"&gt;Vot 22530&lt;/a&gt;: scor 0.325 - darea în plată a unor imobile în vederea stingerii obligațiilor asumate prin credite - introduce "impreviziuni", care nu sunt conforme dorinței celor ce au încheiat contractele (în special a băncilor). Acest lucru ar duce la scumpirea creditelor, pe termen lung. Încă nu a fost promulgată această lege, din cauza sesizării de neconstituționalitate.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22307"&gt;Vot 22307&lt;/a&gt;: scor 0.324 - altă lege anticorupție a PSD (diferită de &lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20136"&gt;Vot 20136&lt;/a&gt;, din &lt;a href="analiza-partide-partea-2.html"&gt;postarea precedentă&lt;/a&gt; (UDMR))&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22078"&gt;Vot 22078&lt;/a&gt;: scor 0.321&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22861"&gt;Vot 22861&lt;/a&gt;: scor 0.321&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20566"&gt;Vot 20566&lt;/a&gt;: scor 0.321&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18694"&gt;Vot 18694&lt;/a&gt;: scor 0.319&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20970"&gt;Vot 20970&lt;/a&gt;: scor 0.319&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19003"&gt;Vot 19003&lt;/a&gt;: scor 0.318&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="voturi-cu-deviatia-cea-mai-mica"&gt;&lt;a class="toclink" href="#voturi-cu-deviatia-cea-mai-mica"&gt;Voturi cu deviația cea mai mică&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Acestea sunt top 250, din care 246 sunt chiar unanime. Nu am ce analiza, pentru că nu-mi pot da seama care sunt importante, și ar dura foarte mult să mă uit la ele manual. Dar le-am inclus dacă cumva are cineva interesul.&lt;/p&gt;
&lt;div class="pre-scrollable" height="1000px"&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19272"&gt;Vot 19272&lt;/a&gt;: scor -0.029&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16491"&gt;Vot 16491&lt;/a&gt;: scor -0.030&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16505"&gt;Vot 16505&lt;/a&gt;: scor -0.039&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16513"&gt;Vot 16513&lt;/a&gt;: scor -0.039&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16514"&gt;Vot 16514&lt;/a&gt;: scor -0.042&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20658"&gt;Vot 20658&lt;/a&gt;: scor -0.046&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19271"&gt;Vot 19271&lt;/a&gt;: scor -0.046&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19273"&gt;Vot 19273&lt;/a&gt;: scor -0.047&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16205"&gt;Vot 16205&lt;/a&gt;: scor -0.048&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16197"&gt;Vot 16197&lt;/a&gt;: scor -0.048&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16488"&gt;Vot 16488&lt;/a&gt;: scor -0.049&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16214"&gt;Vot 16214&lt;/a&gt;: scor -0.049&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18843"&gt;Vot 18843&lt;/a&gt;: scor -0.049&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16692"&gt;Vot 16692&lt;/a&gt;: scor -0.050&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19264"&gt;Vot 19264&lt;/a&gt;: scor -0.050&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19265"&gt;Vot 19265&lt;/a&gt;: scor -0.050&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22665"&gt;Vot 22665&lt;/a&gt;: scor -0.051&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16207"&gt;Vot 16207&lt;/a&gt;: scor -0.051&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22664"&gt;Vot 22664&lt;/a&gt;: scor -0.051&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18889"&gt;Vot 18889&lt;/a&gt;: scor -0.052&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17250"&gt;Vot 17250&lt;/a&gt;: scor -0.052&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16196"&gt;Vot 16196&lt;/a&gt;: scor -0.052&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16504"&gt;Vot 16504&lt;/a&gt;: scor -0.054&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16502"&gt;Vot 16502&lt;/a&gt;: scor -0.054&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16501"&gt;Vot 16501&lt;/a&gt;: scor -0.055&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18872"&gt;Vot 18872&lt;/a&gt;: scor -0.055&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16503"&gt;Vot 16503&lt;/a&gt;: scor -0.055&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19314"&gt;Vot 19314&lt;/a&gt;: scor -0.056&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16203"&gt;Vot 16203&lt;/a&gt;: scor -0.056&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16506"&gt;Vot 16506&lt;/a&gt;: scor -0.057&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16495"&gt;Vot 16495&lt;/a&gt;: scor -0.058&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16215"&gt;Vot 16215&lt;/a&gt;: scor -0.058&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16493"&gt;Vot 16493&lt;/a&gt;: scor -0.058&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19310"&gt;Vot 19310&lt;/a&gt;: scor -0.059&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19309"&gt;Vot 19309&lt;/a&gt;: scor -0.059&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16224"&gt;Vot 16224&lt;/a&gt;: scor -0.059&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19325"&gt;Vot 19325&lt;/a&gt;: scor -0.059&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20828"&gt;Vot 20828&lt;/a&gt;: scor -0.060&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18833"&gt;Vot 18833&lt;/a&gt;: scor -0.060&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16211"&gt;Vot 16211&lt;/a&gt;: scor -0.060&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19280"&gt;Vot 19280&lt;/a&gt;: scor -0.060&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16195"&gt;Vot 16195&lt;/a&gt;: scor -0.060&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17451"&gt;Vot 17451&lt;/a&gt;: scor -0.061&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16199"&gt;Vot 16199&lt;/a&gt;: scor -0.062&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16220"&gt;Vot 16220&lt;/a&gt;: scor -0.062&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17253"&gt;Vot 17253&lt;/a&gt;: scor -0.062&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19313"&gt;Vot 19313&lt;/a&gt;: scor -0.062&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19266"&gt;Vot 19266&lt;/a&gt;: scor -0.062&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17442"&gt;Vot 17442&lt;/a&gt;: scor -0.063&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17236"&gt;Vot 17236&lt;/a&gt;: scor -0.063&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18870"&gt;Vot 18870&lt;/a&gt;: scor -0.063&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16219"&gt;Vot 16219&lt;/a&gt;: scor -0.063&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17244"&gt;Vot 17244&lt;/a&gt;: scor -0.063&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18830"&gt;Vot 18830&lt;/a&gt;: scor -0.063&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18835"&gt;Vot 18835&lt;/a&gt;: scor -0.063&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16210"&gt;Vot 16210&lt;/a&gt;: scor -0.063&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20655"&gt;Vot 20655&lt;/a&gt;: scor -0.064&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19330"&gt;Vot 19330&lt;/a&gt;: scor -0.064&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20815"&gt;Vot 20815&lt;/a&gt;: scor -0.064&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18781"&gt;Vot 18781&lt;/a&gt;: scor -0.064&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20654"&gt;Vot 20654&lt;/a&gt;: scor -0.064&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17285"&gt;Vot 17285&lt;/a&gt;: scor -0.065&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17284"&gt;Vot 17284&lt;/a&gt;: scor -0.065&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18785"&gt;Vot 18785&lt;/a&gt;: scor -0.065&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17441"&gt;Vot 17441&lt;/a&gt;: scor -0.065&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19262"&gt;Vot 19262&lt;/a&gt;: scor -0.065&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22729"&gt;Vot 22729&lt;/a&gt;: scor -0.065&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18873"&gt;Vot 18873&lt;/a&gt;: scor -0.066&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18788"&gt;Vot 18788&lt;/a&gt;: scor -0.066&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20527"&gt;Vot 20527&lt;/a&gt;: scor -0.066&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20812"&gt;Vot 20812&lt;/a&gt;: scor -0.066&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20651"&gt;Vot 20651&lt;/a&gt;: scor -0.066&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16213"&gt;Vot 16213&lt;/a&gt;: scor -0.067&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19274"&gt;Vot 19274&lt;/a&gt;: scor -0.067&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18789"&gt;Vot 18789&lt;/a&gt;: scor -0.067&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16204"&gt;Vot 16204&lt;/a&gt;: scor -0.068&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18875"&gt;Vot 18875&lt;/a&gt;: scor -0.068&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19275"&gt;Vot 19275&lt;/a&gt;: scor -0.068&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22532"&gt;Vot 22532&lt;/a&gt;: scor -0.068&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20522"&gt;Vot 20522&lt;/a&gt;: scor -0.068&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17259"&gt;Vot 17259&lt;/a&gt;: scor -0.068&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20826"&gt;Vot 20826&lt;/a&gt;: scor -0.069&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17444"&gt;Vot 17444&lt;/a&gt;: scor -0.069&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18892"&gt;Vot 18892&lt;/a&gt;: scor -0.069&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20660"&gt;Vot 20660&lt;/a&gt;: scor -0.069&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20600"&gt;Vot 20600&lt;/a&gt;: scor -0.069&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18882"&gt;Vot 18882&lt;/a&gt;: scor -0.069&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19276"&gt;Vot 19276&lt;/a&gt;: scor -0.069&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16233"&gt;Vot 16233&lt;/a&gt;: scor -0.069&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17304"&gt;Vot 17304&lt;/a&gt;: scor -0.069&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18891"&gt;Vot 18891&lt;/a&gt;: scor -0.070&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18780"&gt;Vot 18780&lt;/a&gt;: scor -0.071&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16225"&gt;Vot 16225&lt;/a&gt;: scor -0.071&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19263"&gt;Vot 19263&lt;/a&gt;: scor -0.071&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16299"&gt;Vot 16299&lt;/a&gt;: scor -0.071&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20822"&gt;Vot 20822&lt;/a&gt;: scor -0.071&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18877"&gt;Vot 18877&lt;/a&gt;: scor -0.072&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22731"&gt;Vot 22731&lt;/a&gt;: scor -0.072&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16281"&gt;Vot 16281&lt;/a&gt;: scor -0.072&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22668"&gt;Vot 22668&lt;/a&gt;: scor -0.072&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16802"&gt;Vot 16802&lt;/a&gt;: scor -0.073&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19278"&gt;Vot 19278&lt;/a&gt;: scor -0.073&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18839"&gt;Vot 18839&lt;/a&gt;: scor -0.073&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18834"&gt;Vot 18834&lt;/a&gt;: scor -0.073&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17302"&gt;Vot 17302&lt;/a&gt;: scor -0.073&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19261"&gt;Vot 19261&lt;/a&gt;: scor -0.073&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20523"&gt;Vot 20523&lt;/a&gt;: scor -0.073&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17300"&gt;Vot 17300&lt;/a&gt;: scor -0.074&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19312"&gt;Vot 19312&lt;/a&gt;: scor -0.074&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16212"&gt;Vot 16212&lt;/a&gt;: scor -0.074&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22737"&gt;Vot 22737&lt;/a&gt;: scor -0.074&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18793"&gt;Vot 18793&lt;/a&gt;: scor -0.074&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16852"&gt;Vot 16852&lt;/a&gt;: scor -0.075&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17305"&gt;Vot 17305&lt;/a&gt;: scor -0.075&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19269"&gt;Vot 19269&lt;/a&gt;: scor -0.075&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17306"&gt;Vot 17306&lt;/a&gt;: scor -0.075&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18869"&gt;Vot 18869&lt;/a&gt;: scor -0.075&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18888"&gt;Vot 18888&lt;/a&gt;: scor -0.075&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19329"&gt;Vot 19329&lt;/a&gt;: scor -0.075&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17237"&gt;Vot 17237&lt;/a&gt;: scor -0.075&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22536"&gt;Vot 22536&lt;/a&gt;: scor -0.075&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20090"&gt;Vot 20090&lt;/a&gt;: scor -0.075&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20596"&gt;Vot 20596&lt;/a&gt;: scor -0.076&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18784"&gt;Vot 18784&lt;/a&gt;: scor -0.076&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18838"&gt;Vot 18838&lt;/a&gt;: scor -0.076&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18783"&gt;Vot 18783&lt;/a&gt;: scor -0.076&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17438"&gt;Vot 17438&lt;/a&gt;: scor -0.076&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22735"&gt;Vot 22735&lt;/a&gt;: scor -0.077&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22734"&gt;Vot 22734&lt;/a&gt;: scor -0.077&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17286"&gt;Vot 17286&lt;/a&gt;: scor -0.077&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19315"&gt;Vot 19315&lt;/a&gt;: scor -0.077&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20526"&gt;Vot 20526&lt;/a&gt;: scor -0.077&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16960"&gt;Vot 16960&lt;/a&gt;: scor -0.077&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17282"&gt;Vot 17282&lt;/a&gt;: scor -0.077&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16500"&gt;Vot 16500&lt;/a&gt;: scor -0.077&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17412"&gt;Vot 17412&lt;/a&gt;: scor -0.078&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20646"&gt;Vot 20646&lt;/a&gt;: scor -0.078&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19283"&gt;Vot 19283&lt;/a&gt;: scor -0.078&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17017"&gt;Vot 17017&lt;/a&gt;: scor -0.078&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17414"&gt;Vot 17414&lt;/a&gt;: scor -0.078&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17261"&gt;Vot 17261&lt;/a&gt;: scor -0.079&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19323"&gt;Vot 19323&lt;/a&gt;: scor -0.079&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18795"&gt;Vot 18795&lt;/a&gt;: scor -0.079&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16235"&gt;Vot 16235&lt;/a&gt;: scor -0.079&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17082"&gt;Vot 17082&lt;/a&gt;: scor -0.079&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18887"&gt;Vot 18887&lt;/a&gt;: scor -0.079&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18779"&gt;Vot 18779&lt;/a&gt;: scor -0.079&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17440"&gt;Vot 17440&lt;/a&gt;: scor -0.079&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16558"&gt;Vot 16558&lt;/a&gt;: scor -0.079&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22730"&gt;Vot 22730&lt;/a&gt;: scor -0.079&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17307"&gt;Vot 17307&lt;/a&gt;: scor -0.079&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17338"&gt;Vot 17338&lt;/a&gt;: scor -0.079&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17443"&gt;Vot 17443&lt;/a&gt;: scor -0.080&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18844"&gt;Vot 18844&lt;/a&gt;: scor -0.080&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17314"&gt;Vot 17314&lt;/a&gt;: scor -0.080&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17413"&gt;Vot 17413&lt;/a&gt;: scor -0.080&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19317"&gt;Vot 19317&lt;/a&gt;: scor -0.080&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20652"&gt;Vot 20652&lt;/a&gt;: scor -0.080&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22520"&gt;Vot 22520&lt;/a&gt;: scor -0.080&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20817"&gt;Vot 20817&lt;/a&gt;: scor -0.081&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19320"&gt;Vot 19320&lt;/a&gt;: scor -0.081&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20096"&gt;Vot 20096&lt;/a&gt;: scor -0.081&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18790"&gt;Vot 18790&lt;/a&gt;: scor -0.081&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17317"&gt;Vot 17317&lt;/a&gt;: scor -0.081&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16892"&gt;Vot 16892&lt;/a&gt;: scor -0.081&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19308"&gt;Vot 19308&lt;/a&gt;: scor -0.081&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16801"&gt;Vot 16801&lt;/a&gt;: scor -0.082&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17448"&gt;Vot 17448&lt;/a&gt;: scor -0.083&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17080"&gt;Vot 17080&lt;/a&gt;: scor -0.083&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20073"&gt;Vot 20073&lt;/a&gt;: scor -0.083&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17319"&gt;Vot 17319&lt;/a&gt;: scor -0.083&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17199"&gt;Vot 17199&lt;/a&gt;: scor -0.083&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16227"&gt;Vot 16227&lt;/a&gt;: scor -0.083&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19277"&gt;Vot 19277&lt;/a&gt;: scor -0.083&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17255"&gt;Vot 17255&lt;/a&gt;: scor -0.083&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17410"&gt;Vot 17410&lt;/a&gt;: scor -0.083&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22533"&gt;Vot 22533&lt;/a&gt;: scor -0.084&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17445"&gt;Vot 17445&lt;/a&gt;: scor -0.084&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22525"&gt;Vot 22525&lt;/a&gt;: scor -0.084&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22662"&gt;Vot 22662&lt;/a&gt;: scor -0.084&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=21047"&gt;Vot 21047&lt;/a&gt;: scor -0.084&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17411"&gt;Vot 17411&lt;/a&gt;: scor -0.085&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20593"&gt;Vot 20593&lt;/a&gt;: scor -0.085&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16489"&gt;Vot 16489&lt;/a&gt;: scor -0.085&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19306"&gt;Vot 19306&lt;/a&gt;: scor -0.085&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16913"&gt;Vot 16913&lt;/a&gt;: scor -0.085&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17263"&gt;Vot 17263&lt;/a&gt;: scor -0.085&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19307"&gt;Vot 19307&lt;/a&gt;: scor -0.085&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=21029"&gt;Vot 21029&lt;/a&gt;: scor -0.086&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16510"&gt;Vot 16510&lt;/a&gt;: scor -0.086&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22524"&gt;Vot 22524&lt;/a&gt;: scor -0.086&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22641"&gt;Vot 22641&lt;/a&gt;: scor -0.086&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20639"&gt;Vot 20639&lt;/a&gt;: scor -0.086&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16559"&gt;Vot 16559&lt;/a&gt;: scor -0.086&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19319"&gt;Vot 19319&lt;/a&gt;: scor -0.087&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17079"&gt;Vot 17079&lt;/a&gt;: scor -0.087&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22531"&gt;Vot 22531&lt;/a&gt;: scor -0.087&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20657"&gt;Vot 20657&lt;/a&gt;: scor -0.087&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16961"&gt;Vot 16961&lt;/a&gt;: scor -0.087&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17335"&gt;Vot 17335&lt;/a&gt;: scor -0.087&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20474"&gt;Vot 20474&lt;/a&gt;: scor -0.087&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17254"&gt;Vot 17254&lt;/a&gt;: scor -0.087&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18893"&gt;Vot 18893&lt;/a&gt;: scor -0.087&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20594"&gt;Vot 20594&lt;/a&gt;: scor -0.087&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16282"&gt;Vot 16282&lt;/a&gt;: scor -0.087&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22527"&gt;Vot 22527&lt;/a&gt;: scor -0.087&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22738"&gt;Vot 22738&lt;/a&gt;: scor -0.087&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16560"&gt;Vot 16560&lt;/a&gt;: scor -0.088&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16965"&gt;Vot 16965&lt;/a&gt;: scor -0.088&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19207"&gt;Vot 19207&lt;/a&gt;: scor -0.088&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18896"&gt;Vot 18896&lt;/a&gt;: scor -0.088&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19322"&gt;Vot 19322&lt;/a&gt;: scor -0.088&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22845"&gt;Vot 22845&lt;/a&gt;: scor -0.088&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16239"&gt;Vot 16239&lt;/a&gt;: scor -0.089&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16226"&gt;Vot 16226&lt;/a&gt;: scor -0.089&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22470"&gt;Vot 22470&lt;/a&gt;: scor -0.089&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16585"&gt;Vot 16585&lt;/a&gt;: scor -0.089&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16790"&gt;Vot 16790&lt;/a&gt;: scor -0.089&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19103"&gt;Vot 19103&lt;/a&gt;: scor -0.090&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19324"&gt;Vot 19324&lt;/a&gt;: scor -0.090&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16193"&gt;Vot 16193&lt;/a&gt;: scor -0.090&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16131"&gt;Vot 16131&lt;/a&gt;: scor -0.090&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16586"&gt;Vot 16586&lt;/a&gt;: scor -0.090&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17222"&gt;Vot 17222&lt;/a&gt;: scor -0.090&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22856"&gt;Vot 22856&lt;/a&gt;: scor -0.090&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22247"&gt;Vot 22247&lt;/a&gt;: scor -0.090&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17446"&gt;Vot 17446&lt;/a&gt;: scor -0.091&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17197"&gt;Vot 17197&lt;/a&gt;: scor -0.091&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19112"&gt;Vot 19112&lt;/a&gt;: scor -0.091&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17283"&gt;Vot 17283&lt;/a&gt;: scor -0.091&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22660"&gt;Vot 22660&lt;/a&gt;: scor -0.091&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16458"&gt;Vot 16458&lt;/a&gt;: scor -0.091&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17248"&gt;Vot 17248&lt;/a&gt;: scor -0.091&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16327"&gt;Vot 16327&lt;/a&gt;: scor -0.091&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22657"&gt;Vot 22657&lt;/a&gt;: scor -0.091&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16589"&gt;Vot 16589&lt;/a&gt;: scor -0.091&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18832"&gt;Vot 18832&lt;/a&gt;: scor -0.091&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20473"&gt;Vot 20473&lt;/a&gt;: scor -0.091&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20069"&gt;Vot 20069&lt;/a&gt;: scor -0.091&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17016"&gt;Vot 17016&lt;/a&gt;: scor -0.091&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16192"&gt;Vot 16192&lt;/a&gt;: scor -0.091&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16571"&gt;Vot 16571&lt;/a&gt;: scor -0.091&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16249"&gt;Vot 16249&lt;/a&gt;: scor -0.092&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17226"&gt;Vot 17226&lt;/a&gt;: scor -0.092&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16880"&gt;Vot 16880&lt;/a&gt;: scor -0.092&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17401"&gt;Vot 17401&lt;/a&gt;: scor -0.092&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17280"&gt;Vot 17280&lt;/a&gt;: scor -0.092&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20521"&gt;Vot 20521&lt;/a&gt;: scor -0.092&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16914"&gt;Vot 16914&lt;/a&gt;: scor -0.092&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="output_area"&gt;
&lt;div class="prompt"&gt;&lt;/div&gt;
&lt;div class="output_markdown rendered_html output_subarea"&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16849"&gt;Vot 16849&lt;/a&gt;: scor -0.092&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="in-postarea-a-4-a-o-sa-analizez-candidatii-la-presedintie-sper-sa-reusesc-acest-lucru-inainte-de-alegeri"&gt;&lt;a class="toclink" href="#in-postarea-a-4-a-o-sa-analizez-candidatii-la-presedintie-sper-sa-reusesc-acest-lucru-inainte-de-alegeri"&gt;În postarea a 4-a, o să analizez candidații la președinție. Sper să reușesc acest lucru înainte de alegeri!&lt;/a&gt;&lt;/h3&gt;</content><category term="Română"></category><category term="Politics"></category><category term="Economy"></category><category term="Romania"></category></entry><entry><title>Analiză partide - partea 2</title><link href="https://danuker.go.ro/analiza-partide-partea-2.html" rel="alternate"></link><published>2019-10-27T00:56:00+03:00</published><updated>2019-10-27T00:56:00+03:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2019-10-27:/analiza-partide-partea-2.html</id><summary type="html">&lt;p&gt;În continuarea &lt;a href="analiza-partide-partea-1.html"&gt;postării precedente&lt;/a&gt;, voi continua să analizez ce fac partidele. De data aceasta, nu voi încerca o analiză obiectivă, ci interpretez eu ceea ce fac.&lt;/p&gt;
&lt;h2 id="voturi-specifice-psd"&gt;&lt;a class="toclink" href="#voturi-specifice-psd"&gt;Voturi specifice PSD:&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;22732: 'Ceva despre comisii permanente; dar nu am înțeles ce după ce am citit &lt;a href="http://www.cdep.ro/pls/proiecte/docs/2019/ph045_pl573.pdf"&gt;modificarea propusă&lt;/a&gt;',&lt;/p&gt;
&lt;p&gt;22764: 'Modificarea ordinii de vot …&lt;/p&gt;</summary><content type="html">&lt;p&gt;În continuarea &lt;a href="analiza-partide-partea-1.html"&gt;postării precedente&lt;/a&gt;, voi continua să analizez ce fac partidele. De data aceasta, nu voi încerca o analiză obiectivă, ci interpretez eu ceea ce fac.&lt;/p&gt;
&lt;h2 id="voturi-specifice-psd"&gt;&lt;a class="toclink" href="#voturi-specifice-psd"&gt;Voturi specifice PSD:&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;22732: 'Ceva despre comisii permanente; dar nu am înțeles ce după ce am citit &lt;a href="http://www.cdep.ro/pls/proiecte/docs/2019/ph045_pl573.pdf"&gt;modificarea propusă&lt;/a&gt;',&lt;/p&gt;
&lt;p&gt;22764: 'Modificarea ordinii de vot pentru a permite chiulul și a nu avea cvorum pentru da afară un coleg PSD',&lt;/p&gt;
&lt;p&gt;22079: 'Hai să nu ne uităm cât de neutru politic a fost Consiliul Național al Audiovizualului în 2018-2019',&lt;/p&gt;
&lt;p&gt;20403: 'Hai să nu aflăm de ce a fost reprimat protestul pașnic din 10 august 2018',&lt;/p&gt;
&lt;p&gt;22463: 'înfiinţarea Agenţiei pentru Calitatea şi Marketingul Produselor Agroalimentare - pentru că &lt;a href="http://www.cdep.ro/pls/steno/steno2015.stenograma?ids=8064&amp;amp;idm=15"&gt;13000 de agenții deja existente nu sunt destule&lt;/a&gt;.',&lt;/p&gt;
&lt;p&gt;20071: 'Obligarea la a încerca medierea, în caz contrar pierderea dreptului la judecată; au primit multe reclamații de neconstituționalitate',&lt;/p&gt;
&lt;p&gt;22460: 'Abilitarea Guvernului de a emite ordonanțe cât timp Parlamentul e în vacanță (până în septembrie)',&lt;/p&gt;
&lt;p&gt;22586: 'Eliminarea custozilor ONG ai ariilor naturale protejate, și preluarea atribuțiilor acestora de către Agenția Națională pentru Arii Naturale Protejate (care nu are custozi necesari)',&lt;/p&gt;
&lt;p&gt;22587: 'Eliminarea necesității autorizațiilor de mediu la 5 sau 10 ani, înlocuire cu viză anuală (fără inspecții?)',&lt;/p&gt;
&lt;p&gt;20717: 'contra vot în două tururi pentru primari. Asta după ce guvernul Tăriceanu a decis votul într-un singur tur pentru &lt;a href="https://ro.wikipedia.org/wiki/Alegeri_locale_%C3%AEn_Rom%C3%A2nia,_2016"&gt;alegerile locale din 2016&lt;/a&gt;, când PSD a câștigat multe primării',&lt;/p&gt;
&lt;h2 id="voturi-specifice-alde"&gt;&lt;a class="toclink" href="#voturi-specifice-alde"&gt;Voturi specifice ALDE:&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;22079: 'vezi mai sus (PSD)',&lt;/p&gt;
&lt;p&gt;20403: 'vezi mai sus (PSD)',&lt;/p&gt;
&lt;p&gt;20402: 'Hai să nu evaluăm eficiența eliminării pestei porcine africane',&lt;/p&gt;
&lt;p&gt;22586: 'vezi mai sus (PSD)',&lt;/p&gt;
&lt;p&gt;22460: 'vezi mai sus (PSD)',&lt;/p&gt;
&lt;p&gt;22463: 'vezi mai sus (PSD)',&lt;/p&gt;
&lt;p&gt;20342: 'Deblocarea vânzărilor de lemne? (nu prea am înțeles)',&lt;/p&gt;
&lt;p&gt;22362: 'Obligarea BNR să readucă aurul în țară. Interesant! &lt;a href="http://www.cdep.ro/pls/steno/steno2015.stenograma?ids=8056&amp;amp;idm=6"&gt;Stenograma dezbaterii dinainte de vot e aici.&lt;/a&gt;.',&lt;/p&gt;
&lt;p&gt;22587: 'vezi mai sus (PSD)',&lt;/p&gt;
&lt;p&gt;20071: 'vezi mai sus (PSD)',&lt;/p&gt;
&lt;h2 id="voturi-specifice-minoritati"&gt;&lt;a class="toclink" href="#voturi-specifice-minoritati"&gt;Voturi specifice Minorități&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;16498: 'Control buget de stat 2016 - nici un reprezentant Minorități nu a votat',&lt;/p&gt;
&lt;p&gt;16894: 'Contra punerii în valoare cetăților dacice din Munții Orăștiei (au invocat sinecuri)',&lt;/p&gt;
&lt;p&gt;16887: 'Pentru declarare de rezervații arheologice',&lt;/p&gt;
&lt;p&gt;16490: '(vot contra tuturor celorlalte partide) - Pentru interzicerea exercitării libertății religioase, cu excepția unor asociații recunoscute de guvern conform unei hotărâri a Guvernului (Legea 489/2006)',&lt;/p&gt;
&lt;p&gt;16696: 'pentru păstrarea auditului de siguranță rutieră la infrastructură nouă',&lt;/p&gt;
&lt;p&gt;20402: 'vezi mai sus (ALDE)',&lt;/p&gt;
&lt;p&gt;16694: 'contra înființării Institutului de Studii Avansate pentru Cultura şi Civilizaţia Levantului în subordinea Senatului',&lt;/p&gt;
&lt;p&gt;20403: 'vezi mai sus (PSD)',&lt;/p&gt;
&lt;p&gt;21028: 'pentru o nouă agenție; cea de sistem dual (PNL, USR zic că e doar pentru sinecuri)',&lt;/p&gt;
&lt;p&gt;20417: 'contra unei anchete privind interceptări ilegale cerute de Dragnea',&lt;/p&gt;
&lt;h2 id="voturi-specifice-udmr"&gt;&lt;a class="toclink" href="#voturi-specifice-udmr"&gt;Voturi specifice UDMR:&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;22871: 'contra simplificarii extinderilor cimitirelor',&lt;/p&gt;
&lt;p&gt;20136: 'abținere de la vot in cazul unei legi PSD-ALDE anticorupție',&lt;/p&gt;
&lt;p&gt;20343: 'contra monopolului artificial creat de "zone unitare" ale furnizorilor locali de energie termică',&lt;/p&gt;
&lt;p&gt;22472: 'pentru evaluări cu "Foarte Bine", "Bine" etc. la sport, în loc de note până la 10, pentru combaterea absenteismului la sport în școli',&lt;/p&gt;
&lt;p&gt;19094: 'pentru statutul de autonomie a Ținutului Secuiesc',&lt;/p&gt;
&lt;p&gt;19235: 'contra redefinirii mai largi a terorismului',&lt;/p&gt;
&lt;p&gt;22590: 'abținere contra unor schimbări complexe asupra legilor electorale pentru facilitarea diasporei, pe motiv că nu ar ajuta',&lt;/p&gt;
&lt;p&gt;17289: 'reducerea pragului de 20% pentru folosirea limbilor materne minoritare în administrația publică locală, la 10% din populație, printre altele',&lt;/p&gt;
&lt;p&gt;19452: 'contra restructurării Agenţiei Naționale pentru Arii Naturale Protejate pentru evitarea personalității juridice redundante la nivel local. UDMR vrea și birocrație locală, nu doar centrală.',&lt;/p&gt;
&lt;p&gt;18786: 'contra unor schimbări de organizare despre Centenarul României. Stenograma dezbaterii dinaintea votului lipsește de pe pagina &lt;a href="http://www.cdep.ro/pls/proiecte/upl_pck2015.proiect?idp=16603"&gt;proiectului de lege&lt;/a&gt;! &lt;a href="http://www.cdep.ro/pls/steno/steno2015.stenograma?ids=7884&amp;amp;idm=9&amp;amp;idl=1"&gt;Am găsit-o aici&lt;/a&gt;.',&lt;/p&gt;
&lt;h2 id="voturi-specifice-neafiliati"&gt;&lt;a class="toclink" href="#voturi-specifice-neafiliati"&gt;Voturi specifice Neafiliați:&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Nu putem vota Neafiliați. În plus, sunt puțini. Prin urmare, nu contează ce au făcut aceștia.&lt;/p&gt;
&lt;p&gt;22291: scor 0.857&lt;/p&gt;
&lt;p&gt;22300: scor 0.857&lt;/p&gt;
&lt;p&gt;22299: scor 0.857&lt;/p&gt;
&lt;p&gt;22162: scor 0.842&lt;/p&gt;
&lt;p&gt;22307: scor 0.833&lt;/p&gt;
&lt;p&gt;22078: 'vezi &lt;a href="analiza-partide-partea-1.html"&gt;a 3-a analiză&lt;/a&gt;, e o lege controversată (scor 0.321 pe acea pagină)',&lt;/p&gt;
&lt;p&gt;22872: scor 0.828&lt;/p&gt;
&lt;p&gt;22151: scor 0.824&lt;/p&gt;
&lt;p&gt;22158: scor 0.791&lt;/p&gt;
&lt;p&gt;22529: scor 0.777&lt;/p&gt;
&lt;h2 id="voturi-specifice-pnl"&gt;&lt;a class="toclink" href="#voturi-specifice-pnl"&gt;Voturi specifice PNL:&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;19318: 'mi-e greu de înțeles ce se întâmplă aici; ceva cu reglementarea fondurilor europene',&lt;/p&gt;
&lt;p&gt;20722: 'pentru extra zile de vacanță',&lt;/p&gt;
&lt;p&gt;20998: 'pentru prelungirea învățământului obligatoriu de la 10 clase la 11',&lt;/p&gt;
&lt;p&gt;18628: 'contra înființării punctelor de control vamal sanitar-veterinar sub ANSVSA și certificate ORNISS (secrete de stat) pentru șefii acestora',&lt;/p&gt;
&lt;p&gt;18840: 'pentru folosirea cu prioritate de fonduri europene, unde acestea sunt eligibile',&lt;/p&gt;
&lt;p&gt;17367: 'abținere de la aprobarea contului de execuție al Camerei Deputaților pentru 2016 (ce înseamnă această abținere???)',&lt;/p&gt;
&lt;p&gt;22528: 'abținere de la modificarea contravențiilor silvice, pe motiv că sunt unele lacune (amenzi prea mici)',&lt;/p&gt;
&lt;p&gt;21116: 'nu susține referendumuri locale în același timp cu cel național pentru revizuirea Constituției',&lt;/p&gt;
&lt;p&gt;20598: 'nu susține autorizarea Ministerului Finanțelor Publice de a vinde certificate de emisii de gaze cu efect de seră, propune Ministerului Mediului',&lt;/p&gt;
&lt;p&gt;21032: 'contra abilitării Institutului de Cercetare "Cantacuzino" să certifice vaccinuri produse în România (n. aut.: acest lucru mă face să cred că PNL are interesul de a importa vaccinuri)',&lt;/p&gt;
&lt;h2 id="voturi-specifice-pmp"&gt;&lt;a class="toclink" href="#voturi-specifice-pmp"&gt;Voturi specifice PMP:&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;18586: 'nu susține înzestrarea și responsabilizarea în locul primarilor unui "resort al aparatului de specialitate al primarului" cu terenuri proprietatea UAT-urilor, precum nici concesionarea terenurilor UAT de către proprietarii construcțiilor de pe acele terenuri (??? complicat)',&lt;/p&gt;
&lt;p&gt;19235: 'vezi mai sus (UDMR)',&lt;/p&gt;
&lt;p&gt;19232: 'nu susține legea privind obligații de securitate ale furnizorilor de servicii digitale esențiale pentru societate',&lt;/p&gt;
&lt;p&gt;22896: 'nu susține OUG privind scutirea de impozit a entităților nerezidente sau juridice rezidente ce organizează Turneul final al Campionatului European de Fotbal 2020',&lt;/p&gt;
&lt;p&gt;22240: 'pentru contribuții în plus la CAS din partea a mari contribuabili',&lt;/p&gt;
&lt;p&gt;16346: 'contra prelungirii termenului de dezbatere PLx 10/2017 (reformare DIICOT) și PLx 12/2017 (clarificări legea educației)',&lt;/p&gt;
&lt;p&gt;16297: 'pentru eliminarea reducerii perioadei de detenție cu 30 de zile pentru fiecare lucrare științifică sau invenție brevetată (prevăzute în &lt;a href="http://legislatie.just.ro/Public/DetaliiDocument/150699#id_artA830_ttl"&gt;Legea nr. 254/2013 art. 96 (1) f)&lt;/a&gt; ) - această lege a fost oricum schimbată ulterior la 20 de zile echivalate, oricare ar fi numărul de lucrări publicate sau brevetate.',&lt;/p&gt;
&lt;p&gt;20318: 'despre recepția unor lucrări la Palatul Parlamentului',&lt;/p&gt;
&lt;p&gt;16605: 'pentru un nou cadru legal al adopției, simplificat, dar care nu e în acord cu acorduri internaționale. &lt;a href="www.copii.ro/anpdca-content/uploads/2017/07/Statistica-adoptii-2017-pentru-site-la-31-mai.docx"&gt;Acum situația s-a îmbunătățit (la capătul documentului e un grafic).&lt;/a&gt;',&lt;/p&gt;
&lt;p&gt;19412: 'voturi contra schimbării Codului de procedură civilă (în favoarea PSD? e o lege complexă și nu îmi pot da seama ușor; USR motivează că nu a fost suficient timp pentru dezbateri).',&lt;/p&gt;
&lt;h2 id="voturi-specifice-usr"&gt;&lt;a class="toclink" href="#voturi-specifice-usr"&gt;Voturi specifice USR:&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;22277: 'nu susține OUG pentru prorogarea unor termene, &lt;a href="http://www.cdep.ro/pls/steno/steno2015.stenograma?ids=8050&amp;amp;idm=14,014"&gt;în special cel referitor la salariul minim????&lt;/a&gt; Dacă poate cineva să îmi explice, aș aprecia enorm.',&lt;/p&gt;
&lt;p&gt;22275: 'contra unei legi prelungiri de acreditări privind transplante și bănci de organe, unde &lt;a href="http://www.cdep.ro/pls/steno/steno2015.stenograma?ids=8050&amp;amp;idm=12"&gt;un om condamnat pentru trafic de ovocite a fost autorul acestor acreditări&lt;/a&gt;',&lt;/p&gt;
&lt;p&gt;22896: 'vezi mai sus (PMP)',&lt;/p&gt;
&lt;p&gt;20128: 'împotriva OUG ce permite extinderea angajărilor la primării',&lt;/p&gt;
&lt;p&gt;20131: 'Nu sprijină exonerarea celor ce au beneficiat fraudulos de ajutoare de urgență privind venitul minim garantat',&lt;/p&gt;
&lt;p&gt;16569: 'Nu resping fixarea probelor de bacalaureat în lege, în locul metodologiei Ministerului Educației Naționale',&lt;/p&gt;
&lt;p&gt;22194: 'pentru păstrarea necesității avizului de însoțire a mărfii vegetale în transportul rutier',&lt;/p&gt;
&lt;p&gt;20650: 'pentru expirarea unei legi ce menține un monopol de stat privind inspecția unor utilaje sub presiune, de ridicat, sau consumatoare de combustibil',&lt;/p&gt;
&lt;p&gt;16788: 'contra măririi salariilor unor bugetari, burselor studenților și gratuității transportului feroviar pentru studenți',&lt;/p&gt;
&lt;p&gt;16854: 'contra adăugării mai multor orașe (Târgu Mureș, Slatina, Turnu Măgurele, Râmnicu Vâlcea) la pensie anticipată parțială din cauza poluării',&lt;/p&gt;
&lt;h1 id="concluzie"&gt;&lt;a class="toclink" href="#concluzie"&gt;Concluzie&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Sper că aceste interpretări v-au fost de folos. Mie mi-au dat o imagine mai clară despre ce se petrece în Parlament.&lt;/p&gt;
&lt;p&gt;A durat câteva zile să le compilez, dar parcă nu e suficient pentru a da o imagine detaliată. Se văd însă marile diferențe ideologice - iar acestea corespund cu ceea ce își fac reclamă partidele.&lt;/p&gt;
&lt;p&gt;PSD e pentru &lt;a href="https://www.psd.ro/despre/in-ce-credem"&gt;măriri&lt;/a&gt; (a salariilor minime și bugetarilor, statului în general, și ajutoarelor), de vreme ce USR e pentru &lt;a href="https://www.usr.ro/10-prioritati/#risipa"&gt;unele micșorări&lt;/a&gt;, dar și unele măriri - &lt;a href="https://www.usr.ro/10-prioritati/#educatie"&gt;educație&lt;/a&gt; și &lt;a href="https://www.usr.ro/10-prioritati/#sanatate"&gt;sănătate&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Includ din nou imaginea cu similaritatea partidelor - se vede clar că PSD și USR sunt cele mai depărtate, iar votând cu unul din ele îți afirmi votul într-un mod puternic (dar s-ar putea ca unele partide noi, ce nu au fost în această analiză, să aibă poziții și mai puternice).&lt;/p&gt;
&lt;p&gt;&lt;img alt="png" class="img-fluid" src="images/sim-partide.png"/&gt;&lt;/p&gt;
&lt;p&gt;Despre partide, mai am curiozitatea să văd ce legi trec unanim (sau aproape unanim); o să vedeți în partea a 3-a!
Iar apoi, o să îmi dau silința să evaluez și candidații la președinție.&lt;/p&gt;
&lt;p&gt;Dacă aveți comentarii, vă invit să le postați sau să mă contactați pe e-mail!&lt;/p&gt;</content><category term="Română"></category><category term="Politics"></category><category term="Economy"></category><category term="Romania"></category></entry><entry><title>Analiză partide - partea 1</title><link href="https://danuker.go.ro/analiza-partide-partea-1.html" rel="alternate"></link><published>2019-10-25T00:00:00+03:00</published><updated>2019-10-25T00:00:00+03:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2019-10-25:/analiza-partide-partea-1.html</id><summary type="html">&lt;p&gt;Am încercat să îmi dau seama eu cu cine votez... &lt;a href="https://ro.wikisource.org/wiki/O_scrisoare_pierdut%C4%83#Scena_VIII"&gt;hâc&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Nu știu de unde să încep să caut date cât de cât obiective despre candidații la președinție. Dacă aveți sugestii, vă rog să lăsați un mesaj!&lt;/p&gt;
&lt;p&gt;În lipsa acestora, am decis să analizez partidele cu care aceștia sunt afiliați …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Am încercat să îmi dau seama eu cu cine votez... &lt;a href="https://ro.wikisource.org/wiki/O_scrisoare_pierdut%C4%83#Scena_VIII"&gt;hâc&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Nu știu de unde să încep să caut date cât de cât obiective despre candidații la președinție. Dacă aveți sugestii, vă rog să lăsați un mesaj!&lt;/p&gt;
&lt;p&gt;În lipsa acestora, am decis să analizez partidele cu care aceștia sunt afiliați: am folosit date despre voturi ale partidelor Camerei Deputaților &lt;a href="https://parlament.openpolitics.ro/export/"&gt;pe Parlament Transparent&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Prin aceste date, am vrut să văd cum diferă partidele și cât de mult.
Putem obține astfel o analiză ce ia în considerare voturile efectuate, și nu propaganda electorală.&lt;/p&gt;
&lt;p&gt;Nu cred că această analiză e absolut obiectivă, deoarece unele partide ar putea vota pentru imagine când ar ști că votul lor nu ar avea efect. De asemenea, un partid se comportă într-un fel când e la putere, și altfel când e în opoziție.&lt;/p&gt;
&lt;p&gt;Constat că lipsesc datele grupării "PRO Europa", ceea ce înseamnă că datele despre apartenență sunt mai vechi. Nu am ajuns să le actualizez. Oricum, cu excepția dlui. &lt;a href="http://www.cdep.ro/pls/parlam/structura2015.mp?idm=19&amp;amp;cam=2&amp;amp;leg=2016"&gt;Balint Liviu&lt;/a&gt;, care a fost și prin PMP, ceilalți din PRO Europa au fost doar în PSD sau ALDE.&lt;/p&gt;
&lt;p&gt;Datele din Senat sunt disponibile pe &lt;a href="https://www.senat.ro/Voturiplen.aspx"&gt;site-ul Senatului&lt;/a&gt;, dar nu le-a aranjat nimeni (încă?) pentru a le putea procesa cu ușurință. Poate o să le aranjez eu mai încolo, folosind un scraper.&lt;/p&gt;
&lt;p&gt;Vă invit să îmi analizați această analiză și să-mi ziceți ce idei mai aveți. Sper să vă folosească aceste date pentru a decide și a vota!&lt;/p&gt;
&lt;p&gt;Notă: Această analiză e disponibilă și &lt;a href="https://github.com/danuker/Explorations/blob/master/parlament/Analiz%C4%83%20voturi%20Camera%20Deputa%C8%9Bilor.ipynb"&gt;aici, în format original Jupyter Notebook (Python).&lt;/a&gt;&lt;/p&gt;
&lt;h1 id="incarcare-date"&gt;&lt;a class="toclink" href="#incarcare-date"&gt;Încărcare date&lt;/a&gt;&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="n"&gt;matplotlib&lt;/span&gt; &lt;span class="n"&gt;inline&lt;/span&gt;

&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;pandas&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nn"&gt;pd&lt;/span&gt;
&lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;display&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;max_rows&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;

&lt;span class="c1"&gt;# Date obtinute de la Parlament Transparent, Popescu, Marina și Chiru, Mihail.&lt;/span&gt;
&lt;span class="c1"&gt;# https://parlament.openpolitics.ro/export/&lt;/span&gt;
&lt;span class="c1"&gt;# Datele pot fi reutilizate sub licență CC-BY-SA-4.0 sau CC-BY-SA-3.0-RO&lt;/span&gt;
&lt;span class="c1"&gt;# Datele se refera doar la Camera Deputatilor (nu si Senat).&lt;/span&gt;

&lt;span class="err"&gt;!&lt;/span&gt;&lt;span class="n"&gt;wget&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;nc&lt;/span&gt; &lt;span class="n"&gt;https&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;parlament&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;openpolitics&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ro&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;export&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;membri_grupuri&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;csv&lt;/span&gt;
&lt;span class="err"&gt;!&lt;/span&gt;&lt;span class="n"&gt;wget&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;nc&lt;/span&gt; &lt;span class="n"&gt;https&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;parlament&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;openpolitics&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ro&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;export&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;voturi&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;csv&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;File ‘membri_grupuri.csv’ already there; not retrieving.

File ‘voturi.csv’ already there; not retrieving.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c1"&gt;# Ordonare obiectivă: putere (PSD) -&amp;gt; opoziție (partide nesimilare cu PSD)&lt;/span&gt;
&lt;span class="n"&gt;coloane_partide&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'PSD'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'ALDE'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Minorități'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'UDMR'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Neafiliați'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'PNL'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'PMP'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'USR'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;descriere_partide&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="s1"&gt;'Grupul parlamentar al Partidului Social Democrat'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'Grupul parlamentar ALDE (Alianţa liberalilor şi democraţilor)'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'Grupul parlamentar al minorităţilor naţionale'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'Grupul parlamentar al Uniunii Democrate Maghiare din România'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'Deputati neafiliati'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'Grupul parlamentar al Partidului Naţional Liberal'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'Grupul parlamentar al Partidului Mişcarea Populară'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'Grupul parlamentar al Uniunii Salvaţi România'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;membri&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;read_csv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'membri_grupuri.csv'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;partid&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;abrev&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;zip&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;descriere_partide&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;coloane_partide&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;membri&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;membri&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;partid&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;abrev&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;voturi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;read_csv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'voturi.csv'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;voturi_cu_partide&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;voturi&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;merge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;membri&lt;/span&gt;&lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="s1"&gt;'nume'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'partid'&lt;/span&gt;&lt;span class="p"&gt;]])&lt;/span&gt;
&lt;span class="n"&gt;voturi_cu_partide&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'partid'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;fillna&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'niciunul curent'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;inplace&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;voturi_cu_partide&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div&gt;
&lt;style scoped=""&gt;
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
&lt;/style&gt;
&lt;table class="table-striped table"&gt;
&lt;thead&gt;
&lt;tr style="text-align: right;"&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;data&lt;/th&gt;
&lt;th&gt;cod cdep&lt;/th&gt;
&lt;th&gt;nume&lt;/th&gt;
&lt;th&gt;vot&lt;/th&gt;
&lt;th&gt;vot grup&lt;/th&gt;
&lt;th&gt;partid&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;0&lt;/th&gt;
&lt;td&gt;2017-02-14&lt;/td&gt;
&lt;td&gt;16105&lt;/td&gt;
&lt;td&gt;Antoneta Ioniţă&lt;/td&gt;
&lt;td&gt;da&lt;/td&gt;
&lt;td&gt;da&lt;/td&gt;
&lt;td&gt;PNL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;1&lt;/th&gt;
&lt;td&gt;2017-02-14&lt;/td&gt;
&lt;td&gt;16106&lt;/td&gt;
&lt;td&gt;Antoneta Ioniţă&lt;/td&gt;
&lt;td&gt;da&lt;/td&gt;
&lt;td&gt;da&lt;/td&gt;
&lt;td&gt;PNL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;2&lt;/th&gt;
&lt;td&gt;2017-02-14&lt;/td&gt;
&lt;td&gt;16107&lt;/td&gt;
&lt;td&gt;Antoneta Ioniţă&lt;/td&gt;
&lt;td&gt;da&lt;/td&gt;
&lt;td&gt;da&lt;/td&gt;
&lt;td&gt;PNL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;3&lt;/th&gt;
&lt;td&gt;2017-02-14&lt;/td&gt;
&lt;td&gt;16108&lt;/td&gt;
&lt;td&gt;Antoneta Ioniţă&lt;/td&gt;
&lt;td&gt;nu&lt;/td&gt;
&lt;td&gt;nu&lt;/td&gt;
&lt;td&gt;PNL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;4&lt;/th&gt;
&lt;td&gt;2017-02-14&lt;/td&gt;
&lt;td&gt;16109&lt;/td&gt;
&lt;td&gt;Antoneta Ioniţă&lt;/td&gt;
&lt;td&gt;da&lt;/td&gt;
&lt;td&gt;da&lt;/td&gt;
&lt;td&gt;PNL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;...&lt;/th&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;415760&lt;/th&gt;
&lt;td&gt;2019-10-22&lt;/td&gt;
&lt;td&gt;22897&lt;/td&gt;
&lt;td&gt;Andrian Ampleev&lt;/td&gt;
&lt;td&gt;da&lt;/td&gt;
&lt;td&gt;da&lt;/td&gt;
&lt;td&gt;Minorități&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;415761&lt;/th&gt;
&lt;td&gt;2019-10-22&lt;/td&gt;
&lt;td&gt;22898&lt;/td&gt;
&lt;td&gt;Andrian Ampleev&lt;/td&gt;
&lt;td&gt;da&lt;/td&gt;
&lt;td&gt;da&lt;/td&gt;
&lt;td&gt;Minorități&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;415762&lt;/th&gt;
&lt;td&gt;2019-10-22&lt;/td&gt;
&lt;td&gt;22899&lt;/td&gt;
&lt;td&gt;Andrian Ampleev&lt;/td&gt;
&lt;td&gt;da&lt;/td&gt;
&lt;td&gt;da&lt;/td&gt;
&lt;td&gt;Minorități&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;415763&lt;/th&gt;
&lt;td&gt;2019-10-22&lt;/td&gt;
&lt;td&gt;22900&lt;/td&gt;
&lt;td&gt;Andrian Ampleev&lt;/td&gt;
&lt;td&gt;da&lt;/td&gt;
&lt;td&gt;da&lt;/td&gt;
&lt;td&gt;Minorități&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;415764&lt;/th&gt;
&lt;td&gt;2019-10-22&lt;/td&gt;
&lt;td&gt;22901&lt;/td&gt;
&lt;td&gt;Andrian Ampleev&lt;/td&gt;
&lt;td&gt;da&lt;/td&gt;
&lt;td&gt;da&lt;/td&gt;
&lt;td&gt;Minorități&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;415765 rows × 6 columns&lt;/p&gt;
&lt;/div&gt;
&lt;h1 id="top-partide-dupa-voturi-rebele"&gt;&lt;a class="toclink" href="#top-partide-dupa-voturi-rebele"&gt;Top partide după voturi rebele&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Această analiză a fost făcută deja aici, până la 5 iulie 2018: &lt;a href="https://parlament.openpolitics.ro/statistici/vot-rebel"&gt;https://parlament.openpolitics.ro/statistici/vot-rebel&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Observ că rata "rebeliunii" e destul de mică, și nu consider că ar avea vreo influență în votul meu. Decid să nu caut detalii aici. Dar dacă îmi trimiteți cod pe tavă și mă rugați să îl includ, o să o fac.&lt;/p&gt;
&lt;h1 id="procesare-voturi-in-functie-de-partide"&gt;&lt;a class="toclink" href="#procesare-voturi-in-functie-de-partide"&gt;Procesare: voturi în funcție de partide&lt;/a&gt;&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;grupate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;voturi_cu_partide&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;groupby&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="s1"&gt;'cod cdep'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'vot'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'partid'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;as_index&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sort_values&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="s1"&gt;'cod cdep'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'vot'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'partid'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="n"&gt;grupate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;grupate&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pivot_table&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'cod cdep'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;columns&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'partid'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'vot'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;values&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'data'&lt;/span&gt;&lt;span class="p"&gt;])[&lt;/span&gt;&lt;span class="s1"&gt;'data'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;fillna&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;grupate&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div&gt;
&lt;style scoped=""&gt;
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead tr th {
        text-align: left;
    }

    .dataframe thead tr:last-of-type th {
        text-align: right;
    }
&lt;/style&gt;
&lt;table class="table-striped dataframe table"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;partid&lt;/th&gt;
&lt;th colspan="4" halign="left"&gt;ALDE&lt;/th&gt;
&lt;th colspan="4" halign="left"&gt;Minorități&lt;/th&gt;
&lt;th colspan="2" halign="left"&gt;Neafiliați&lt;/th&gt;
&lt;th&gt;...&lt;/th&gt;
&lt;th colspan="2" halign="left"&gt;PSD&lt;/th&gt;
&lt;th colspan="4" halign="left"&gt;UDMR&lt;/th&gt;
&lt;th colspan="4" halign="left"&gt;USR&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;vot&lt;/th&gt;
&lt;th&gt;abținere&lt;/th&gt;
&lt;th&gt;da&lt;/th&gt;
&lt;th&gt;nu&lt;/th&gt;
&lt;th&gt;—&lt;/th&gt;
&lt;th&gt;abținere&lt;/th&gt;
&lt;th&gt;da&lt;/th&gt;
&lt;th&gt;nu&lt;/th&gt;
&lt;th&gt;—&lt;/th&gt;
&lt;th&gt;abținere&lt;/th&gt;
&lt;th&gt;da&lt;/th&gt;
&lt;th&gt;...&lt;/th&gt;
&lt;th&gt;nu&lt;/th&gt;
&lt;th&gt;—&lt;/th&gt;
&lt;th&gt;abținere&lt;/th&gt;
&lt;th&gt;da&lt;/th&gt;
&lt;th&gt;nu&lt;/th&gt;
&lt;th&gt;—&lt;/th&gt;
&lt;th&gt;abținere&lt;/th&gt;
&lt;th&gt;da&lt;/th&gt;
&lt;th&gt;nu&lt;/th&gt;
&lt;th&gt;—&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;cod cdep&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;16105&lt;/th&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;13.0&lt;/td&gt;
&lt;td&gt;2.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;14.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;20.0&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;4.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;21.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;23.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;1.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;16106&lt;/th&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;13.0&lt;/td&gt;
&lt;td&gt;2.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;1.0&lt;/td&gt;
&lt;td&gt;13.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;20.0&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;4.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;21.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;23.0&lt;/td&gt;
&lt;td&gt;1.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;16107&lt;/th&gt;
&lt;td&gt;1.0&lt;/td&gt;
&lt;td&gt;14.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;14.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;20.0&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;21.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;24.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;16108&lt;/th&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;10.0&lt;/td&gt;
&lt;td&gt;5.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;13.0&lt;/td&gt;
&lt;td&gt;1.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;20.0&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;4.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;21.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;24.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;16109&lt;/th&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;15.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;14.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;20.0&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;2.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;21.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;24.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;...&lt;/th&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;22897&lt;/th&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;14.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;12.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;12.0&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;16.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;25.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;22898&lt;/th&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;15.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;13.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;1.0&lt;/td&gt;
&lt;td&gt;11.0&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;17.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;25.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;22899&lt;/th&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;14.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;1.0&lt;/td&gt;
&lt;td&gt;13.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;12.0&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;17.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;25.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;22900&lt;/th&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;15.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;14.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;12.0&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;17.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;25.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;22901&lt;/th&gt;
&lt;td&gt;9.0&lt;/td&gt;
&lt;td&gt;4.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;3.0&lt;/td&gt;
&lt;td&gt;11.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;9.0&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;1.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;16.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;25.0&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;1601 rows × 32 columns&lt;/p&gt;
&lt;/div&gt;
&lt;h1 id="subiecte-de-vot-top-abtineri"&gt;&lt;a class="toclink" href="#subiecte-de-vot-top-abtineri"&gt;Subiecte de vot: top abțineri&lt;/a&gt;&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;vot&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'abținere'&lt;/span&gt; &lt;span class="c1"&gt;# poți alege și: 'da', 'nu', '—'&lt;/span&gt;

&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;IPython.core.display&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;display&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;HTML&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;detalii_vot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cod_cdep&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;scor&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;display&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;HTML&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;a href=http://www.cdep.ro/pls/steno/evot2015.nominal?idv=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;cod_cdep&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;gt;Vot &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;cod_cdep&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;/a&amp;gt;: scor &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;scor&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;.3f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; "&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;serie_link_cdep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;serie&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;nr_top&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;top&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;serie&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sort_values&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ascending&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;head&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nr_top&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;cod&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;scor&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;zip&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;top&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;top&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;detalii_vot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cod&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;scor&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;serie_link_cdep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;grupate&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;loc&lt;/span&gt;&lt;span class="p"&gt;[:,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;slice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;vot&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;axis&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22468"&gt;Vot 22468&lt;/a&gt;: scor 174.000&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22764"&gt;Vot 22764&lt;/a&gt;: scor 105.000&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20644"&gt;Vot 20644&lt;/a&gt;: scor 104.000&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20642"&gt;Vot 20642&lt;/a&gt;: scor 101.000&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22380"&gt;Vot 22380&lt;/a&gt;: scor 101.000&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22078"&gt;Vot 22078&lt;/a&gt;: scor 95.000&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16287"&gt;Vot 16287&lt;/a&gt;: scor 94.000&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20524"&gt;Vot 20524&lt;/a&gt;: scor 94.000&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22732"&gt;Vot 22732&lt;/a&gt;: scor 94.000&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16539"&gt;Vot 16539&lt;/a&gt;: scor 93.000&lt;/p&gt;
&lt;h1 id="subiecte-de-vot-caracteristice-partidelor"&gt;&lt;a class="toclink" href="#subiecte-de-vot-caracteristice-partidelor"&gt;Subiecte de vot caracteristice partidelor&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Pentru fiecare partid, o să vedem top 10 subiecte de vot ce diferențiază acel partid de altele.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;normalize&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;vot_relativ&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;grupate&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;copy&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;sume&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;coloane_partide&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;total_voturi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;vot_relativ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;axis&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;vot_relativ&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;loc&lt;/span&gt;&lt;span class="p"&gt;[:,&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;vot_relativ&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;loc&lt;/span&gt;&lt;span class="p"&gt;[:,&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;divide&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;total_voturi&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;axis&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;values&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;vot_relativ&lt;/span&gt;

&lt;span class="c1"&gt;# Pondere de 1 pentru partidul în vedere, și -1 pentru medie&lt;/span&gt;
&lt;span class="n"&gt;normalizat&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;normalize&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="n"&gt;medie&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;normalizat&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;axis&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;level&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;partid&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;coloane_partide&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;"Voturi specifice &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;partid&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;:"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;serie_link_cdep&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;normalizat&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;partid&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;medie&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;axis&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;0.875&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id="cititi-partea-a-2-a-unde-comentez-cele-mai-specifice-voturi-ale-partidelor"&gt;&lt;a class="toclink" href="#cititi-partea-a-2-a-unde-comentez-cele-mai-specifice-voturi-ale-partidelor"&gt;Citiți &lt;a href="analiza-partide-partea-2.html"&gt;partea a 2-a, unde comentez cele mai specifice voturi ale partidelor&lt;/a&gt;!&lt;/a&gt;&lt;/h3&gt;
&lt;h2 id="voturi-specifice-psd"&gt;&lt;a class="toclink" href="#voturi-specifice-psd"&gt;Voturi specifice PSD:&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22732"&gt;Vot 22732&lt;/a&gt;: scor 0.868&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22764"&gt;Vot 22764&lt;/a&gt;: scor 0.865&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22079"&gt;Vot 22079&lt;/a&gt;: scor 0.825&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20403"&gt;Vot 20403&lt;/a&gt;: scor 0.750&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22463"&gt;Vot 22463&lt;/a&gt;: scor 0.741&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20071"&gt;Vot 20071&lt;/a&gt;: scor 0.741&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22460"&gt;Vot 22460&lt;/a&gt;: scor 0.734&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22586"&gt;Vot 22586&lt;/a&gt;: scor 0.728&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22587"&gt;Vot 22587&lt;/a&gt;: scor 0.725&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20717"&gt;Vot 20717&lt;/a&gt;: scor 0.688&lt;/p&gt;
&lt;h2 id="voturi-specifice-alde"&gt;&lt;a class="toclink" href="#voturi-specifice-alde"&gt;Voturi specifice ALDE:&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22079"&gt;Vot 22079&lt;/a&gt;: scor 0.835&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20403"&gt;Vot 20403&lt;/a&gt;: scor 0.770&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20402"&gt;Vot 20402&lt;/a&gt;: scor 0.756&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22586"&gt;Vot 22586&lt;/a&gt;: scor 0.748&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22460"&gt;Vot 22460&lt;/a&gt;: scor 0.744&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22463"&gt;Vot 22463&lt;/a&gt;: scor 0.741&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20342"&gt;Vot 20342&lt;/a&gt;: scor 0.698&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22362"&gt;Vot 22362&lt;/a&gt;: scor 0.686&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22587"&gt;Vot 22587&lt;/a&gt;: scor 0.680&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20071"&gt;Vot 20071&lt;/a&gt;: scor 0.662&lt;/p&gt;
&lt;h2 id="voturi-specifice-minoritati"&gt;&lt;a class="toclink" href="#voturi-specifice-minoritati"&gt;Voturi specifice Minorități:&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16498"&gt;Vot 16498&lt;/a&gt;: scor 1.000&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16894"&gt;Vot 16894&lt;/a&gt;: scor 0.972&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16887"&gt;Vot 16887&lt;/a&gt;: scor 0.871&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16490"&gt;Vot 16490&lt;/a&gt;: scor 0.852&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16696"&gt;Vot 16696&lt;/a&gt;: scor 0.740&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20402"&gt;Vot 20402&lt;/a&gt;: scor 0.714&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16694"&gt;Vot 16694&lt;/a&gt;: scor 0.700&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20403"&gt;Vot 20403&lt;/a&gt;: scor 0.636&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=21028"&gt;Vot 21028&lt;/a&gt;: scor 0.615&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20417"&gt;Vot 20417&lt;/a&gt;: scor 0.612&lt;/p&gt;
&lt;h2 id="voturi-specifice-udmr"&gt;&lt;a class="toclink" href="#voturi-specifice-udmr"&gt;Voturi specifice UDMR:&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22871"&gt;Vot 22871&lt;/a&gt;: scor 1.000&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20136"&gt;Vot 20136&lt;/a&gt;: scor 1.000&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20343"&gt;Vot 20343&lt;/a&gt;: scor 1.000&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22472"&gt;Vot 22472&lt;/a&gt;: scor 1.000&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19094"&gt;Vot 19094&lt;/a&gt;: scor 1.000&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19235"&gt;Vot 19235&lt;/a&gt;: scor 1.000&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22590"&gt;Vot 22590&lt;/a&gt;: scor 0.996&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17289"&gt;Vot 17289&lt;/a&gt;: scor 0.994&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19452"&gt;Vot 19452&lt;/a&gt;: scor 0.992&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18786"&gt;Vot 18786&lt;/a&gt;: scor 0.988&lt;/p&gt;
&lt;h2 id="voturi-specifice-neafiliati"&gt;&lt;a class="toclink" href="#voturi-specifice-neafiliati"&gt;Voturi specifice Neafiliați:&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22291"&gt;Vot 22291&lt;/a&gt;: scor 0.857&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22300"&gt;Vot 22300&lt;/a&gt;: scor 0.857&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22299"&gt;Vot 22299&lt;/a&gt;: scor 0.857&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22162"&gt;Vot 22162&lt;/a&gt;: scor 0.842&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22307"&gt;Vot 22307&lt;/a&gt;: scor 0.833&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22078"&gt;Vot 22078&lt;/a&gt;: scor 0.833&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22872"&gt;Vot 22872&lt;/a&gt;: scor 0.828&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22151"&gt;Vot 22151&lt;/a&gt;: scor 0.824&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22158"&gt;Vot 22158&lt;/a&gt;: scor 0.791&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22529"&gt;Vot 22529&lt;/a&gt;: scor 0.777&lt;/p&gt;
&lt;h2 id="voturi-specifice-pnl"&gt;&lt;a class="toclink" href="#voturi-specifice-pnl"&gt;Voturi specifice PNL:&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19318"&gt;Vot 19318&lt;/a&gt;: scor 0.981&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20722"&gt;Vot 20722&lt;/a&gt;: scor 0.975&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20998"&gt;Vot 20998&lt;/a&gt;: scor 0.973&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18628"&gt;Vot 18628&lt;/a&gt;: scor 0.973&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18840"&gt;Vot 18840&lt;/a&gt;: scor 0.973&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=17367"&gt;Vot 17367&lt;/a&gt;: scor 0.964&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22528"&gt;Vot 22528&lt;/a&gt;: scor 0.962&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=21116"&gt;Vot 21116&lt;/a&gt;: scor 0.961&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20598"&gt;Vot 20598&lt;/a&gt;: scor 0.958&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=21032"&gt;Vot 21032&lt;/a&gt;: scor 0.957&lt;/p&gt;
&lt;h2 id="voturi-specifice-pmp"&gt;&lt;a class="toclink" href="#voturi-specifice-pmp"&gt;Voturi specifice PMP:&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=18586"&gt;Vot 18586&lt;/a&gt;: scor 0.999&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19235"&gt;Vot 19235&lt;/a&gt;: scor 0.998&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19232"&gt;Vot 19232&lt;/a&gt;: scor 0.998&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22896"&gt;Vot 22896&lt;/a&gt;: scor 0.998&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22240"&gt;Vot 22240&lt;/a&gt;: scor 0.997&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16346"&gt;Vot 16346&lt;/a&gt;: scor 0.996&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16297"&gt;Vot 16297&lt;/a&gt;: scor 0.996&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20318"&gt;Vot 20318&lt;/a&gt;: scor 0.994&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16605"&gt;Vot 16605&lt;/a&gt;: scor 0.994&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=19412"&gt;Vot 19412&lt;/a&gt;: scor 0.994&lt;/p&gt;
&lt;h2 id="voturi-specifice-usr"&gt;&lt;a class="toclink" href="#voturi-specifice-usr"&gt;Voturi specifice USR:&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22277"&gt;Vot 22277&lt;/a&gt;: scor 1.000&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22275"&gt;Vot 22275&lt;/a&gt;: scor 1.000&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22896"&gt;Vot 22896&lt;/a&gt;: scor 1.000&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20128"&gt;Vot 20128&lt;/a&gt;: scor 0.998&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20131"&gt;Vot 20131&lt;/a&gt;: scor 0.998&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16569"&gt;Vot 16569&lt;/a&gt;: scor 0.997&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=22194"&gt;Vot 22194&lt;/a&gt;: scor 0.991&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=20650"&gt;Vot 20650&lt;/a&gt;: scor 0.990&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16788"&gt;Vot 16788&lt;/a&gt;: scor 0.990&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cdep.ro/pls/steno/evot2015.nominal?idv=16854"&gt;Vot 16854&lt;/a&gt;: scor 0.989&lt;/p&gt;
&lt;h3 id="cititi-partea-a-2-a-unde-comentez-cele-mai-specifice-voturi-ale-partidelor_1"&gt;&lt;a class="toclink" href="#cititi-partea-a-2-a-unde-comentez-cele-mai-specifice-voturi-ale-partidelor_1"&gt;Citiți &lt;a href="analiza-partide-partea-2.html"&gt;partea a 2-a, unde comentez cele mai specifice voturi ale partidelor&lt;/a&gt;!&lt;/a&gt;&lt;/h3&gt;
&lt;h1 id="similaritate-intre-voturile-partidelor"&gt;&lt;a class="toclink" href="#similaritate-intre-voturile-partidelor"&gt;Similaritate între voturile partidelor&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Ce partide votează similar pentru aceleași subiecte?&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;diferente&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p2&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;vot_relativ&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;normalize&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;abs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;vot_relativ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;p1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;vot_relativ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;p2&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;axis&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;sim&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p2&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;diferente&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="n"&gt;sim_mat&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DataFrame&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;coloane_partide&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;columns&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;coloane_partide&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;p1&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;coloane_partide&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;p2&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;coloane_partide&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;sim_mat&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;loc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;p1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p2&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
            &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sim&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="n"&gt;sim_mat&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;loc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;p1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p2&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;
            &lt;span class="n"&gt;sim_mat&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;loc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;p2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;matplotlib.pyplot&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nn"&gt;plt&lt;/span&gt;
&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rcParams&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'figure.figsize'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;seaborn&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nn"&gt;sns&lt;/span&gt;
&lt;span class="n"&gt;sns&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;set&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;ax&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sns&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;heatmap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sim_mat&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;square&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# https://stackoverflow.com/questions/56942670/matplotlib-seaborn-first-and-last-row-cut-in-half-of-heatmap-plot&lt;/span&gt;
&lt;span class="n"&gt;bottom&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;top&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ax&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get_ylim&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;ax&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;set_ylim&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bottom&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;top&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;ax&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;set_title&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Similaritate între voturile partidelor'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;img alt="png" class="img-fluid" src="images/sim-partide.png"/&gt;&lt;/p&gt;
&lt;h1 id="ce-inseamna-toate-acestea"&gt;&lt;a class="toclink" href="#ce-inseamna-toate-acestea"&gt;Ce înseamnă toate acestea?&lt;/a&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Partidele sunt destul de similare (de exemplu, PSD și USR au votat similar la aprox. 70% din voturi).&lt;/li&gt;
&lt;li&gt;Avem de unde alege (există diferențe importante în acele 30% rămase).&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="cititi-si-partea-a-2-a-unde-comentez-cele-mai-specifice-voturi-ale-partidelor"&gt;&lt;a class="toclink" href="#cititi-si-partea-a-2-a-unde-comentez-cele-mai-specifice-voturi-ale-partidelor"&gt;Citiți și &lt;a href="analiza-partide-partea-2.html"&gt;partea a 2-a, unde comentez cele mai specifice voturi ale partidelor&lt;/a&gt;!&lt;/a&gt;&lt;/h4&gt;</content><category term="Română"></category><category term="Politics"></category><category term="Economy"></category><category term="Romania"></category></entry><entry><title>Review of Cryptocurrencies</title><link href="https://danuker.go.ro/review-of-cryptocurrencies.html" rel="alternate"></link><published>2019-09-02T00:00:00+03:00</published><updated>2019-09-02T00:00:00+03:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2019-09-02:/review-of-cryptocurrencies.html</id><summary type="html">&lt;p&gt;Hello again, dear reader!&lt;/p&gt;
&lt;p&gt;As I promised you &lt;a href="intro-to-cryptocurrencies.html"&gt;last post&lt;/a&gt;, I have reviewed some cryptocurrencies, and I will publish my fact-based heavily-biased opinions on them. Take this post with a grain of salt, and mind that investment (or speculation) is risky. However, I hope you find it useful.&lt;/p&gt;
&lt;h3 id="bitcoin"&gt;&lt;a class="toclink" href="#bitcoin"&gt;Bitcoin&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://bitcoin.org"&gt;Bitcoin …&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;p&gt;Hello again, dear reader!&lt;/p&gt;
&lt;p&gt;As I promised you &lt;a href="intro-to-cryptocurrencies.html"&gt;last post&lt;/a&gt;, I have reviewed some cryptocurrencies, and I will publish my fact-based heavily-biased opinions on them. Take this post with a grain of salt, and mind that investment (or speculation) is risky. However, I hope you find it useful.&lt;/p&gt;
&lt;h3 id="bitcoin"&gt;&lt;a class="toclink" href="#bitcoin"&gt;Bitcoin&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://bitcoin.org"&gt;Bitcoin&lt;/a&gt; is the first of decentralized cryptocurrencies. It still has the most users &lt;a href="https://bitinfocharts.com/"&gt;(most addresses with &amp;gt;$1 USD, most Reddit subscribers, most GitHub stars)&lt;/a&gt;, and since &lt;a href="https://en.wikipedia.org/wiki/Metcalfe%27s_law"&gt;it lets you connect with more people&lt;/a&gt;, it provides more value than the other networks.&lt;/p&gt;
&lt;p&gt;Bitcoin's current supply is around 17.9 million BTC, with a mathematically-enforced eventual maximum of 21 million (but there may be hard forks of the network, as happened several times already).&lt;/p&gt;
&lt;p&gt;However, the &lt;a href="https://bitinfocharts.com/comparison/transactionfees-btc-bch-eth-xmr-zec.html#log&amp;amp;2y"&gt;transaction fees&lt;/a&gt; are high, at time of writing being nearly $1 USD. This is more expensive than many bank tranfers.&lt;/p&gt;
&lt;p&gt;Therefore, the currency is not as useful as a payment system anymore, but as a &lt;a href="https://www.newsbtc.com/2019/08/05/bitcoin-store-of-value-narrative-turning-toward-safe-haven-asset/"&gt;"store of value" or "safe haven"&lt;/a&gt; (hard to transact, but hopefully still of resilient value, like gold, silver, petrol and real estate). This discourages payments but encourages speculation (however, that is not necessarily a bad thing, if you have the stomach).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;@SquawkCNBC&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.newsbtc.com/2019/08/05/bitcoin-store-of-value-narrative-turning-toward-safe-haven-asset/"&gt;"Humanity has now created a non sovereign, highly secure mechanism to store value that can exist anywhere that the internet exists," says @jerallaire on &lt;strong&gt;#btc surge amid #TradeWar&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The reason for the fees is in part, its popularity, and in part, the limited transaction processing speed. Bitcoin &lt;a href="https://bitinfocharts.com/comparison/bitcoin-size.html"&gt;limits blocks to 1MB&lt;/a&gt; (though using &lt;a href="https://en.wikipedia.org/wiki/SegWit"&gt;SegWit&lt;/a&gt; one can do more transactions, at the expense of having to withdraw them later in another transaction. SegWit transactions are not on the blockchain; it's complicated.).&lt;/p&gt;
&lt;p&gt;A tyical blockchain transaction takes about &lt;a href="https://bitcoinfees.earn.com/"&gt;244 bytes&lt;/a&gt;, so a 1-MB block can only hold about 4100 of them. Also, a block is targeted to be generated every 10 minutes, which means you can only get 410 transactions per minute. You can see why this is a problem.&lt;/p&gt;
&lt;p&gt;In spite of this limitation, the blockchain size has surpassed 277GB, storing transaction history since 2009-01-09. The size is important for judging how expensive it would be to host a mining or non-mining (just validation) node yourself.&lt;/p&gt;
&lt;p&gt;Some free-software wallets (free-software are the only ones deserving review) are the &lt;a href="https://bitcoin.org/en/bitcoin-core/"&gt;official one&lt;/a&gt;, and &lt;a href="https://electrum.org/"&gt;Electrum&lt;/a&gt;.&lt;/p&gt;
&lt;table class="table-striped table"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Trait&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Market Cap&lt;/td&gt;
&lt;td&gt;$171 B&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bitinfocharts.com/"&gt;BitInfoCharts&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fee per transaction&lt;/td&gt;
&lt;td&gt;$0.94&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bitinfocharts.com/comparison/transactionfees-btc-bch-eth-xmr-zec.html#log&amp;amp;2y"&gt;BitInfoCharts chart&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Transactions per day&lt;/td&gt;
&lt;td&gt;336k&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bitinfocharts.com/"&gt;BitInfoCharts&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Blockchain Size&lt;/td&gt;
&lt;td&gt;277.12 GB&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bitinfocharts.com/"&gt;BitInfoCharts&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="bitcoin-cash"&gt;&lt;a class="toclink" href="#bitcoin-cash"&gt;Bitcoin Cash&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.bitcoincash.org/"&gt;Bitcoin Cash&lt;/a&gt; is a fork of Bitcoin that decided to increase the block size limit. This will hopefully drive transaction prices lower, which would lead to easier and more transactions. But this comes at a cost of increased workload for the miners - which might lead to centralization and relatively less security compared to Bitcoin.&lt;/p&gt;
&lt;p&gt;As opposed to Bitcoin, which aims to be a "store of value", Bitcoin Cash has the main goal of being "cash", or a means of payment, not just of speculation. Bitcoin Cash argues it is staying true to the original &lt;a href="https://bitcoin.org/bitcoin.pdf"&gt;Bitcoin whitepaper - "Bitcoin: A Peer-to-Peer Electronic Cash System"&lt;/a&gt;".&lt;/p&gt;
&lt;p&gt;Indeed, the transactions are much cheaper at least for now (with much fewer transactions than Bitcoin, perhaps because of lower popularity), at less than $0.01 (1 cent).&lt;/p&gt;
&lt;p&gt;Transactions being so cheap led to the development of on-blockchain chat protocols, like Twitter. These protocols are hard to censor, unlike Twitter. &lt;a href="https://memo.cash/"&gt;Memo.cash&lt;/a&gt; is an example (but note that the website itself is censorable, as any centralized service; do not place any meaningful money on a website that has your private key).&lt;/p&gt;
&lt;p&gt;Bitcoin Cash's supply is meant to be the same as Bitcoin's.&lt;/p&gt;
&lt;p&gt;A free-software wallet I could find is &lt;a href="https://electroncash.org/"&gt;Electron Cash&lt;/a&gt;, which is forked from Electrum for Bitcoin, and it also supports Android (useful for a "cash" cryptocurrency).&lt;/p&gt;
&lt;table class="table-striped table"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Trait&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Market Cap&lt;/td&gt;
&lt;td&gt;$4.96 B&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bitinfocharts.com/"&gt;BitInfoCharts&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fee per transaction&lt;/td&gt;
&lt;td&gt;$0.003&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bitinfocharts.com/comparison/transactionfees-btc-bch-eth-xmr-zec.html#log&amp;amp;2y"&gt;BitInfoCharts chart&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Transactions per day&lt;/td&gt;
&lt;td&gt;38k&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bitinfocharts.com/"&gt;BitInfoCharts&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Blockchain Size&lt;/td&gt;
&lt;td&gt;170.56 GB&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bitinfocharts.com/"&gt;BitInfoCharts&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="ethereum"&gt;&lt;a class="toclink" href="#ethereum"&gt;Ethereum&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.ethereum.org/"&gt;Ethereum&lt;/a&gt; is more of a developer-friendly cryptocurrency. Its main feature is a flexible "virtual machine" that runs on miners' computers, allowing you to program applications - called "DApps" for "distributed apps".&lt;/p&gt;
&lt;p&gt;Among my favorites are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.cryptokitties.co/"&gt;CryptoKitties&lt;/a&gt;, which lets you trade collectible kitties on the blockchain as non-fungible tokens&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aragon.org/"&gt;Aragon&lt;/a&gt;, which lets you create and manage "decentralized organizations"&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.augur.net/"&gt;Augur&lt;/a&gt;, which lets you &lt;a href="https://predictions.global/"&gt;bet on future events or values&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Many others can be seen on &lt;a href="https://www.stateofthedapps.com/rankings"&gt;StateOfTheDApps&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Of course, this flexible programming allows for complicated software - which allows for bugs. There was an error in a crowdfunding app called "The DAO", &lt;a href="https://www.coindesk.com/understanding-dao-hack-journalists"&gt;which allowed draining funds&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ethereum has plenty of transactions, surpassing even Bitcoin. Its blockchain size is 428 GB, in its shorter history since 2015-07-30. As a consequence, an Ethereum node or miner needs to be more beefy.&lt;/p&gt;
&lt;p&gt;Transaction fees are around $0.12, which is still not cheap. Ethereum includes processing power into the transaction cost ("gas"), not just the storage space like Bitcoin. I think that is being more fair.&lt;/p&gt;
&lt;p&gt;As for its supply, I am not too knowledgeable about the algorithm that emits Ethereum, but it seems the original supply &lt;a href="https://etherscan.io/stat/supply"&gt;still makes up 67% of it&lt;/a&gt;, so the inflation was not too bad (50% since July 2015, roughly 11% compounded per year; comparable with Romania's 11.5% inflation of the &lt;a href="https://bnr.ro/Masa-monetara-M3-si-contrapartida-acesteia-5171.aspx"&gt;M2 money supply in 2017&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Still, if this fiat-currency-level inflation were to last, what would be the point of holding Ethereum?&lt;/p&gt;
&lt;p&gt;That is the point! Ethereum wants you to use it and develop DApps, not just hold it forever. They do not promise any supply cap à la Bitcoin, and the inflation is quite high.&lt;/p&gt;
&lt;p&gt;Ethereum is investigating sharding - splitting the blockchain in 100, and having nodes only keep 1 part of it. &lt;a href="https://github.com/ethereum/wiki/wiki/Sharding-roadmap"&gt;See here&lt;/a&gt;. But this is hard, not only for Bitcoin &lt;a href="https://petertodd.org/2015/why-scaling-bitcoin-with-sharding-is-very-hard"&gt;as this article says&lt;/a&gt;, but for all cryptocurrencies.&lt;/p&gt;
&lt;table class="table-striped table"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Trait&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Market cap&lt;/td&gt;
&lt;td&gt;$18 B&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bitinfocharts.com/"&gt;BitInfoCharts&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fee per transaction&lt;/td&gt;
&lt;td&gt;$0.12&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bitinfocharts.com/comparison/transactionfees-btc-bch-eth-xmr-zec.html#log&amp;amp;2y"&gt;BitInfoCharts chart&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Transactions per day&lt;/td&gt;
&lt;td&gt;668 k&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bitinfocharts.com/"&gt;BitInfoCharts&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Blockchain Size&lt;/td&gt;
&lt;td&gt;428 GB&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bitinfocharts.com/"&gt;BitInfoCharts&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="monero-zcash"&gt;&lt;a class="toclink" href="#monero-zcash"&gt;Monero, ZCash&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;These coins have innovated in another direction: allowing for private, untraceable transactions. Coupled with techniques for anonymizing your network, they might offer immense financial anonymity (and freedom).&lt;/p&gt;
&lt;p&gt;One thing to mention is that these currencies are definitely not bug-free (and neither is any software, actually): ZCash fixed a &lt;a href="https://z.cash/blog/zcash-counterfeiting-vulnerability-successfully-remediated/"&gt;catastrophic vulnerability&lt;/a&gt; earlier this year; luckily, they did not see any traces of it being exploited.&lt;/p&gt;
&lt;p&gt;Why is financial anonymity important, aside from tax evasion (which I deem risky and foolish, by the way)?&lt;/p&gt;
&lt;h4 id="financial-anonymity"&gt;&lt;a class="toclink" href="#financial-anonymity"&gt;Financial anonymity&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Well, when citizens are transparent to the state, the state might be tempted to abuse that power. For example, if they see you are funding independent journalism, exposing the state's corrupt gears, they might freeze your accounts for some unrelated excuse, or they might persecute you.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Buckley_v._Valeo"&gt;Here&lt;/a&gt; is a very difficult decision the United States made, to reconcile their First Amendment (freedom of speech) with limiting political spending (in an election campaign). They found that limiting the spending also limits the &lt;em&gt;quantity of speech&lt;/em&gt;, and the spending limit was deemed unconstitutional.&lt;/p&gt;
&lt;p&gt;Another fun point I make personally: the implementation of a cryptocurrency (which is money, some say) only requires sending messages (which is speech).&lt;/p&gt;
&lt;p&gt;An even funner point: banks do the same with money in bank accounts - if you see past the fancy suits and grandiose buildings, it's all electronic messaging. &lt;a href="https://en.wikipedia.org/wiki/International_Payments_Framework"&gt;Here's one for instance.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A &lt;a href="https://democracyisforpeople.org/page.cfm?id=19"&gt;differring opinion&lt;/a&gt; is that "A system that allows corporations and the wealthiest among us to drown out the voices of others, [...] undermines the First Amendment’s core purpose – to foster and protect a flourishing marketplace of democratic ideas."&lt;/p&gt;
&lt;p&gt;This is a valid point, but there are technologies that can let you filter out the well-funded corporate "spam":&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/gorhill/uBlock"&gt;ad blockers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;critical thinking&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So, speech should be free, and money at least lets you speak louder, if it is not speech in itself.&lt;/p&gt;
&lt;p&gt;I think that is fair (as long as that speech is not blasted with a megaphone into my home, without my consent).&lt;/p&gt;
&lt;p&gt;This is why I am in support of Monero and ZCash, in principle. You become free to support anyone whatever they may do or say, without Big Brother watching.&lt;/p&gt;
&lt;p&gt;Just please don't sponsor terrorists (which are violent by definition)!&lt;/p&gt;
&lt;p&gt;In any case, these two currencies are a long way from drowning out other people's speech - their market cap and adoption is very small.&lt;/p&gt;
&lt;p&gt;Still, if these currencies get reliable enough, they would be the only form of electronic voting that I &lt;em&gt;might&lt;/em&gt; trust. &lt;a href="https://www.youtube.com/watch?v=w3_0x6oaDmI"&gt;See this YouTube video&lt;/a&gt; where Tom Scott explains why E-Voting is a bad idea - in essence, it's much easier to rig electronic elections.&lt;/p&gt;
&lt;p&gt;When you look at the &lt;code&gt;Transaction fee / Market cap&lt;/code&gt; ratio, Monero is the most expensive (2.72 UScents fee per billion USD market cap), while ZCash is the cheapest (0.014 cents/billion).&lt;/p&gt;
&lt;h4 id="monero"&gt;&lt;a class="toclink" href="#monero"&gt;&lt;a href="https://www.getmonero.org/"&gt;Monero&lt;/a&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;table class="table-striped table"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Trait&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Market cap&lt;/td&gt;
&lt;td&gt;$1.1 B&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bitinfocharts.com/monero/"&gt;BitInfoCharts on Monero&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fee per transaction&lt;/td&gt;
&lt;td&gt;$0.03&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bitinfocharts.com/monero/"&gt;BitInfoCharts on Monero&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Transactions per day&lt;/td&gt;
&lt;td&gt;5k&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bitinfocharts.com/monero/"&gt;BitInfoCharts on Monero&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Blockchain Size&lt;/td&gt;
&lt;td&gt;63.75 GB&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bitinfocharts.com/monero/"&gt;BitInfoCharts on Monero&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id="zcash"&gt;&lt;a class="toclink" href="#zcash"&gt;&lt;a href="https://z.cash/"&gt;ZCash&lt;/a&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;table class="table-striped table"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Trait&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Market cap&lt;/td&gt;
&lt;td&gt;$0.3 B&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bitinfocharts.com/zcash/"&gt;BitInfoCharts on ZCash&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fee per transaction&lt;/td&gt;
&lt;td&gt;$0.000043 USD (amazing!)&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bitinfocharts.com/zcash/"&gt;BitInfoCharts on ZCash&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Transactions per day&lt;/td&gt;
&lt;td&gt;3.5k&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bitinfocharts.com/zcash/"&gt;BitInfoCharts on ZCash&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Blockchain Size&lt;/td&gt;
&lt;td&gt;22.98 GB&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bitinfocharts.com/zcash/"&gt;BitInfoCharts on ZCash&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="stellar"&gt;&lt;a class="toclink" href="#stellar"&gt;Stellar&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.stellar.org/"&gt;Stellar&lt;/a&gt; looks interesting, but I haven't researched it enough yet. What I can say is that they use a &lt;a href="https://www.stellar.org/papers/stellar-consensus-protocol.pdf"&gt;much cheaper algorithm&lt;/a&gt; to determine valid transactions and protect from double spending. I have not spent enough time with it to find out if it's safe enough.&lt;/p&gt;
&lt;p&gt;Stellar has &lt;a href="https://www.stellar.org/explainers/decentralized-trading"&gt;native trading&lt;/a&gt; on the platform. This means the system stores bid and ask requests on the blockchain, which makes it a decentralized exchange. You can create tokens, which might represent your promise to send real things, and sell them for "lumens" or other tokens. Of course, that promise would not mean much without escrow, &lt;a href="https://medium.com/wearetheledger/stellar-escrow-smart-contract-development-4c43ef32ac4b"&gt;which seems possible&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;At one point, &lt;a href="https://www.fxstreet.com/cryptocurrencies/news/stellar-xlm-suffered-and-fixed-an-inflation-bug-in-2017-messari-201903280449"&gt;there was a bug&lt;/a&gt; being exploited in the wild, which created an unintended $10 million worth of Lumens (the unit of the Stellar network). &lt;a href="https://blockonomi.com/stellar-attacked-inflation-bug/"&gt;They burnt their own funds in an equivalent of that amount&lt;/a&gt;, in order to protect Lumen owners from unintended inflation. Would an organization voluntarily forfeit $10 million? I hope there is more to gain; otherwise this smells fishy to me.&lt;/p&gt;
&lt;p&gt;To prevent spam, you need to hold a &lt;a href="https://www.stellar.org/developers/guides/concepts/fees.html#minimum-account-balance"&gt;minimum balance of 2.5 XLM&lt;/a&gt; (worth about $0.15 as of today) in order to do anything.&lt;/p&gt;
&lt;h3 id="ripple"&gt;&lt;a class="toclink" href="#ripple"&gt;Ripple&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.ripple.com/"&gt;Ripple&lt;/a&gt; is not open in the sense that anyone can join the network to validate transactions (or even to create an account, for that matter). They have &lt;a href="https://www.ripple.com/ripplenet/join-the-network/"&gt;"Contact Us" buttons&lt;/a&gt; when you want to get down to business. Their main purpose is doing financial settlement, letting &lt;a href="https://www.ripple.com/use-cases/banks/"&gt;banks save on payment processing costs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There is no distributed wallet, and you have to rely on Ripple-approved validators.&lt;/p&gt;
&lt;h3 id="libra"&gt;&lt;a class="toclink" href="#libra"&gt;Libra&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Any article I could find on it either:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;reads like an advertisement, or:&lt;/li&gt;
&lt;li&gt;points out the obvious centralization, being controlled by the status quo (among others, Facebook, PayPal, Visa, Mastercard).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Since I don't trust any of those companies, which constantly lobby &lt;em&gt;against&lt;/em&gt; individual financial freedom, and &lt;em&gt;for&lt;/em&gt; their ever-increasing control over parts of my life, I will not trust Libra.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://qz.com/1649526/facebook-is-begging-us-to-trust-libra-but-should-we/"&gt;No&lt;/a&gt;, &lt;a href="https://www.youtube.com/watch?v=7S6506vkth4"&gt;&lt;strong&gt;just no!&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;Hope you enjoyed my post. Do comment, so that I know what you think of it! Also, feel free to suggest any topic for a new post. I could write forever.&lt;/p&gt;</content><category term="English"></category><category term="Economy"></category><category term="Money"></category><category term="Capitalism"></category><category term="Cryptocurrencies"></category></entry><entry><title>Intro to Cryptocurrencies</title><link href="https://danuker.go.ro/intro-to-cryptocurrencies.html" rel="alternate"></link><published>2019-08-13T00:00:00+03:00</published><updated>2019-08-13T00:00:00+03:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2019-08-13:/intro-to-cryptocurrencies.html</id><summary type="html">&lt;p&gt;A friend of mine recently asked me about cryptocurrencies. I gave him the short story, but I'll post the long story here as well, for anyone interested.&lt;/p&gt;
&lt;h3 id="whats-the-point"&gt;&lt;a class="toclink" href="#whats-the-point"&gt;What's the point?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;In its most basic form, a cryptocurrency is a list of balances in accounts. Only people that have the password …&lt;/p&gt;</summary><content type="html">&lt;p&gt;A friend of mine recently asked me about cryptocurrencies. I gave him the short story, but I'll post the long story here as well, for anyone interested.&lt;/p&gt;
&lt;h3 id="whats-the-point"&gt;&lt;a class="toclink" href="#whats-the-point"&gt;What's the point?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;In its most basic form, a cryptocurrency is a list of balances in accounts. Only people that have the password to an account can spend the balance in it, using a "wallet" application.&lt;/p&gt;
&lt;p&gt;However, a bank account offers the same function so far.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;One difference is that the bank account uses a &lt;strong&gt;government currency&lt;/strong&gt; as a unit, but a cryptocurrency account uses just &lt;strong&gt;made-up numbers&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Another difference is that anyone can begin validating transactions for cryptocurrencies, not just a central authority middleman (the bank).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="why-would-anyone-trust-made-up-numbers"&gt;&lt;a class="toclink" href="#why-would-anyone-trust-made-up-numbers"&gt;Why would anyone trust made-up numbers?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The history of money is long, and I won't pretend I can explain all of it, but here's the gist of it.&lt;/p&gt;
&lt;p&gt;A long time ago, people used gold and silver coins to trade. While this allowed great financial freedom, it is not very convenient to carry chunks of metal around with you all the time. Then, banks appeared, which let you use bank notes instead of the heavy chunks, and they would store your metals.&lt;/p&gt;
&lt;p&gt;Then, fractional reserve banks were invented - banks would print more bank notes than they had gold, and lend it to people. See a comprehensive clarification &lt;a href="https://www.khanacademy.org/economics-finance-domain/macroeconomics/monetary-system-topic/macro-banking-and-the-expansion-of-the-money-supply/v/overview-of-fractional-reserve-banking"&gt;in these Khan Academy videos&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But more recently, the government and the central bank decided to &lt;a href="https://www.thetimes.co.uk/article/chancellor-alistair-darling-on-brink-of-second-bailout-for-banks-n9l382mn62h"&gt;just print pretty much unlimited money and do bad things with it&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This rewards the reckless risk-takers and the government, while it punishes diligent and responsible people, and &lt;a href="https://mises.org/library/currency-debasement-and-social-collapse"&gt;can lead to the fall of civilizations&lt;/a&gt;. Rome fell in part because of its &lt;a href="https://en.wikipedia.org/wiki/Roman_currency#Value_and_composition"&gt;currency debasement&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Roman_currency#Value_and_composition"&gt;&lt;img alt="Progression of Roman coins showing less and less silver content" class="img-fluid" src="images/Decline_of_the_antoninianus.jpg"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Without a constant influx of precious metals from an outside source, and with the expense of continual wars, it would seem reasonable that coins might be debased to increase the amount that the government could spend. A simpler possible explanation for the debasement of coinage is that it allowed the state to spend more than it had. By decreasing the amount of silver in its coins, Rome could produce more coins and "stretch" its budget. As time progressed, the trade deficit of the west, because of its buying of grain and other commodities, led to a currency drainage in Rome.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There are two kinds of inflation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Money supply inflation, which is the increase in amount of money existing (the money printing I mentioned earlier)&lt;/li&gt;
&lt;li&gt;Price inflation, which is the increase in prices as a result of increased spending; it directly erodes purchasing power, and is a consequence of the money supply inflation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The bigger the money supply, the more people have available to spend, and the more prices are driven up (unless people save the money). In general, since central banks love to print money, $100 today will buy you fewer goods and services than $100 a year ago.&lt;/p&gt;
&lt;p&gt;A chart &lt;a href="https://observationsandnotes.blogspot.com/2011/04/100-year-declining-value-of-us-dollar.html"&gt;here&lt;/a&gt; shows that $100 today can be used to buy goods worth only $3.48 in 1900 dollars - though you still pay the same $100 face value. This is quite a drop in purchasing power.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://observationsandnotes.blogspot.com/2011/04/100-year-declining-value-of-us-dollar.html"&gt;&lt;img alt="Chart of US Dollar purchasing power drop" class="img-fluid" src="images/Purchasing Power of U.S. Dollar.jpg"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In Romania, the country I'm from, the central bank decided to print a lot of money following the 1989 revolution. The official consumer price index is &lt;a href="http://www.insse.ro/cms/ro/content/indicele-preturilor-de-consum"&gt;only available in RAR archives and only from 2002&lt;/a&gt;, which makes it pretty useless, but we can compute a more useful approximation of price inflation for ourselves.&lt;/p&gt;
&lt;p&gt;A kilogram of bread was around &lt;a href="https://economie.hotnews.ro/stiri-finante_banci-21668081-isi-mai-aduce-cineva-aminte-preturile-dinainte-1989.htm"&gt;4.4 Lei in 1970&lt;/a&gt;, and today, 2019, 2 loaves of 500 grams be worth around &lt;a href="https://www.numbeo.com/cost-of-living/in/Cluj-napoca"&gt;&lt;code&gt;2 * 2.82 =&lt;/code&gt; 5.64 RON&lt;/a&gt;. But note the &lt;strong&gt;difference in the unit&lt;/strong&gt;: a RON (Romanian New Leu) represents 10000 ROL (Romanian Leu - the old one).&lt;/p&gt;
&lt;p&gt;This translates to a 12818.18-fold devaluation over 49 years, or an average geometric price increase of &lt;code&gt;12818.18 ^ (1/49) - 1 =&lt;/code&gt; &lt;strong&gt;21.3% per year&lt;/strong&gt;. Any saver would have seen their savings wiped out of existence. Clearly, saving or holding Lei or RON should not be done. Perhaps this is why Romania suffered (or is still suffering?) a &lt;a href="https://www.forbes.com/sites/stephenmcgrath/2017/01/30/losing-your-mind-romanias-attempts-to-counter-the-brain-drain/"&gt;brain drain&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;However, with cryptocurrencies, you can mathematically determine the money supply, and have a safe guarantee of what it will be in the future. For instance, there will &lt;a href="https://en.bitcoin.it/wiki/Controlled_supply"&gt;never be more than 21 million Bitcoin&lt;/a&gt;, and the monetary inflation will reach essentially zero by around 2040. However, the creator(s?) of Bitcoin decided to use some inflation, in order to stimulate adoption.&lt;/p&gt;
&lt;p&gt;Of course, the actual market price of cryptocurrencies will not only depend on the supply, but also on the wildly varying demand.&lt;/p&gt;
&lt;p&gt;Still, in a way, the "made-up" numbers proposed by cryptocurrencies are &lt;strong&gt;less made-up than the ones in people's bank accounts&lt;/strong&gt;. One can use cryptocurrencies as a hedge against inflation - similar to storing oil, gold, copper, paintings, or houses, instead of holding money that is losing its purchasing power constantly.&lt;/p&gt;
&lt;h3 id="yet-more-advantages-of-cryptocurrencies"&gt;&lt;a class="toclink" href="#yet-more-advantages-of-cryptocurrencies"&gt;Yet more advantages of cryptocurrencies&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Suppose you are a journalist involved in exposing powerful, corrupt politicians in your country. They have frozen your bank accounts.&lt;/p&gt;
&lt;p&gt;You are having trouble paying for food, let alone paying for a bodyguard which you desperately need. What do you do?&lt;/p&gt;
&lt;p&gt;Well, cryptocurrencies are the newest answer. Using cryptocurrencies, you can generate an account using a wallet application on your computer or phone, and accept donations by publishing your account's address. Your patrons can send you cryptocurrencies there.&lt;/p&gt;
&lt;p&gt;The government would find it very difficult to block your cryptocurrency account, since you could transact even on paper (using QR codes or just writing down hex code).&lt;/p&gt;
&lt;h3 id="disadvantages-of-cryptocurrencies"&gt;&lt;a class="toclink" href="#disadvantages-of-cryptocurrencies"&gt;Disadvantages of cryptocurrencies&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Not everything is rosy, though.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Price variation&lt;/p&gt;
&lt;p&gt;Since cryptocurrencies are in their infancy, demand for them is wildly fluctuating. One should be prepared to lose all their money - for no other reason than people rejecting them as payment. For instance, &lt;a href="https://www.coinfairvalue.com/coins/bitcoin/"&gt;Bitcoin lost 92% of its value between June and November 2011&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Technical/security risks&lt;/p&gt;
&lt;p&gt;People need to be apt at computer security in order to hold significant amounts. Wallet files are magnets for viruses. In addition to one's password being copied off one's backups and &lt;a href="https://bitcoinist.com/electrum-wallet-phishing-bitcoin/"&gt;fake wallets sending money to attackers&lt;/a&gt;, there may also be some bug in actual cryptocurrency network implementations - like one found &lt;a href="https://www.coindesk.com/zcash-team-reveals-it-fixed-a-catastrophic-coin-counterfeiting-bug"&gt;last year in ZCash that allowed counterfeiting&lt;/a&gt; (but was fortunately not exploited in the wild).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Increased costs&lt;/p&gt;
&lt;p&gt;Right now, fees for Bitcoin transactions are big, over 1 USD. While there are &lt;a href="https://bitinfocharts.com/comparison/transactionfees-btc-eth-ltc-bch-etc-dash-xmr-zec.html#log"&gt;other cryptocurrencies with smaller fees&lt;/a&gt;, it's hard to know how they will behave as they scale. It's fundamentally more difficult to keep a distributed network than to just have one central authority that processes payments (like a credit card company).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Politics / legal&lt;/p&gt;
&lt;p&gt;There may be missing or even &lt;strong&gt;hostile legislation&lt;/strong&gt; for how one should treat cryptocurrencies. There might be power-hungry central banks  banning them (such as &lt;a href="https://www.foxnews.com/tech/russia-bans-bitcoins"&gt;Russia's&lt;/a&gt;, &lt;a href="https://www.bbc.com/news/world-asia-india-43669730"&gt;India's&lt;/a&gt;, and &lt;a href="https://www.businessinsider.com/bitcoin-price-september-14-2017-9"&gt;China's&lt;/a&gt;), for various reasons including terrorism, money laundering, and price instability.&lt;/p&gt;
&lt;p&gt;Opinion: I think these reasons are quite baseless, and should not lead to banning.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Terrorism means expressing your point of view using violence. While I sternly condemn any violence, I am a strong supporter of freedom of speech. Just because terrorists use cryptocurrencies doesn't mean we should ban them - terrorists also use roads, trains, planes, and &lt;a href="https://www.youtube.com/watch?v=9VDvgL58h_Y"&gt;spoons&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Money laundering: of course the government won't like people performing tax evasion. But that doesn't mean anonymous financial payments should be forbidden. A government should do its job without infringing upon financial privacy (see the journalist example above). If a government, say, imposes a ceiling on cash transactions, not only does it fail to meet its purpose (criminals will transact illegally and invisibly anyway), but it significantly reduces financial freedom for honest citizens.&lt;/li&gt;
&lt;li&gt;Price instability: I think this is a joke. Anyone buying anything should be aware of the risks of what they are buying. The government should not ban people from assuming risks - it would lead to much greater risks (similar to &lt;a href="https://en.wikipedia.org/wiki/Prohibition_in_the_United_States"&gt;clandestine breweries during the Prohibition&lt;/a&gt;). Of course, the government should not "save" people from the risks either.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="what-cryptocurrency-should-i-choose"&gt;&lt;a class="toclink" href="#what-cryptocurrency-should-i-choose"&gt;What cryptocurrency should I choose?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;In case you're insane enough to want some of this, stay tuned. &lt;a href="review-of-cryptocurrencies.html"&gt;Another article is coming up soon.&lt;/a&gt; I will review some currencies:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bitcoin&lt;/li&gt;
&lt;li&gt;Bitcoin Cash&lt;/li&gt;
&lt;li&gt;Ethereum&lt;/li&gt;
&lt;li&gt;Monero, ZCash&lt;/li&gt;
&lt;li&gt;Ripple, Stellar&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Have fun!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Edit 2019-09-02: &lt;a href="review-of-cryptocurrencies.html"&gt;Here is the article!&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</content><category term="English"></category><category term="Economy"></category><category term="Money"></category><category term="Capitalism"></category><category term="Cryptocurrencies"></category></entry><entry><title>Caring for your hardware</title><link href="https://danuker.go.ro/caring-for-your-hardware.html" rel="alternate"></link><published>2019-06-09T00:00:00+03:00</published><updated>2019-06-09T00:00:00+03:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2019-06-09:/caring-for-your-hardware.html</id><summary type="html">&lt;h3 id="thermal-shutdown"&gt;&lt;a class="toclink" href="#thermal-shutdown"&gt;Thermal shutdown&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I started playing some games on my Debian laptop. After some time of intense fan blowing, the laptop shut down.
I figured this was likely a thermal shutdown - the device turning itself off to protect itself.&lt;/p&gt;
&lt;p&gt;I started monitoring the temperature - and it was getting to 100ºC at …&lt;/p&gt;</summary><content type="html">&lt;h3 id="thermal-shutdown"&gt;&lt;a class="toclink" href="#thermal-shutdown"&gt;Thermal shutdown&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I started playing some games on my Debian laptop. After some time of intense fan blowing, the laptop shut down.
I figured this was likely a thermal shutdown - the device turning itself off to protect itself.&lt;/p&gt;
&lt;p&gt;I started monitoring the temperature - and it was getting to 100ºC at times, while I was playing my game. This is terrible; I like my hardware cool.
The game did what it was supposed to - use up all available resources to give me the most fluid gameplay. But the laptop did not - it was supposed to throttle itself to prevent overheating before it simply shuts down for a thermal emergency. Instead, the default Intel drivers were pushing it into constant Turbo Boost.&lt;/p&gt;
&lt;h3 id="heat-and-electronics"&gt;&lt;a class="toclink" href="#heat-and-electronics"&gt;Heat and electronics&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Why do I like my hardware to stay cool?&lt;/p&gt;
&lt;p&gt;Because it prolongs its life. There are many electronics that suffer &lt;a href="https://en.wikipedia.org/wiki/Electromigration#Thermal_effects"&gt;accelerated wear when hot&lt;/a&gt;, so, the cooler they run, the better.&lt;/p&gt;
&lt;p&gt;A &lt;a href="https://www.ti.com/lit/an/sprabx4a/sprabx4a.pdf"&gt;report by Texas Instruments&lt;/a&gt; gives the &lt;a href="http://reliawiki.com/index.php/Arrhenius_Relationship"&gt;Arrhenius relationship&lt;/a&gt; for their components designed to run at 105ºC for 10 years.&lt;/p&gt;
&lt;p&gt;This is used to calculate an "acceleration factor" which predicts how long a component survives at different temperatures. If you run the component at 95ºC instead of 105ºC (just 10ºC cooler), you get a whopping &lt;strong&gt;79% increase&lt;/strong&gt; (so, the component will work for &lt;strong&gt;17.9 years&lt;/strong&gt; instead of 10).&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.ti.com/lit/an/sprabx4a/sprabx4a.pdf"&gt;&lt;img alt="Graph showing the relationship between temperature and acceleration factor" class="img-fluid" src="images/acceleration-factor.png"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(Note the logarithmic vertical AF scale)&lt;/p&gt;
&lt;p&gt;Another chart is offered by &lt;a href="https://www.overclockers.com/overclockings-impact-on-cpu-life/"&gt;Overclockers.net&lt;/a&gt;, and it's useful to get ballpark values for a CPU's life expectancy &lt;a href="https://en.wiktionary.org/wiki/WRT#English"&gt;wrt&lt;/a&gt;. temperature. It should really be taken with a grain of salt - your mileage may vary.&lt;/p&gt;
&lt;h3 id="software-solutions"&gt;&lt;a class="toclink" href="#software-solutions"&gt;Software solutions&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I have researched software solutions for this problem. I have found the best Linux tool for the job: &lt;code&gt;cpufreqd&lt;/code&gt;.
It allows you to specify custom rules for changing CPU states.&lt;/p&gt;
&lt;p&gt;&lt;a href="pages/caring-for-your-hardware-cpufreqd-settings.html"&gt;&lt;strong&gt;Here&lt;/strong&gt;&lt;/a&gt; are my settings for the laptop and desktop I use, as well as useful commands to deal with this tool.&lt;/p&gt;
&lt;p&gt;I have had no more thermal problems since using &lt;code&gt;cpufreqd&lt;/code&gt;, however, the caveat is that my game plays with a noticeably lower framerate.&lt;/p&gt;
&lt;p&gt;Cool beans! :)&lt;/p&gt;
&lt;p&gt;So far, I use only the CPU for playing games. I need to figure out how to use &lt;code&gt;cpufreqd&lt;/code&gt; with my closed-source and not-very-usable-under-open-source Nvidia video card before I can use it (I got thermal crashes before). There is no open-source driver support for the GTX 850M yet. Hopefully I can still use cpufreqd on it. If you have any tips, please mail me, and you can get featured on this blog if you'd like!&lt;/p&gt;
&lt;h3 id="cleaning-and-thermal-compounds"&gt;&lt;a class="toclink" href="#cleaning-and-thermal-compounds"&gt;Cleaning, and thermal compounds&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I thought cleaning my laptop was the right course of action. I took it to a laptop cleaning place, and asked them to replace the "thermal paste", but it did not seem to improve much.&lt;/p&gt;
&lt;p&gt;I have since learned a bit about thermal pastes, and I can recommend you ones with a high thermal conductivity.
&lt;a href="https://www.youtube.com/watch?v=hdTsra-uLBI"&gt;Here&lt;/a&gt; is the video that made me interested in this topic. A Linus other than Mr. Torvalds shows that you can lower your laptop CPU temperature by 20ºC by replacing the stock thermal compound with a possibly dangerous aluminum-dissolving and electrically-conducting liquid metal paste from "Thermal Grizzly".&lt;/p&gt;
&lt;p&gt;This is because the stock thermal paste is, paradoxically, among the least thermally conductive points in the heat dissipation pipeline. Replacing it with a better performing one is, perhaps, more important than having a better heatsink or air flow.&lt;/p&gt;
&lt;p&gt;I have not yet replaced my thermal paste, since I am still reading about how to mitigate the risks of a metal paste, as well as researching non-conductive pastes. Also, very few seem to be available in Romania. (&lt;a href="http://www.shop4pc.ro/pasta-termoconductoare-thermal-grizzly-kryonaut-1g-p-43676.html"&gt;Here&lt;/a&gt; is one I found so far, but I have not bought it yet).&lt;/p&gt;
&lt;p&gt;On liquid metal ones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;They have the best thermal conductivity, usually, &lt;a href="https://en.wikipedia.org/wiki/Thermal_grease#Composition"&gt;up to 13 W/(m*K)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;You have to protect the electrical components near the CPU or GPU for which you're replacing the paste, such as by using a skirt around them made of &lt;a href="https://en.wikipedia.org/wiki/Kapton"&gt;Kapton tape&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Also, you have to be extra careful with the material compatibility and not to spill it on some other places on the motherboard.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On others:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;They are not as risky as liquid metal&lt;/li&gt;
&lt;li&gt;Some may have satisfactory thermal conductivity, of &lt;a href="https://www.nrel.gov/docs/fy08osti/42972.pdf"&gt;4 W/(m*K), according to this 2008 study&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note, however, that many vendors overstate their thermal conductivity. For instance, the study measured Arctic Silver 5 at 0.94 W/(m&lt;em&gt;K), but the vendor claims 8.7 W/(m&lt;/em&gt;K) - that is an overstatement of &lt;a href="https://knowyourmeme.com/memes/its-over-9000"&gt;over 900%&lt;/a&gt;.&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;Hope you find this post useful. If so, drop me a comment or an e-mail.&lt;/p&gt;
&lt;h4 id="have-a-cool-day"&gt;&lt;a class="toclink" href="#have-a-cool-day"&gt;Have a cool day!&lt;/a&gt;&lt;/h4&gt;</content><category term="English"></category><category term="Self-hosted"></category><category term="Hardware"></category><category term="Libre Software"></category><category term="Intel"></category><category term="Nvidia"></category><category term="Tech"></category></entry><entry><title>On Zeitgeist, the Venus Project, and the "Resource Based Economy"</title><link href="https://danuker.go.ro/on-zeitgeist-the-venus-project-and-the-resource-based-economy.html" rel="alternate"></link><published>2019-04-09T14:40:00+03:00</published><updated>2019-04-09T14:40:00+03:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2019-04-09:/on-zeitgeist-the-venus-project-and-the-resource-based-economy.html</id><summary type="html">&lt;p&gt;The &lt;a href="https://www.thevenusproject.com/"&gt;Venus Project&lt;/a&gt; is a vague "solution" to current problems of civilization. They claim that through a &lt;a href="https://www.thevenusproject.com/resource-based-economy/"&gt;"Resource Based Economy"&lt;/a&gt;, coupled with advanced science and engineering, everyone can reach a very high standard of living.&lt;/p&gt;
&lt;p&gt;This "Resource Based Economy" claims that "all resources must be declared as the common heritage …&lt;/p&gt;</summary><content type="html">&lt;p&gt;The &lt;a href="https://www.thevenusproject.com/"&gt;Venus Project&lt;/a&gt; is a vague "solution" to current problems of civilization. They claim that through a &lt;a href="https://www.thevenusproject.com/resource-based-economy/"&gt;"Resource Based Economy"&lt;/a&gt;, coupled with advanced science and engineering, everyone can reach a very high standard of living.&lt;/p&gt;
&lt;p&gt;This "Resource Based Economy" claims that "all resources must be declared as the common heritage of all Earth’s inhabitants".&lt;/p&gt;
&lt;p&gt;The way I interpret this is as follows: "Abolish private property, and declare legal that anyone can use any one else's resources". If you have a better interpretation, please leave a comment or e-mail me, and I will update this post with further thought.&lt;/p&gt;
&lt;p&gt;In other words, I interpret it as &lt;a href="https://en.wikipedia.org/wiki/Communism"&gt;communism&lt;/a&gt;, which is "structured upon the common ownership of the means of production and the absence of social classes, money, and the state".&lt;/p&gt;
&lt;h2 id="the-problem"&gt;&lt;a class="toclink" href="#the-problem"&gt;The problem&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The problem with &lt;strong&gt;communism&lt;/strong&gt;, or letting everyone use everyone else's stuff, is that the incentive to create stuff is practically eliminated.&lt;/p&gt;
&lt;p&gt;Suppose you're a farmer, and you work hard and have a plentiful harvest. Then, your harvest is confiscated and shared equally among everyone (even people who have not lifted a finger, though are perfectly capable). Would you be just as eager to work hard next year?&lt;/p&gt;
&lt;p&gt;Contrast to your neighbor, who is incredibly lazy, got up at noon, and did not work at all, yet was rewarded for this with the fruits of your labor.&lt;/p&gt;
&lt;p&gt;Well, in the end, nobody wants to work anymore, or at least to give away their production. This happened in Soviet Ukraine, leading to the Great Famine (called &lt;a href="https://en.wikipedia.org/wiki/Holodomor"&gt;"Holodomor"&lt;/a&gt;).&lt;/p&gt;
&lt;h2 id="the-solution"&gt;&lt;a class="toclink" href="#the-solution"&gt;The solution&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Letting people keep what they have created is essential to keep them motivated to keep creating stuff. This is called &lt;a href="https://en.wikipedia.org/wiki/Capitalism"&gt;&lt;strong&gt;capitalism&lt;/strong&gt;&lt;/a&gt; - (the "capital" is allowed to accumulate, and people are allowed to profit from their work).&lt;/p&gt;
&lt;p&gt;If everyone produces, and then they are allowed to trade between themselves, even the poorest people in this model will quickly become richer than the richest in communism.&lt;/p&gt;
&lt;h2 id="the-problem-with-the-solution"&gt;&lt;a class="toclink" href="#the-problem-with-the-solution"&gt;The problem with the solution&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Under capitalism, people that are unable to produce and have no resources accumulated will go very poor (and become dependent on charity, which might be inadequate). While this provides extraordinary motivation for being thoughtful and productive, it can be &lt;strong&gt;cruel&lt;/strong&gt; to people unable to do so (for example, disabled people).&lt;/p&gt;
&lt;p&gt;For this reason, most countries today are &lt;a href="https://en.wikipedia.org/wiki/Mixed_economy"&gt;mixed economies&lt;/a&gt;, allowing people to keep a portion of their capital, but redistributing the other portion (through taxation).&lt;/p&gt;
&lt;p&gt;What's bad about that is that the redistributors keep a big portion for themselves; and they usually choose the beneficiaries in a manner advantageous to them (i.e. creating or enlarging a &lt;a href="https://en.wikipedia.org/wiki/Welfare_dependency"&gt;dependent class&lt;/a&gt; which votes them loyally).&lt;/p&gt;
&lt;h2 id="conclusion"&gt;&lt;a class="toclink" href="#conclusion"&gt;Conclusion&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Now you know why I disagree with the Venus project - it would be no different than Soviet Russia, or today's North Korea. What would prevent people from slacking off? Authoritarianism? That is not a good solution and can't motivate them in the right way.&lt;/p&gt;</content><category term="English"></category><category term="Communism"></category><category term="Resource based economy"></category><category term="Capitalism"></category><category term="Politics"></category><category term="Economy"></category></entry><entry><title>GDPRanoia</title><link href="https://danuker.go.ro/gdpranoia.html" rel="alternate"></link><published>2019-04-05T11:39:00+03:00</published><updated>2019-04-05T11:39:00+03:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2019-04-05:/gdpranoia.html</id><summary type="html">&lt;p&gt;&lt;em&gt;Updated 2019-11-18.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The GDPR is legally convenient, in case you are a private person, and want the illusion of control over data gathered from you.&lt;/p&gt;
&lt;p&gt;However, when considering its actual impact, and looking at it from different perspectives, it can appear strange, and perhaps even scary.&lt;/p&gt;
&lt;h2 id="broad-definitions"&gt;&lt;a class="toclink" href="#broad-definitions"&gt;Broad definitions&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I had …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;em&gt;Updated 2019-11-18.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The GDPR is legally convenient, in case you are a private person, and want the illusion of control over data gathered from you.&lt;/p&gt;
&lt;p&gt;However, when considering its actual impact, and looking at it from different perspectives, it can appear strange, and perhaps even scary.&lt;/p&gt;
&lt;h2 id="broad-definitions"&gt;&lt;a class="toclink" href="#broad-definitions"&gt;Broad definitions&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I had doubts about certain data being labeled "personal", such as IP addresses. Sometimes, people share an Internet connection, which means they would share an IP address.&lt;/p&gt;
&lt;p&gt;But according to &lt;a href="https://gdpr-info.eu/art-4-gdpr/"&gt;Article 4&lt;/a&gt;, "‘personal data’ means any information relating to an identified or &lt;strong&gt;identifiable&lt;/strong&gt; natural person". This means an IP address is personal data, even if a processor can't by itself identify a user.&lt;/p&gt;
&lt;p&gt;This definition is very broad. Perhaps one can use the shoe size to identify a person (say, pinpoint someone from a household). This means shoe size can be personal data, and you are liable if you share your friends' shoe sizes!&lt;/p&gt;
&lt;h2 id="kafkaesque-requirements"&gt;&lt;a class="toclink" href="#kafkaesque-requirements"&gt;Kafkaesque requirements&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If you record the phone numbers of your friends, say, on your phone, then you are processing personal data.&lt;/p&gt;
&lt;p&gt;Fortunately, according to &lt;a href="https://gdpr-info.eu/art-2-gdpr/"&gt;Article 2&lt;/a&gt;, the GDPR does not apply to you, if you are a "natural person" and you process the data "in the course of a purely personal or household activity".&lt;/p&gt;
&lt;p&gt;There are two relevant court cases about this which &lt;a href="https://law.stackexchange.com/questions/28582/is-it-possible-for-a-publicly-accessible-personal-blog-to-make-use-of-the-perso"&gt;I found here&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://curia.europa.eu/juris/document/document.jsf?text=&amp;amp;docid=48382&amp;amp;pageIndex=0&amp;amp;doclang=en&amp;amp;mode=lst&amp;amp;dir=&amp;amp;occ=first&amp;amp;part=1&amp;amp;cid=322419"&gt;One may not record a public space with a webcam, as a "purely personal or household" activity&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://curia.europa.eu/juris/document/document.jsf?text=&amp;amp;docid=48382&amp;amp;pageIndex=0&amp;amp;doclang=en&amp;amp;mode=lst&amp;amp;dir=&amp;amp;occ=first&amp;amp;part=1&amp;amp;cid=322419"&gt;One may not transmit the name or contact details of other people as a "purely personal or household" activity either&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can search for more cases on the CURIA website by clicking on "Search form" at the top, then removing the "ECLI:EU:" field, then filling in your terms in the "Text" field.&lt;/p&gt;
&lt;p&gt;So, suppose you want to introduce two friends over the phone (they are not physically near you). There are two ways to do this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Give friend A's number to friend B -&amp;gt; sharing friend A's number is not "purely personal" (because friend B is an outsider).&lt;/li&gt;
&lt;li&gt;Give friend B's number to friend A -&amp;gt; sharing friend B's number is not "purely personal" (because friend A is an outsider).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The only way to make this legal is to ask for one of the friends' permission (as per &lt;a href="https://gdpr-info.eu/art-6-gdpr/"&gt;Art. 6 1. (a)&lt;/a&gt;) to share their number, and to &lt;a href="https://gdpr-info.eu/art-30-gdpr/"&gt;keep the required records&lt;/a&gt; for a processor and controller (you are both, in this case).&lt;/p&gt;
&lt;p&gt;This is ridiculous. &lt;a href="https://en.wikipedia.org/wiki/GDPR_fines_and_notices"&gt;Laugh, I tell you!&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="balancing-act"&gt;&lt;a class="toclink" href="#balancing-act"&gt;Balancing act&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://gdpr-info.eu/art-6-gdpr/"&gt;Article 6&lt;/a&gt; says processing is lawful when 1. f):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;processing is necessary for the purposes of the legitimate interests pursued by the controller or by a third party, except where such interests are overridden by the interests or fundamental rights and freedoms of the data subject which require protection of personal data, in particular where the data subject is a child.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This pits the "legitimate interests" of the controller against the "fundamental rights" of the data subject. These two rights are contradictory.&lt;/p&gt;
&lt;p&gt;Suppose it is in my interest to identify scammers on the Internet. This necessarily infringes the scammer's right to privacy.
What is "legitimate"? That's a word on which the entire GDPR rests on, but it's quite vague.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://logrhythm.com/blog/gdpr-legitimate-interest/"&gt;Here is a long exploration someone else made on the subject.&lt;/a&gt; But it's not very conclusive.&lt;/p&gt;
&lt;h2 id="fines"&gt;&lt;a class="toclink" href="#fines"&gt;Fines&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Fines can be &lt;a href="https://gdpr-info.eu/art-83-gdpr/"&gt;whichever is higher&lt;/a&gt; between €20M and 4% of financial turnover.&lt;/p&gt;
&lt;p&gt;This means:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If a small company got a fine, they might get a fine greater than their company's worth, putting them out of business.&lt;/li&gt;
&lt;li&gt;If a very large company got a fine, then the 4% limit would apply: say, of Facebook's €50 billion, they would only lose 4% (or €2 billion). This would be a slap on the wrist for them, and would let them keep most of the money resulting from the most egregious of infringements.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As you can see, the Big Tech lobbying worked. They have arranged so that newcomers and smaller competitors are exterminated. Justice much? (&lt;a href="eu-copyright-directive.html#what-you-can-do-about-it"&gt;See the last point here.&lt;/a&gt;)&lt;/p&gt;
&lt;h2 id="edit-2019-11-18-implementation-and-impact"&gt;&lt;a class="toclink" href="#edit-2019-11-18-implementation-and-impact"&gt;Edit 2019-11-18: Implementation and impact&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Technically, any site can embed content from any other site, say, from Google.&lt;/p&gt;
&lt;p&gt;Your browser then sends Google a request, perhaps with personal data in the HTTP Referrer, and you typically don't get a say in this.&lt;/p&gt;
&lt;p&gt;This results in a blatant violation of your privacy. Clearly, this law is enforced &lt;a href="https://en.wikipedia.org/wiki/GDPR_fines_and_notices"&gt;only for some players&lt;/a&gt;. Sure, Google got a fine as well, but €50 million is a slap on the wrist, compared to their net income in the billions. Also, where is Facebook on this list, with their Like buttons plastered on every site, collecting data without consent? Where is Amazon, hosting tons of sites on their S3 servers, more than likely analyzing their data?&lt;/p&gt;
&lt;p&gt;Luckily, you might still get the &lt;strong&gt;impression of privacy&lt;/strong&gt;, with every cookie warning pestering you on every tiny site, EVEN IF you know how to turn off cookies IN YOUR BROWSER, because YOU KNOW HOW TO BROWSE THE WEB.&lt;/p&gt;
&lt;p&gt;In &lt;a href="how-to-protect-your-personal-data.html"&gt;this post&lt;/a&gt;, you can find tips for keeping your data to yourself.&lt;/p&gt;
&lt;h2 id="what-you-can-do"&gt;&lt;a class="toclink" href="#what-you-can-do"&gt;What you can do&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Ask the GDPR authority in your country before you do something with other people's data.
If you do not get a response within 30 days, tell the Ombudsman / People's Advocate, and/or the media.&lt;/p&gt;
&lt;p&gt;Hopefully pestering the GDPR authority will give you at least an idea of what they expect.&lt;/p&gt;
&lt;p&gt;An alternative to the above is to perform civil disobedience: risk fines in exchange for demonstrating the absurdity of laws.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Do pester other people with this post!&lt;/strong&gt;&lt;/p&gt;</content><category term="English"></category><category term="EU"></category><category term="GDPR"></category><category term="Freedom of speech"></category><category term="Privacy"></category><category term="Politics"></category></entry><entry><title>Don't buy Apple products.</title><link href="https://danuker.go.ro/dont-buy-apple-products.html" rel="alternate"></link><published>2019-04-03T23:20:00+03:00</published><updated>2019-04-03T23:20:00+03:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2019-04-03:/dont-buy-apple-products.html</id><summary type="html">&lt;p&gt;Apple denies any possibility of data recovery after your device is not bootable. This is plainly false.&lt;/p&gt;
&lt;p&gt;On top of that, they ban people who know how to recover your data from their forums. Jessa Jones was banned from the Apple forum for offering support to people. It's almost as …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Apple denies any possibility of data recovery after your device is not bootable. This is plainly false.&lt;/p&gt;
&lt;p&gt;On top of that, they ban people who know how to recover your data from their forums. Jessa Jones was banned from the Apple forum for offering support to people. It's almost as if they don't want you to recover your data.&lt;/p&gt;
&lt;p&gt;Watch &lt;a href="https://www.youtube.com/watch?v=LrILfIE9IB4"&gt;Jessa Jones' interview in a documentary, reposted by Louis Rossman&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Also, &lt;a href="https://www.youtube.com/watch?v=_b3tnN7AtkI"&gt;check out Louis' comments&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you want to get data recovered off an iThing, check out Jessa's company, &lt;a href="http://www.ipadrehab.com/"&gt;iPad Rehab&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;"In a time of universal deceit — telling the truth is a revolutionary act" - George Orwell﻿&lt;/p&gt;</content><category term="English"></category><category term="Big Tech"></category><category term="Freedom of speech"></category><category term="Right to repair"></category><category term="Apple"></category></entry><entry><title>EU Copyright Directive</title><link href="https://danuker.go.ro/eu-copyright-directive.html" rel="alternate"></link><published>2019-04-03T14:00:00+03:00</published><updated>2019-04-03T14:00:00+03:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2019-04-03:/eu-copyright-directive.html</id><summary type="html">&lt;p&gt;The EU Parliament &lt;a href="https://saveyourinternet.eu/latest-developments/"&gt;recently adopted&lt;/a&gt; a new copyright directive which makes a site owner responsible for what the site's users post (Article 17  AKA former Article 13).&lt;/p&gt;
&lt;p&gt;As with most legislation nowadays, it must have been initiated by some group which would benefit from it - as opposed to "good" legislation …&lt;/p&gt;</summary><content type="html">&lt;p&gt;The EU Parliament &lt;a href="https://saveyourinternet.eu/latest-developments/"&gt;recently adopted&lt;/a&gt; a new copyright directive which makes a site owner responsible for what the site's users post (Article 17  AKA former Article 13).&lt;/p&gt;
&lt;p&gt;As with most legislation nowadays, it must have been initiated by some group which would benefit from it - as opposed to "good" legislation, which would benefit everyone. My guess is that this group is the group of copyright owners.&lt;/p&gt;
&lt;h2 id="the-implications"&gt;&lt;a class="toclink" href="#the-implications"&gt;The implications&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Small-sized websites have a new burden: they will have a difficult job sifting through user content, making sure none of it infringes copyright.&lt;/li&gt;
&lt;li&gt;Medium-sized websites will experience &lt;a href="https://en.wikipedia.org/wiki/Chilling_effect"&gt;chilling effects&lt;/a&gt; - and will severely limit media (say, any images like memes, video, or audio), because of being unable to verify what their users upload.&lt;/li&gt;
&lt;li&gt;Big Tech websites (i.e. Google, Facebook etc), who can afford an automated filter will suffer a burden, but will be the only ones able to keep up with many people uploading to their site. This regulation gives them a competitive advantage.&lt;ul&gt;
&lt;li&gt;Note: Big Tech can also implement business deals with the copyright owners.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Copyright / Intellectual Property ("IP") owners will have more rights to make citizens more copyright-compliant (aka censorship).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-you-can-do-about-it"&gt;&lt;a class="toclink" href="#what-you-can-do-about-it"&gt;What you can do about it&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Vote at the next EU Parliament election. Check out &lt;a href="https://saveyourinternet.eu/latest-developments/"&gt;which Members of Parliament&lt;/a&gt; have sold you out, and vote with the other guys.&lt;ul&gt;
&lt;li&gt;While voting might not do much (since you're just one person), you can share this idea to your friends.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Boycott whoever gains from this arrangement:&lt;ul&gt;
&lt;li&gt;Don't go to/buy movies&lt;/li&gt;
&lt;li&gt;Don't watch music videos online (such as on YouTube, or Facebook), since they make money from the ads&lt;ul&gt;
&lt;li&gt;an alternative YouTube client you can use is &lt;a href="https://newpipe.schabi.org/"&gt;NewPipe&lt;/a&gt;), though it might be against YouTube ToS (and it doesn't cure YouTube addictions)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Don't buy music or streaming licenses&lt;/li&gt;
&lt;li&gt;Listen to free music on &lt;a href="http://freemusicarchive.org/curator/creative_commons"&gt;Creative Commons&lt;/a&gt;, which does not trample on your rights.&lt;ul&gt;
&lt;li&gt;The second song I clicked there was &lt;a href="http://freemusicarchive.org/music/Kriss/nomad_ep/unfound38_03_-_kriss_-_jazz_club"&gt;"Jazz Club" by "Kriss"&lt;/a&gt;, and it sounds amazing!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Only buy books from individuals (which could not have possibly lobbied to the EU); not from "publishers" (such as Google Books, or Amazon/Kindle).&lt;/li&gt;
&lt;li&gt;While an individual boycotting a huge company does not have much effect, you are being more effective than voting: namely, voting with your money and time, which you can know are not financing this travesty!&lt;/li&gt;
&lt;li&gt;Become aware and boycott top tech lobbyists in the EU, in the &lt;strong&gt;last financial year&lt;/strong&gt;:&lt;ul&gt;
&lt;li&gt;Google: &lt;a href="https://lobbyfacts.eu/representative/1d40cdaf822941888d1e6121858bb617/google"&gt;over €6M&lt;/a&gt; (they sell books, music streaming, and gain from ads on YouTube videos)&lt;/li&gt;
&lt;li&gt;Microsoft: &lt;a href="https://lobbyfacts.eu/representative/60239386204445e2b0fb38cada46b204/microsoft-corporation"&gt;over €5M&lt;/a&gt; (they declared they used some of it "on certain aspects concerning contracts for the supply of digital content")&lt;/li&gt;
&lt;li&gt;Facebook: &lt;a href="https://lobbyfacts.eu/representative/64755e0fc2a14e46aa9d8646df6f8f19/facebook-ireland-limited"&gt;over €3.5M&lt;/a&gt; (gains from this by crushing competitor social media sites)&lt;/li&gt;
&lt;li&gt;Amazon: &lt;a href="https://lobbyfacts.eu/representative/5615fc9a365b4e0f9e9c0d7929a73f17/amazon-europe-core-sarl"&gt;over €1.75M&lt;/a&gt; (they also sell DRM music, video, and other IP)&lt;/li&gt;
&lt;li&gt;See other big lobbyists to generally boycott &lt;a href="https://lobbyfacts.eu/reports/lobby-costs/all/0/1/1/1/0/0?sort=lob&amp;amp;order=desc"&gt;here&lt;/a&gt; (not just tech).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content><category term="English"></category><category term="EU"></category><category term="Freedom of speech"></category><category term="Big Tech"></category><category term="Copyright"></category><category term="Lobbying"></category><category term="Politics"></category></entry><entry><title>My new Pelican blog</title><link href="https://danuker.go.ro/my-new-pelican-blog.html" rel="alternate"></link><published>2019-04-02T23:00:00+03:00</published><updated>2019-04-02T23:00:00+03:00</updated><author><name>Dan Gheorghe Haiduc</name></author><id>tag:danuker.go.ro,2019-04-02:/my-new-pelican-blog.html</id><summary type="html">&lt;p&gt;The more I think about tech giants, the more I want to use self-hosted services.&lt;/p&gt;
&lt;p&gt;On this blog, I will talk about what I want to do with my life.&lt;/p&gt;
&lt;p&gt;The first and most important item on my list is &lt;strong&gt;self-expression&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;When you use a private service like Facebook, Google …&lt;/p&gt;</summary><content type="html">&lt;p&gt;The more I think about tech giants, the more I want to use self-hosted services.&lt;/p&gt;
&lt;p&gt;On this blog, I will talk about what I want to do with my life.&lt;/p&gt;
&lt;p&gt;The first and most important item on my list is &lt;strong&gt;self-expression&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;When you use a private service like Facebook, Google, YouTube and such, their interest is not to provide free speech, nor promote the development of society, nor improve your well-being. But it is in their interest to rob you of your attention, time, money, and eventually your entire community.&lt;/p&gt;
&lt;p&gt;As people become addicted to these services, the very fabric of society starts to fall apart. We only interact through a middleman, who only shows us what we like to see, to keep us hooked and wanting for more.&lt;/p&gt;
&lt;p&gt;In order to have free speech, you have to counter this influence. You have to break out of the bubble, and listen to other people, even of opposing viewpoints. People are smart in general, and their opinions are there for a reason. Find the reason, and understand it!&lt;/p&gt;
&lt;p&gt;I urge you to become aware of Big Tech's influence over your life, and to fight back.&lt;/p&gt;
&lt;h3 id="write-your-own-website-and-host-it-yourself"&gt;&lt;a class="toclink" href="#write-your-own-website-and-host-it-yourself"&gt;Write your own website, and host it yourself!&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;P.S. I personally recommend &lt;a href="https://blog.getpelican.com/"&gt;Pelican&lt;/a&gt;. It just works out-of-the-box! Initially I tried &lt;a href="https://github.com/oz123/blogit"&gt;blogit&lt;/a&gt; for its small codebase, but less code also means less functionality, not just fewer bugs :)&lt;/p&gt;</content><category term="English"></category><category term="Big Tech"></category><category term="Self-hosted"></category><category term="Freedom of speech"></category><category term="Pelican"></category></entry></feed>