'use strict';
'require view';
'require dom';
'require poll';
'require ui';
'require rpc';
'require uci';
'require form';
'require network';

function parse_portvalue(section_id) {
	var ports = L.toArray(uci.get('network', section_id, 'ports'));

	for (var i = 0; i < ports.length; i++) {
		var m = ports[i].match(/^(\d+)([tu]?)/);

		if (m && m[1] == this.option)
			return m[2] || 'u';
	}

	return '';
}

function validate_portvalue(section_id, value) {
	if (value != 'u')
		return true;

	var sections = this.section.cfgsections();

	for (var i = 0; i < sections.length; i++) {
		if (sections[i] == section_id)
			continue;

		if (this.formvalue(sections[i]) == 'u')
			return _('%s is untagged in multiple VLANs!').format(this.title);
	}

	return true;
}

function update_interfaces(old_ifname, new_ifname) {
	var interfaces = uci.sections('network', 'interface');

	for (var i = 0; i < interfaces.length; i++) {
		var old_ifnames = L.toArray(interfaces[i].ifname),
		    new_ifnames = [],
		    changed = false;

		for (var j = 0; j < old_ifnames.length; j++) {
			if (old_ifnames[j] == old_ifname) {
				new_ifnames.push(new_ifname);
				changed = true;
			}
			else {
				new_ifnames.push(old_ifnames[j]);
			}
		}

		if (changed) {
			uci.set('network', interfaces[i]['.name'], 'ifname', new_ifnames.join(' '));

			ui.addNotification(null, E('p', _('Interface %q device auto-migrated from %q to %q.')
				.replace(/%q/g, '"%s"').format(interfaces[i]['.name'], old_ifname, new_ifname)));
		}
	}
}

function render_port_status(node, portstate) {
	if (!node)
		return null;

	if (!portstate || !portstate.link)
		dom.content(node, [
			E('img', { src: L.resource('icons/port_down.png') }),
			E('br'),
			_('no link')
		]);
	else
		dom.content(node, [
			E('img', { src: L.resource('icons/port_up.png') }),
			E('br'),
			'%d'.format(portstate.speed) + _('baseT'),
			E('br'),
			portstate.duplex ? _('full-duplex') : _('half-duplex')
		]);

	return node;
}

function update_port_status(topologies) {
	var tasks = [];

	for (var switch_name in topologies)
		tasks.push(callSwconfigPortState(switch_name).then(L.bind(function(switch_name, ports) {
			for (var i = 0; i < ports.length; i++) {
				var node = document.querySelector('[data-switch="%s"][data-port="%d"]'.format(switch_name, ports[i].port));
				render_port_status(node, ports[i]);
			}
		}, topologies[switch_name], switch_name)));

	return Promise.all(tasks);
}

var callSwconfigFeatures = rpc.declare({
	object: 'luci',
	method: 'getSwconfigFeatures',
	params: [ 'switch' ],
	expect: { '': {} }
});

var callSwconfigPortState = rpc.declare({
	object: 'luci',
	method: 'getSwconfigPortState',
	params: [ 'switch' ],
	expect: { result: [] }
});

return view.extend({
	load: function() {
		return network.getSwitchTopologies().then(function(topologies) {
			var tasks = [];

			for (var switch_name in topologies) {
				tasks.push(callSwconfigFeatures(switch_name).then(L.bind(function(features) {
					this.features = features;
				}, topologies[switch_name])));
				tasks.push(callSwconfigPortState(switch_name).then(L.bind(function(ports) {
					this.portstate = ports;
				}, topologies[switch_name])));
			}

			return Promise.all(tasks).then(function() { return topologies });
		});
	},

	render: function(topologies) {
		var m, s, o;

		m = new form.Map('network', _('Switch'), _('The network ports on this device can be combined to several VLANs in which computers can communicate directly with each other. VLANs are often used to separate different network segments. Often there is by default one Uplink port for a connection to the next greater network like the internet and other ports for a local network.'));

		var switchSections = uci.sections('network', 'switch');

		for (var i = 0; i < switchSections.length; i++) {
			var switchSection   = switchSections[i],
			    sid             = switchSection['.name'],
			    switch_name     = switchSection.name || sid,
			    topology        = topologies[switch_name];

			if (!topology) {
				ui.addNotification(null, _('Switch %q has an unknown topology - the VLAN settings might not be accurate.').replace(/%q/, switch_name));

				topologies[switch_name] = topology = {
					features: {},
					netdevs: {
						5: 'eth0'
					},
					ports: [
						{ num: 0, label: 'Port 1' },
						{ num: 1, label: 'Port 2' },
						{ num: 2, label: 'Port 3' },
						{ num: 3, label: 'Port 4' },
						{ num: 4, label: 'Port 5' },
						{ num: 5, label: 'CPU (eth0)', device: 'eth0', need_tag: false }
					]
				};
			}

			var feat = topology.features,
			    min_vid = feat.min_vid || 0,
			    max_vid = feat.max_vid || 16,
			    num_vlans = feat.num_vlans || 16,
			    switch_title = _('Switch %q').replace(/%q/, '"%s"'.format(switch_name)),
			    vlan_title = _('VLANs on %q').replace(/%q/, '"%s"'.format(switch_name));

			if (feat.switch_title) {
				switch_title += ' (%s)'.format(feat.switch_title);
				vlan_title += ' (%s)'.format(feat.switch_title);
			}

			s = m.section(form.NamedSection, sid, 'switch', switch_title);
			s.addremove = false;

			if (feat.vlan_option)
				s.option(form.Flag, feat.vlan_option, _('Enable VLAN functionality'));

			if (feat.learning_option) {
				o = s.option(form.Flag, feat.learning_option, _('Enable learning and aging'));
				o.default = o.enabled;
			}

			if (feat.jumbo_option) {
				o = s.option(form.Flag, feat.jumbo_option, _('Enable Jumbo Frame passthrough'));
				o.enabled = '3';
				o.rmempty = true;
			}

			if (feat.mirror_option) {
				s.option(form.Flag, 'enable_mirror_rx', _('Enable mirroring of incoming packets'));
				s.option(form.Flag, 'enable_mirror_tx', _('Enable mirroring of outgoing packets'));

				var sp = s.option(form.ListValue, 'mirror_source_port', _('Mirror source port')),
				    mp = s.option(form.ListValue, 'mirror_monitor_port', _('Mirror monitor port'));

				sp.depends('enable_mirror_rx', '1');
				sp.depends('enable_mirror_tx', '1');

				mp.depends('enable_mirror_rx', '1');
				mp.depends('enable_mirror_tx', '1');

				for (var j = 0; j < topology.ports.length; j++) {
					sp.value(topology.ports[j].num, topology.ports[j].label);
					mp.value(topology.ports[j].num, topology.ports[j].label);
				}
			}

			s = m.section(form.TableSection, 'switch_vlan', vlan_title);
			s.anonymous = true;
			s.addremove = true;
			s.addbtntitle = _('Add VLAN');
			s.topology = topology;
			s.device = switch_name;

			s.filter = function(section_id) {
				var device = uci.get('network', section_id, 'device');
				return (device == switch_name);
			};

			s.cfgsections = function() {
				var sections = form.TableSection.prototype.cfgsections.apply(this);

				return sections.sort(function(a, b) {
					var vidA = feat.vid_option ? uci.get('network', a, feat.vid_option) : null,
					    vidB = feat.vid_option ? uci.get('network', b, feat.vid_option) : null;

					vidA = +(vidA != null ? vidA : uci.get('network', a, 'vlan') || 9999);
					vidB = +(vidB != null ? vidB : uci.get('network', b, 'vlan') || 9999);

					return (vidA - vidB);
				});
			};

			s.handleAdd = function(ev) {
				var sections = uci.sections('network', 'switch_vlan'),
				    section_id = uci.add('network', 'switch_vlan'),
				    max_vlan = 0,
				    max_vid = 0;

				for (var j = 0; j < sections.length; j++) {
					if (sections[j].device != s.device)
						continue;

					var vlan = +sections[j].vlan,
					    vid = feat.vid_option ? +sections[j][feat.vid_option] : null;

					if (vlan > max_vlan)
						max_vlan = vlan;

					if (vid > max_vid)
						max_vid = vid;
				}

				uci.set('network', section_id, 'device', s.device);
				uci.set('network', section_id, 'vlan', max_vlan + 1);

				if (feat.vid_option)
					uci.set('network', section_id, feat.vid_option, max_vid + 1);

				return this.map.save(null, true);
			};

			var port_opts = [];

			o = s.option(form.Value, feat.vid_option || 'vlan', 'VLAN ID');
			o.rmempty = false;
			o.forcewrite = true;
			o.vlan_used = {};
			o.datatype = 'range(%u,%u)'.format(min_vid, feat.vid_option ? 4094 : num_vlans - 1);
			o.description = _('Port status:');

			o.validate = function(section_id, value) {
				var v = +value,
				    m = feat.vid_option ? 4094 : num_vlans - 1;

				if (isNaN(v) || v < min_vid || v > m)
					return _('Invalid VLAN ID given! Only IDs between %d and %d are allowed.').format(min_vid, m);

				var sections = this.section.cfgsections();

				for (var i = 0; i < sections.length; i++) {
					if (sections[i] == section_id)
						continue;

					if (this.formvalue(sections[i]) == v)
						return _('Invalid VLAN ID given! Only unique IDs are allowed');
				}

				return true;
			};

			o.write = function(section_id, value) {
				var topology = this.section.topology,
				    values = [];

				for (var i = 0; i < port_opts.length; i++) {
					var tagging = port_opts[i].formvalue(section_id),
					    portspec = Array.isArray(topology.ports) ? topology.ports[i] : null;

					if (tagging == 't')
						values.push(port_opts[i].option + tagging);
					else if (tagging == 'u')
						values.push(port_opts[i].option);

					if (portspec && portspec.device) {
						var old_tag = port_opts[i].cfgvalue(section_id),
						    old_vid = this.cfgvalue(section_id);

						if (old_tag != tagging || old_vid != value) {
							var old_ifname = portspec.device + (old_tag != 'u' ? '.' + old_vid : ''),
							    new_ifname = portspec.device + (tagging != 'u' ? '.' + value : '');

							if (old_ifname != new_ifname)
								update_interfaces(old_ifname, new_ifname);
						}
					}
				}

				if (feat.vlan4k_option)
					uci.set('network', sid, feat.vlan4k_option, '1');

				uci.set('network', section_id, 'ports', values.join(' '));

				return form.Value.prototype.write.apply(this, [section_id, value]);
			};

			o.cfgvalue = function(section_id) {
				var value = feat.vid_option ? uci.get('network', section_id, feat.vid_option) : null;
				return (value || uci.get('network', section_id, 'vlan'));
			};

			s.option(form.Value, 'description', _('Description'));

			for (var j = 0; Array.isArray(topology.ports) && j < topology.ports.length; j++) {
				var portspec = topology.ports[j],
				    portstate = Array.isArray(topology.portstate) ? topology.portstate[portspec.num] : null;

				o = s.option(form.ListValue, String(portspec.num), portspec.label);
				o.value('', _('off'));

				if (!portspec.need_tag)
					o.value('u', _('untagged'));

				o.value('t', _('tagged'));

				o.cfgvalue = parse_portvalue;
				o.validate = validate_portvalue;
				o.write    = function() {};

				o.description = render_port_status(E('small', {
					'data-switch': switch_name,
					'data-port': portspec.num
				}), portstate);

				port_opts.push(o);
			}

			port_opts.sort(function(a, b) {
				return a.option > b.option;
			});
		}

		poll.add(L.bind(update_port_status, m, topologies));

		return m.render();
	}
});


The spread of AIDS and the ongoing efforts to control the responsible virus are well-documented. One way to control HIV is to inhibit its reverse transcriptase activity (RT). Thus, novel, potent, and selective inhibitors of HIV RT are needed as useful therapeutic agents. Known, potent inhibitors of HIV RT include 5′-triphosphates of 2′,3′-dideoynucleoside (“ddN”) analogues. These active RT inhibitors are generated intracellularly by the action of nucleoside kinase and nucleotide kinase. Thus ddN compounds such as AZT and d4T have been considered to hold much promise in the search for anti-HIV agents.
The rate-limiting step for the conversion of 3′-azido-3′-deoxythymidine (Zidovudine; AZT) to its bioactive metabolite AZT-triphosphate seems to be the conversion of the monophosphate derivative to the diphosphate derivative, whereas the rate-limiting step for the intracellular generation of the bioactive 2′,3′-dideoxy-2′,3′-didehydrothymidine (d4T) metabolite d4T-triphosphate was reported to be the conversion of the nucleoside to its monophosphate derivative. (Balzarini et. al., 1989, J. Biol. Chem. 264:6127; McGuigan et al., 1996, J. Med. Chem. 39:1748). See FIG. 1 for the mechanism proposed in the prior art.
In an attempt to overcome the dependence of ddN analogues on intracellular nucleoside kinase activation, McGuigan et al. have prepared aryl methoxyalaninyl phosphate derivatives of AZT (McGuigan et. al., 1993 J. Med. Chem. 36:1048; McGuigan et. al., 1992 Antiviral Res. 17:311) and d4T (McGuigan et. al., 1996 J. Med. Chem. 39:1748: McGuigan et. al., 1996 Bioorg. Med. Chem. Lett. 6:1183). Such compounds have been shown to undergo intracellular hydrolysis to yield monophosphate derivatives that are further phosphorylated by thymidylate kinase to give the bioactive triphosphate derivatives in a thymidine kinase (TK)-independent fashion. However, all attempts to date to further improve the potency of the aryl phosphate derivatives of d4T by various substitutions of the aryl moiety without concomitantly enhancing their cytotoxicity have failed (McGuigan et. al., 1996 J. Med. Chem. 39:1748).
In the present invention, it has been discovered that a substitution at the phenyl moiety in the phenyl methoxyalaninyl phosphate derivative of d4T with an electron-withdrawing moiety such as a para-bromo substitution, enhances the ability of the phenyl methoxyalaninyl derivative of d4T to undergo hydrolysis due to the electron withdrawing property of the bromo substituent. The substituted phenyl phosphate derivative of d4T demonsrate potent and specific anti-viral activity.


Intramuscular haemangioma of head and neck region.
Intramuscular haemangiomas are rare benign haemangiomas occurring within the skeletal muscle. These are uncommon tumours in the head and neck region and occur most frequently on the trunk and extremities. Fewer than 80 cases of intra-muscular haemangioma in the head and neck region have been reported in the literature. A case of intramuscular haemangioma of the sternocleidomastoid muscle is presented. The review of occurrence and natural history of such tumours is described and clinical and radiological presentation, histological classifications and treatment modalities are discussed.


Building Uber’s New HQ With Drones

Uber HQ, your drone is arriving now.

And it’s being flown by Truebeck Construction, an innovative, fast-growing general contractor based in the San Francisco Bay Area. Founded in 2007, the company quickly made its mark on high profile projects across Silicon Valley, including the Steve Jobs Theatre at Apple Park. Now, with over 400 employees and a spot in the ENR 200, Truebeck is building Uber’s new headquarters in the Mission Bay neighborhood of San Francisco.

Their expanding in-house drone program is run by their virtual construction team, led by Justin Porter, Senior VDC Manager. Justin and his team perform a wide range of increasingly vital services across Truebeck’s projects—including Uber—such as laser scanning, drone mapping and drone inspections, alternate delivery methods, 4D scheduling, and driving safety initiatives.

The project: Uber’s new HQ

The 450,000 square foot headquarters, scheduled to open in 2020, consists of two buildings—one 12 stories and the other seven stories—and sits right beside the new Golden State Warriors stadium. Designed by SHoP Architects, it’s being built using cast-in-place concrete and will have two glass and steel pedestrian bridges crossing between the buildings.

The need: aerial imagery for as-built models and progress reporting

Justin and Alex from Truebeck planning flights with the 3DR customer success team

The Truebeck VDC team is increasingly looking to use drone data on a number of active projects across the Bay Area. “95% of how we use drone data is for site planning, logistics planning, and as-built surveying,” Justin said. “We have a new logistics plan almost every day, and we want to be able to overlay these plans onto high-res, up-to-date drone maps.”

“We have a new logistics plan almost every day, and we want to be able to overlay these plans onto high-res, up-to-date drone maps.”

Justin PorterSenior VDC Manager, Truebeck Construction

They also make use of new tools to improve progress reporting and communication with their clients. This doesn’t just include drones—they have a virtual reality trailer on-site that the Uber team regularly visits to get an immersive experience of the new office:

On this project, Truebeck wanted to use drones in two main ways:

1. Perform progress scans of the exterior skin to track against the schedule and perform quality assurance

2. Enhance progress reporting with a variety of aerial images

The solution: 3DR Site Scan

The virtual construction team is actively building their own in-house drone program, so they were looking for a drone solution with a complete, end-to-end workflow. They found it in Site Scan, and now are actively flying on a number of projects.

On the Uber project, Justin and his colleague Alex Snyder, Senior VDC Engineer, use the Site Scan iOS app to fly their drones safely despite being in a busy urban area. They take high-resolution photos of the west façade of the structure in a short flight, and then upload the photos to Site Scan where they’re processed into a detailed point cloud. They then can not only view and analyze the photos themselves, but they can use the point cloud as well, make measurements, and QA/QC performed work.

Creating detailed point clouds to track progress

Their main focus is on capturing and inspecting the exterior skin of the building, including the glass panels that are being installed:

Point cloud in Site Scan for an as-built survey of the Uber HQ

Using Site Scan’s photo inspection tool, they can also click on any pixel in the point cloud and view every photo that includes that point. This helps them quickly go back and forth between a rich point cloud and a single high-resolution photo, enabling more granular inspections of the exterior skin for quality control and progress monitoring.

They also flew manually to capture inspection photos of specific, harder-to-reach areas of interest, such as the pedestrian bridges that connect the two buildings:

Getting a 360° view

To capture additional parts of the site and get a complete perspective of the latest progress, they also flew off the roof of an adjacent parking garage with a new panorama flight mode in Site Scan. This creates a complete 360° view of the project that they can then share across the Truebeck team, give to their client, and use for marketing purposes.

What’s next

As they continue to map and capture the Uber HQ, Justin and his team are also building on their success by expanding their in-house drone operations to more projects across the Bay Area. Site and logistics planning continue to be a main focus, but they’re also going to focus on doing more detailed façade inspections, capture data for soil and stockpile quantities, and much more.

By quickly, cost-effectively, and safely using Site Scan to get the data they need, Truebeck continues to demonstrate its commitment to innovation and, as the company likes to say, “disrupting the ordinary.”


Q:

Why is there no tasks folder in active record gem

when I read through active record source on github repo, I can find active_record/tasks folder there but in the gem I install through gem install, that folder is missing. why?

A:

That's because it's new in Rails 4 and so only on master branch, if you have a look at the tag for the version you installed (e.g. here for 3.2.9), you'll see that the folder is not there either.


Q:

Windows 8 Phone Simplest way to populate a listbox using a list

What is the Simplest way to populate a list box using a list. And how would you find the string tapped?
    List<HistoryEntry> urls = new List<HistoryEntry>();
    public HistoryEntry selectedHistory;

public MainPage()
        {
            InitializeComponent();
        }

 void Browser_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
    {
        // Save for fast resume
        _deactivatedURL = e.Uri;
        // We have arrived at a new page,
        // hide the progress indicator
        _progressIndicator.IsVisible = false;
        textBox1.Text = Convert.ToString(e.Uri).Remove(0, 11);
        getHistory(textBox1.Text);
    }

private void getHistory(string url)
    {
        HistoryEntry urlObj = new HistoryEntry();
        urlObj.url = url;
        urlObj.timestamp = DateTime.Now.ToString("HH:mm yyyy-MM-dd");
        urls.Add(urlObj);

        listBox.ItemsSource = urls;
    }

    private void ListBox_SelectionChanged(object sender, GestureEventArgs e)
    {
        selectedHistory = listBox.SelectedValue as HistoryEntry;
        browserSearch(selectedHistory.url);
    }

<Grid>
                <ListBox x:Name="listBox" ItemsSource="{Binding urls}" Tap="ListBox_SelectionChanged">
                    <ListBox.ItemTemplate>
                        <DataTemplate>

                            <StackPanel Orientation="Horizontal">
                                <Grid>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="auto"></ColumnDefinition>
                                        <ColumnDefinition></ColumnDefinition>
                                    </Grid.ColumnDefinitions>
                                    <StackPanel Grid.Column="1" Orientation="Vertical" Margin="0,0,0,29" >
                                        <TextBlock Text="{Binding timestamp}" FontSize="15" ></TextBlock>
                                        <TextBlock Text="{Binding url}" FontSize="25" ></TextBlock>
                                    </StackPanel>
                                </Grid>
                            </StackPanel>

                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>
            </Grid>

Once adding new values to the list, these must be then seen in the listbox and if one is tapped the program must display which value has been clicked.
Thank you in advance :)
If you need any more details please comment and I will be happy to explain in further detail :)

A:

  List<HistoryEntry> urls = new List<HistoryEntry>();
        public MainPage()
        {
            InitializeComponent();
        }

        private void WebBrowser_Navigated(object sender, NavigationEventArgs e)
        {
             string url  = Convert.ToString(e.Uri).Remove(0, 11);
             HistoryEntry urlObj = new HistoryEntry();
             urlObj.URL = url;
             urlObj.timestamp = DateTime.Now.ToString("HH:mm yyyy-MM-dd");
             urls.Add(urlObj);
             listBox.ItemsSource  = null;
             listBox.ItemsSource = urls;
        }

        public  class HistoryEntry
        {
            public string URL { get; set; }
            public string timestamp { get; set; }

        }


Q:

C# Detect if usb device is inserted

I'd like to now if it is possible to only allow a C# application run if a usb device is inserted?
 The usb device is a Pololu micro servo controler. At the moment I'm cheking if it is connected throug the serial conection if the Pololu is sending a "Char" as I programed It. But some times the Pololu is connected but in a part of the loop where the Char is not sent, so in this case the application won't open even with the pololu connected. Is there a more reliable way to detect it?

A:

You can get the removable drives through the following code.
 using System.IO.DriveInfo;

 var availableDrives = DriveInfo.GetDrives()
.Where(d=> d.IsReady && d.DriveType == DriveType.Removable);

details of DriveInfo
You can also take a quick look at open source project LibUsbDotNet


Dermal Fillers: 18 Common Questions Answered

Read 18 commonly asked questions about dermal fillers in Melbourne – and find out why it’s important to choose a doctor experienced in injectables to perform your procedure.

1. What are dermal fillers made of?

Dermal fillers contain hyaluronic acid, a safe gel-like substance made of a non-animal-based natural sugar compound (glycosaminoglycan). This substance is found naturally in our bodies but depletes as we age. Hyaluronic acid is also a common ingredient in skincare products due to its hydrating ability. We no longer use collagen, silicon or ‘permanent fillers’ as dermal fillers.

2. Can I have fillers if I’m pregnant?

It is not recommended that you have fillers if you are pregnant. Currently, there have been no clinical trials on pregnant or breastfeeding women receiving dermal fillers, and until such studies are done, we cannot rule out any potential problems. It’s likely there would be no problems regarding reaction as the injected substance occurs naturally in the body. However, pregnant women are predisposed to swelling and metabolic changes, both of which could impact negatively.

3. Where is the dermal filler injection implemented?

Dr Feldman performs all injections in her offices in either East Perth, South Yarra or Sydney. After the procedure, you are safe to go back to work or drive home.

4. Are fillers painful?

Most people find the fillers relatively painless. The filler liquid includes local anaesthetic, so soon after the first injection, the area becomes numb, and subsequent injections are less painful. If you know you’re very sensitive, you may take codeine or paracetamol before the injection you numb the area.

5. How long does the treatment take?

Dermal filler injections are very quick – the injections will be over within minutes. Most appointments take approximately 30 minutes, as you’ll need to spend time discussing your objectives – and realistic outcomes – with Joni.

6. I only want a tiny bit. Can I start with .5 mil?

If you only have the tiniest amount, it’s highly likely that you won’t see any result and will be back in a couple of weeks asking for more! Instead, try to trust Joni’s advice and the dosage she recommends. Generally speaking, as a minimum, .5 ml is used. Bear in mind, any excess can be discreetly used in other areas of the face.

7. How soon will I see the results?

You’ll see the results of your treatment immediately afterwards. However, there may be minor swelling and redness for the following 20 minutes, followed by a lesser amount for the next few days, before the full effect is revealed.

8. Can I go out in public after my dermal filler injection?

Yes, you can go out in public after your dermal filler injection. Your complexion will be instantly smoother and more wrinkle-free than before. However, you may be slightly red and puffy around the injected area for a short while. Light concealer or foundation is usually enough to disguise this minor irritation. If you plan to have fillers before an important event or photo shoot, allow a good few days or a week for all swelling to subside.

9. How long will my dermal fillers last?

Dermal fillers can last anywhere between 6 to 18 months, depending on the type of filler used, and the area it is placed. For example, we find that fillers tend to last up to about two years under the eye area, while other areas, such as around the mouth, dissipate more quickly. The lifetime of the fillers is also dependent on other factors, such as age, lifestyle, structure of the skin, desired outcome and professional skills of the practitioner.

Joni recommends follow-up appointments for touch-up treatments as these add to the longevity of your results. Most people decide to have a new filler injection within a year of the first injection. For those addressing wrinkles and skinfolds, she recommends six-monthly follow-up treatments (which usually require less filler than the initial treatment).

10. What will I look like if I stop having dermal fillers?

After your procedure, the results will slowly fade away. The 100% natural liquid will gently resorb into your body without any side effects. Your face will take on the appearance it had before your injections. Therefore, you will need ongoing injections if you would like to maintain the correction.

11. How much filler is in a syringe?

Typically, syringes carry approximately 1ml of filler. This may be enough for fine lines or areas around the mouth, while jawline sculpting, cheekbone enhancement and chin enhancement may initially require 2-3 mls.

12. Are there any risks with injecting dermal fillers?

Risks are minimal with dermal fillers; however, all medical procedures carry risk. The most serious risk involves injecting into a blood vessel such as a vein or artery, which can stop the blood flowing through the area, resulting in skin death through a lack of blood supply. There have been rare reported cases of blindness due to dermal fillers inappropriately placed in the arteries that supply the eye. This is yet another reason why it’s essential you choose an experienced, educated professional for your treatments.

If you’re predisposed to cold sores, you may have a breakout shortly after the injection (if injected near the lip area). Occasionally, a granuloma may appear, which is a small nodule formed due to a delayed inflammatory reaction to the dermal filler. Granulomas can be treated with either antibiotics, steroids or occasionally by removing the product.

13. How can I detect counterfeit products?

The cost of your dermal filler product is usually the giveaway when trying to distinguish counterfeit products. Put simply, you get what you pay for. If your product is alarmingly cheap, it’s likely to be an imitation and may be extremely dangerous. If you feel unsure, ask for the name of the filler and look up the product online at theAustralian Register of Therapeutic Goodswebsite.

14. Who should I choose to perform cosmetic injectables on me?

In Australia, only doctors and nurses are allowed to perform cosmetic injections. Unfortunately, there is no regulation on ‘cosmetic injectables’ training. Therefore, we recommend you choose a doctor experienced in injectables, rather than a clinic where treatments are delegated to various nurses or a rotating door of casual staff members. Choose Joni for your injectables, and you can be assured that she will always be your practitioner, as she does not hire any nurses or relief staff. Joni has a wealth of experience, having administered over 10,000 injections since starting her double Bay clinic in 1991.

Dr Joni Feldman M.B.B.S (MELB), F.F.M.A.C.C.S, DIP.LIPOPLASTY is a highly qualified cosmetic surgeon. A graduate of the University of Melbourne in 1987, she is a Fellow of Australasian College of Cosmetic Surgery, and Founding Member of Cosmetic Physicians Society of Australasia.

15. What areas can be treated with dermal fillers?

Dermal fillers can be used around the eyes, temples, cheekbones, nasolabial folds, chin, jawbone, nose and other facial areas. Joni also recommends that you keep an open mind during a consultation, as she may suggest treating areas that you may not have considered to enhance your desired result or make it appear more natural-looking.

16. Can the procedure be reversed if I’m not happy with the results?

Yes, you can have your filler procedure reversed if you’re not happy with the results. Fortunately, patients are rarely unhappy as Joni discusses the procedure thoroughly beforehand, which helps to eliminate any surprises. However, if you would like to reverse your procedure, she can inject the area with a dissolving enzyme called hyaluronidase. This enzyme breaks down the filler and removes it.

17. Will I bruise after my injections?

Bruising is a common side effect of dermal fillers; however, Joni’s patients rarely bruise due to her expertise. Typically, any bruising is the result of the needlepoint and not the hyaluronic acid and usually resolves on its own accord within a couple of days.

18. Can I have dermal fillers in conjunction with other cosmetic procedures?

You may have dermal fillers in conjunction with treatments such as wrinkle relaxers or thread lifts. However, if you’ve had skin treatments such as chemical peels, IPL, laser or skin needling, wait for two to four weeks before your dermal filler appointment. Discuss your procedures with Joni, and she will suggest the most appropriate treatment schedule.


235 Md. 466 (1964)
201 A.2d 768
WRENN
v.
VINCENT ET VINCENT OF LANGLEY, INC.
[No. 314, September Term, 1963.]
Court of Appeals of Maryland.
Decided July 3, 1964.
The cause was argued before BRUNE, C.J., and HAMMOND, PRESCOTT, MARBURY and SYBERT, JJ.
Abraham Chasanow, with whom were Howard S. Chasanow and Chasanow & Chasanow on the brief, for the appellant.
Jacob S. Levin for the appellee.
BRUNE, C.J., delivered the opinion of the Court.
This is an appeal by the plaintiff from a judgment of the Circuit Court for Prince George's County entered on the defendant's motion for judgment n.o.v. in a suit for damages based on injuries sustained by the plaintiff while having her hair bleached and dyed at one of the defendant's beauty parlors. The jury had returned a verdict for the plaintiff for $1,000.00 damages.
The declaration filed by the plaintiff asserted that the plaintiff suffered injuries "[a]s a result of the negligence of Defendant's agents * * * in failing to take proper preventive and precautionary measures before stripping and bleaching Plaintiff's hair and in the process of stripping and bleaching Plaintiff's hair and in the use of chemicals and appliances in connection therewith."
*468 The evidence showed that on April 14, 1961, the plaintiff (on recommendation of one of her neighbors) went to the defendant's beauty parlor to have her hair bleached and dyed. She testified that she had previously dyed her hair at home (for nine or ten years) but had never gone to a beauty parlor to have it dyed. She testified that she had used a preparation known as Miss (or Lady) Clairol, and that she had merely dyed her hair without stripping or bleaching it to remove dye previously applied.
At the beauty shop an operator applied a preparation to bleach or strip her hair. The plaintiff testified that she complained to her operator and to another operator of a burning sensation during the twenty minutes before the bleach was rinsed and that the operators told her that this was normal. The operator had not warned the plaintiff in advance that there would be discomfort. After the hair was rinsed and dried, the operator observed that not all the color had been removed and applied the bleach to some spots on it (without applying it to the roots). The hair was then again rinsed and dried. A dye or "toner" preparation known as Loreal was then applied. According to the plaintiff, the operator told her that this preparation was something new and that it was very good; according to the operator, it was old. This substance was applied to the roots of the hair. The plaintiff complained that it caused her scalp to burn even more severely than the bleach and that by the time her hair was dried and she left the beauty parlor her scalp was almost numb. She testified that during the course of the treatment she complained to the operator on three or four occasions about the pain without result.
Subsequently, running sores appeared on the plaintiff's head. She telephoned the defendant that evening and was told that this was a normal phenomenon and that they could not examine her scalp because it was closing time that evening. The plaintiff then went to a doctor who treated the sores. On the next day she went to the shop where her hair had been dressed and the manager informed her that her experience was a normal one. On the next Monday, she went to the main office of Vincent et Vincent, where (according to her testimony) the manager offered to take care of her expenses, lost earnings, and *469 medical bills. The manager also assertedly asked her whether the operator had given her a patch test on her hair, but did not comment upon her negative answer.
The operator who bleached and dyed the plaintiff's hair testified that it was evident that the plaintiff had previously dyed her own hair using a one-process hair wash, and had not bleached or stripped it. She testified that she used a Clairol preparation to bleach or strip the plaintiff's hair. She also said that in order to restore the hair to an even color she bleached the roots, that the plaintiff had complained of pain when she dyed the hair with Loreal, but that she warned the plaintiff that sores might result from application of the preparation, and that she herself had had sores. She did not, however, recall whether this warning was given before or after the application of the preparation. The force of her testimony as to the warning was further impaired by her equivocal answers on cross-examination.
The operator also testified that she usually gave a patch test to most people who come in to have their hair bleached, but did not give the plaintiff one since she had previously bleached her own hair. She testified that she felt a patch test was unnecessary since the bleach or stripping agent used was a Clairol product like that previously used by the plaintiff,[1] though she conceded that no patch test was given for the dye or toner, Loreal, which the plaintiff had not used previously. Likewise, the witness acknowledged that she had not told the plaintiff about the patch test so she could decide if she needed it or not.
Though the plaintiff's opening statement indicated that she would rely on the doctrine of res ipsa loquitur, the case was not so submitted to the jury. The court's instructions submitted it simply as a case of negligence, with the burden, of course, resting on the plaintiff to prove it. The motion for judgment n.o.v. was granted on the trial court's view that there was no legally sufficient evidence to show it. In holding as a matter of law that the plaintiff had failed to sustain the burden of showing negligence, the court took the view that she was under *470 an obligation to establish at least one of three things: (1) that the substances applied were in some way defective when examined by chemical analysis; (2) that the treatment deviated from standard procedure in terms of the skill of the operator, or the heat applied, or the length of treatment; or (3) that standard procedure required that a patch test be given and that a test would in fact have revealed the harmful characteristics of the substances applied or the plaintiff's allergy to them.
We think that the court was in error in its holding that there was not sufficient evidence of negligence to go to the jury. The operator had testified that it was usual practice for a patch test to be given when a preparation was first used on a new customer and this conclusion was supported by the plaintiff's testimony as to the question asked her by the manager of the main office of the defendant.[2] See Goldwater's, Inc. v. Medar, 82 Ariz. 344, 313 P.2d 410; Bethancourt v. Employer's Liability Co., (La. App.) 153 So.2d 921 (failure to test hair before applying a permanent wave). Cf. Pinto v. Clairol, Inc., (C.A.,6) 324 F.2d 608 (contributory negligence of plaintiff in failing to make skin test, despite warning on label, before using hair dye); Jiggetts v. Figueroa, 21 Misc.2d 280, 199 N.Y.S.2d 789 (rather similar to Pinto v. Clairol, Inc., just cited). The trial court in its opinion seems to have taken the view that the plaintiff's previous use of a Clairol preparation exonerated the defendant from a legal duty to make the test. We think the question was one for the jury, particularly in view of the fact that no patch test was made to test the plaintiff's allergy to the *471 dye or toner Loreal, a preparation which the plaintiff had concededly not used previously. The jury could reasonably have found that the defendant, both by reason of failure to give a patch test and by reason of the failure of the operator to heed the plaintiff's complaints about pain, had failed to meet its duty of care.
We think that the evidence was ample to sustain a finding by the jury that the treatment received by the plaintiff from the defendant was the actual cause of the chemical burns suffered by the plaintiff. Whether the defendant is responsible for these injuries depends upon whether it was negligent. The trial court in granting the motion for judgment n.o.v. laid a good deal of emphasis on the plaintiff's failure to have a patch test made after the occurrence in order to show that the defendant should have given her one before it. We do not think this of any great significance in the present case. It does not show the defendant's freedom from negligence in the face of the above evidence indicating that the giving of a patch test was a standard practice, and in the face of the plaintiff's repeated complaints of pain.
We think that the evidence was sufficient to permit the jury to find that the defendant fell below the usual standard of care by failing to give a patch test and by failing to heed complaints of pain, and that it was sufficient to sustain such a finding without reference to the doctrine of res ipsa loquitur. We have elsewhere noted "[t]he close resemblance or relationship which may exist between what may be classified as res ipsa loquitur cases and cases in which a direct inference of the defendant's negligence may be drawn from particular facts." Nalee, Inc. v. Jacobs, 228 Md. 525, 531, 180 A.2d 677. This case is of the latter type. The showing that the hairdresser failed to comply with usual practice, distinguishes this case from Smith v. Bernfeld, 226 Md. 400, 174 A.2d 53, which also involved a suit against a hairdresser, but a wholly different type of injury (a chair tipping over). There a showing that the defendant complied with trade standards by using a standard chair precluded a finding that the defendant was liable for negligence for injuries sustained when the chair fell over.
In the light of our conclusion as to evidence of negligence, and in view of the nature of instructions given, we need not decide *472 whether the occurrence of blisters and loss of hair immediately following a visit to a hairdresser would afford ground for recovery or shift the burden of going forward with proof on a theory of res ipsa loquitur, in a case where evidence of negligence was not introduced.
Since the trial judge, notwithstanding his doubt as to whether the defendant's motion for a directed verdict should be granted, wisely submitted the case to the jury, there is no need for a new trial. In accordance with our view that there was sufficient evidence of negligence to take the case to the jury the judgment n.o.v. is reversed, the verdict of the jury in favor of the appellant in the amount of $1,000.00 is reinstated, and is entered for that amount, together with interest and costs.
Judgment reversed, and the verdict of the jury and judgment in accordance therewith for $1,000.00, together with interest and costs, entered for the appellant; the costs to be paid by the appellee.
NOTES
[1]  It it not clear that these products were the same.
[2]  The plaintiff does not suggest that there was any duty to give such a test derived from statute. We may note that Code, 1963 Supp. Art. 43, § 548, empowers the State Board of Cosmetologists to "prescribe such sanitary and safety rules as it may deem necessary, with particular reference to the precautions necessary to be employed to prevent the creating and spreading of infectious and contagious diseases," and that Code 1957, Art. 43, § 544, gives the Board power to "prescribe reasonable rules * * * generally for the conduct of persons * * * affected by this subtitle." We may take judicial notice that no rules under this provision (or its statutory precursors) have been filed with the Clerk of the Court of Appeals pursuant to Code, 1957, Art. 41, §§ 9 and 246.


Social support as a predictor of HIV testing in at-risk populations: a research note.
This paper examines the relationship between social support and the probability of getting tested for human immunodeficiency virus (HIV) among at-risk adults in the United States. According to the literature, social support is one mechanism through which social capital is purported to work. Several studies have hypothesized that social capital influences public health, including HIV or Acquired Immune Deficiency Syndrome (AIDS) case rates and behaviors related to contracting HIV. In this analysis, I use social support as an individual level measure of social capital and examine its influence on a protective behavior, getting tested for HIV. The relationship of social capital and social support to behaviors related to HIV is relevant to the design and implementation of HIV prevention programs.


Q:

What is the following expectation?

What is $E[Y_1I(x<Y_2,Y_2>Y_1)]$, where $Y_1$ and $Y_2$ are non-negative continuous random variables and x is a constant? $I(.)$ is the indicator function. Can this be written as follows?
\begin{align*}
E[Y_1I(x<Y_2,Y_2>Y_1)]&=\int_{0}^{\infty}yP(Y_2>x,Y_2>y)dG(y)\\
&=\int_{0}^{\infty}yP(Y_2>max(x,y))dG(y)\\
&=\int_{0}^{\infty}y\bar{G}(max(x,y))dG(y)
\end{align*}

A:

It's correct. Another way would be: $$\begin{align}\mathbb E[Y_1\mathcal I(x<Y_2, Y_1<Y_2)]&=\int_0^\infty\int_{\max(x,y_1)}^\infty y_1 f(y_1)f(y_2)dy_2dy_1\\&=\int_0^\infty y_1 (1-G(\max(x,y_1)))f(y_1)dy_1\\&=\int_0^\infty y \bar G(\max(x,y))dG(y)\end{align}$$
where $\bar G$ denotes the complementary CDF.


Q:

Phrase generators for use with testing grammars that don't use a seed

In helping someone understand phrase generators for use with testing grammars, think compiler test cases, I noted that I have never found a phrase generator that is knowledgeable of the grammar, and is deterministic. The phrase generators I am talking about rely on the grammar of the language as input so that the user does not have to recreate the rules for the grammar into a format acceptable for the tool. The tool must accept a BNF grammar; I don't mind if the grammar has to be factored some for the tool before input. Tools that rely on a seed or generate a random seed are what I want to avoid.
I am aware that one can use PROLOG to generate a parser and then run a query that outputs a set of results that are phrases used for testing. I also know that it is not uncommon for these result sets to have 10**15 answers for basic cases of a grammar like C++.
Does anyone know of such tools? They can be commercial or open-source as I don't plan on using it, I have my own, I just want to verify my knowledge.
EDIT
The tool must encompass sematic knowledge of the compiler. In other words the phrases must be able to be compiled by a compiler, not just pass the syntactic rules.
EDIT
I agree that the comments and answers regarding deterministic are correct and I my use of the word here is not correct.
What I am looking for is a tool that not only takes in a BNF grammar and can use it "as is" which would mean for a grammar like C++ a basic result sets with 10**30 items. That is not an accurate number but a realistic one based on a phrase generator I have that can report the number of results before generating the results. Since that size of a result set is impractical, I have given the tool the ability to enhance the grammar with constraints, thinking tree pruning. This allows one to generate phrases for one particular branch of the grammar, and also prune and limit the sub-braches and number of recursion over those branches. Even with the constraints each result item is a valid C++ file for use as input to a C++ compiler.
I have a proof of concept of this already, but the difference between a proof of concept and useful tool is a lot of work. So while a seed can be reused and create deterministic results, it does not allow the user to determine the conditions.

A:

The tools you refer to are probably already deterministic. Tools that accept a seed probably only employ a pseudorandom generator which is keyed from the seed and nothing else. Therefore, given the seed, everything is completely deterministic. If the seeding process is reasonable, then a seed like $0$ or $1$ should work. For definiteness, I suggest you take your favorite "random" tool and use a fixed seed, say $1$. Now it's completely deterministic.
One reason you'd want a deterministic tool is reproducibility. You want to be able to reproduce phrases on demand. If the tool is random, that's impossible. However, if all the "randomness" is encapsulated in a user-entered seed, the output is reproducible; all you have to do is remember the seed used.
I cannot think of any other reason you'd want your tool to be deterministic, but if there is one, please let us know so that we can understand your question better.


digraph G {
  ordering=in
  1 -> 2
  4 -> 3
  1 -> 3
}


Unity Asset Store update!

Hey there, Caitlyn Meeks here – your Unity Asset Store content manager! In case you haven’t heard, the Unity Asset Store is your in-editor drag-and-drop one-stop prop-shop, packed with models, textures, scripts, editor extensions, visual effects, even complete game projects. You’ll find ready-to-use, completely modifiable and customizable content for your own game projects just a few clicks away. Even though the Unity Asset Store is merely two months old, we already have over 10,000 downloads per month, about 150 new users registering per day, and individual content creators making thousands of dollars a month – and these numbers are steadily growing!

As a developer, the Unity Asset Store can save you money, time, and enable you to do things that were previously out of your reach. Imagine the following game scenario: your warrior heroes have been adventuring through dense forest wilderness and set up camp in a clearing, sitting before a warm, crackling campfire. Distant roaring is heard! Moments later a pack of sword-wielding homicidal pirate goblins come tearing into the camp on Harley Davidson motorcycles. With swords and battle axes swinging, your adventurers engage the pirate goblin bikers in awesome battle, dodging lasers and tire irons! Finally you take them all down in a glorious explosion with a grenade launcher! Perfect idea for a game, right? (if you use it, I want to be in the credits -CM)

The necessary models, animation and textures seem beyond your resources? No worries! Launch Unity and open the Asset Store window (Window > Asset Store) and find time-saving assets to get going! First you need to get your Adventurers in order. Check out Art Packages > Warriors And Commoners, by Frogames. In this best-selling package, you’ll find an assortment of configurable, professional quality, rigged and animated adventurer characters ready to go. There are so many combinations of configurations, you find a style that suits your game uniquely. You grab our own Free Terrain Assets package, as well as Art Packages > Shanty Town Trees and artfully lay out your forest in less than an hour. A few clicks later you find the perfect campfire, by Unity Magic, complete with crackling sounds, smoke and dancing flames, saving hours of work. After clicking Download & Import, moments later your campfire is in your project and ready to use in your scene.

“But surely,” you say, “Unity does not have Pirate Biker Goblins on the Asset Store!” We look you knowingly in the eye and guide you to the Dungeon Guardians package, featuring professional quality, ready-to-go goblins. With a little texture work in Photoshop, you add classic leather biker chaps, evil mustaches and menacing eye-patches to the characters. Throw in your own peg-leg and hook-hand as meshes to complete the look. “This is unbelievably awesome!” you say, as you dive deeper and find that the battle axes, swords, and motorcycles are really just a download away. For the amazing boss-fight explosions, you download and import the stunning Detonator explosion package. Which is free, by the way. Suddenly your project has professional quality artwork and effects in place, allowing you to focus on the important work – unleashing your creative vision upon the world!

For Content Creators, the Unity Asset Store is a fantastic way to publish, distribute and monetize your hard work – it’s a quick and effective gateway to connect with a rapidly growing base of game designers! Because your customers can download and use assets directly in the Unity Editor, your content is easy to purchase and immediately usable.

As of this blog posting, we’ve just released a brand new Asset Store Tools submission package. Check it out and show us what you’ve got!

Sure, the Unity Asset Store is an awesome resource for game designers and a great way to make money for content creators. But it’s not just a place to buy and sell tanks, trees and scripts, it’s an exchange of creativity, ingenuity, and passion. You’ll find the Asset Store waiting for you under the Window menu directly in the Unity Editor.

12 コメント

One thing that surprises me a bit is that I can’t find (on the Unity site or in the Asset Store) anything that discusses licensing and permissible uses of Asset Store content from a EULA perspective. Can anyone point me to that? With the restrictions that are often put in place around game content and 3D models, I need to make sure we understand those before we purchase and integrate content.

It sounds like anything we download from the Asset Store can be integrated into our Unity projects (and modified) without exception, but I’d still expect to see a legal shpeel about not distributing assets outside of projects, reselling assets, acceptable uses, etc. Where’s the EULA governing Asset Store content?

LOL! You are right Caity, we need definitely much more room for sword-wielding homicidal pirate goblins – or i should say better: we all need a lot more fun and humour for 2011. And this is what i wish to all of you girls&guys: a LOT of fun, a lot of work and a lot of things that makes you smile.

Congrats for the launch of the Asset Store and also for Union – both clever and good ideas.

And Caity: if i decide to make a MultiTouchable turbo-driven hovering rocket-killer-piranha-mechano for the FishTish – it will surely go in to the Asset Strore! :-)

OK regarding submissions is there a review process in place to prevent low quality assets from flooding the store? And also, I hate to ask this what about the content rating of these assets ESRB, PEGI?

I think the asset store is a great idea, offers a good bussiness model. I plan to realize something in the mid term. And also it makes easier to grab the good old free packages like iTween in a centralized site. Unity3D has an excellent cost/benefit for artist and programmers. I hope you never stop the Free version, excellent job.

Helgason once said “making Unity free was a best decision we ever made”. Thanks to this they had a lot more content developers who created a lot of games. And thanks to this Unity is getting more fame and better plugin penetration. Thanks to free edition they sell more Pro version because there are more and more people who make money using Unity. I am one of them.

Tom Higgins once said “we cannot please everyone”. I guess you are just one of those people.

And about your last comment… well that is just embarrassing. An intelligent man keep these kinds of opinions to himself.

I really don’t like seeing content made by unity3d for sale in asset store.
While I do believe that everyone should try to sell their stuff online, it is bit misleading and in conflict of interest to sell prefabs from unity side by side with content made by their customers…
Shouldn’t you be fixing bugs and developing new functionality for unity ? As you know unity is still not game engine no1 and you have a long way to go forward…
Also, large success is mainly due to large number of free goodies that come with unity…
I really hope this is just poor decision and not that unity is in financial problems (80+ people to feed cost 3-4 million usd per year, average of 40 000 usd per employee, real number could be much higher)
Everyone would be much happier if you went back to indie licence of 150 usd, overrunning the forums is not a good idea, and thousands of users is only good for marketing proposes…
And where are the unite 2010 presentation, this is starting to look embarrassing, really guys, if you need help with editing videos, let us know, well find someone to help….

thank you for the store but for creating editor extensions we need a good understanding of editor scripting. please add some documentation to dragDrop class and others or release open source versions of some complex editor windows to help us.
i can write the backedn of a timeline editor and player for unity but creating the GUI for the editor is something which i don’t know how to start


Various types of energy absorbing vehicle bumpers are known in the art. These energy absorbing vehicle bumpers absorb some of the energy of impact, and reduce the likelihood of significant damage to the vehicle. However, it is advantageous to avoid accidents causing such impacts. Various proximity sensors have been used to sense objects adjacent to vehicles. Such proximity sensors avoid accidents by alerting the driver of the vehicle to the presence of an object adjacent to the vehicle, and allowing the driver to stop or steer to avoid any impact. However, these proximity sensors can wear out due to extended use, and can break if bumped or otherwise contacted.
Therefore, there is a need for an energy absorbing vehicle bumper incorporating a device for attaching proximity sensors thereto. The device should insure proper orientation of the proximity sensor relative to the energy absorbing vehicle bumper. Furthermore, the device should easily engage, but simultaneously provide for secure attachment of the proximity sensor to the energy absorbing vehicle bumper. Moreover, the device should protect the proximity sensor from damage, but also allow for easy removal from the energy absorbing vehicle bumper if the proximity sensor is nevertheless damaged or otherwise in need of replacement.


Twilio to Acquire Sendgrid - coloneltcb
https://www.twilio.com/press/releases/release_twilio_acquires_sendgrid
======
tim333
Ah, YC's one that got away - [https://www.quora.com/Why-was-SendGrid-rejected-
from-YCombin...](https://www.quora.com/Why-was-SendGrid-rejected-from-
YCombinator)

>Apparently, only one partner, Robert Morris, reviewed the SendGrid
application, and he gave it a highly negative score, calling it a "spam
company."

~~~
ttul
A spam company. Not a terrible analysis. But perhaps what he missed is that
the company that figures out how to send email well despite having horrible
spammers as customers will make millions.

~~~
hannasanarion
The purpose of y-combinator is not to make tons of money, neither should that
be the default purpose of a company. "Business ethics" is a thing.

~~~
marcus_holmes
Hmm, really?

In a capitalist society (such as we live in, like it or not), we express value
in money. IF your company isn't making money, is it adding value? If people
aren't willing to pay for it, is it actually any use to them?

The notable example for this is Facebook. We don't pay for it. Advertisers do.
That shows where the value is...

~~~
bmiller2
Phillip Morris makes money, where’s its value add?

~~~
marcus_holmes
I smoked for 20 years. I loved driving with a Marlboro Light hanging out of
the window. I chose to do that to my body from my own free will, and willingly
paid to do it. I'm glad I stopped, but I enjoyed it while I did it.

Things that are bad for you can still be valuable. I still willingly buy beer,
even though I know it's bad for me.

Value isn't what you think it is, if you think that smoking provides no value.

------
mindgam3
Smart move. I used SendGrid and Twilio years ago, they basically solved the
email and SMS dev-ops problem for more product focused engineers like myself.
Two companies with a solid product consolidating, hopefully that will lead to
better integration and more good news for devs moving forward. Congrats to
SendGrid team!

------
usaphp
I’ve used sendgrid for a while but had issues with deliverability. Then I
moved to postmarkapp [1] and have not had any issues so far.

1 - [https://postmarkapp.com](https://postmarkapp.com)

~~~
quintin
But postmark is only transactional. Not mass mailing.

~~~
samwillis
That’s the point, it helps keep the reputation of their servers high and
ensures fast delivery of transactional email.

------
jchw
I've had some negative experiences working with SendGrid a few years ago, but
honestly I think they've improved a great deal in the last couple of years.
Some stuff still could use some improvements (API, UI) but it felt a lot more
stable and reliable last time I used it.

Still, I miss Mandrill the most.

~~~
gscott
Mandrill was amazing. Then they jacked up the price and tossed it into
MailChimp.

~~~
disiplus
I kinda love that they jacked the price up so the delivery is great. The only
thing that i hate is (i use the SMTP endpoint) is that the BCC does not work.

~~~
beckler
BCC is probably disabled to discourage you from using mandrill for
mass/marketing emails.

~~~
disiplus
no, it kinda works, but not like a regular email. like when i send some email
with to: contact@abc.com with bcc: we@def.com the receiver of the bcc sees the
full email header and sees who the original receiver is. but with mandrill you
simply get two emails, one for the original receiver and one for bcc, both
send with to fields, the bcc recipient does not see who the original recipient
is

------
theCricketer
I'm not too knowledgeable on how these deals work, but figured someone on HN
would know:

A quick Google search shows that Twilio's market cap is currently $7.4
billion. Does this $2 billion "all-stock" transaction mean that they are
giving away over a quarter of the company to pay for this acquisition? Or how
else should I read this?

~~~
seanlinehan
Most likely this will be done by issuing new equity. The press release states
that they will exchange Twilio Class A common stock per share of SendGrid
common stock. They defined the exchange ratio (that's why the price is ~$2B
and not a specific number) and will issue as many shares as they need to based
on that ratio:

> 0.485 shares of Twilio Class A common stock per share of SendGrid common
> stock

Technically, issuing new shares dilutes every existing shareholders'
ownership. But, if the market deems this to be an intelligent combination that
was valued correctly, the market cap of the combined company should be ~$9.4B
or (ideally) more. So the goal is for existing shareholders to hold, at worst,
the same amount of value in dollar terms as before or, at best, hold more
value as a result of the acquisition.

~~~
panarky
SendGrid is up 17% while Twilio is down 3%.

------
cjhanks
Approx $26 million of net profit fetched $2 billion in acquisition? A
somewhere between 65 and 75x multiple?

That doesn't seem right. Are my numbers wrong?

~~~
drinkzima
SaaS companies trade on revenue or free cash flow multiples for the most part:

[https://medium.com/@alexfclayton/how-much-is-your-saas-
compa...](https://medium.com/@alexfclayton/how-much-is-your-saas-company-
worth-82451bc44433) [https://www.bvp.com/strategy/cloud-
computing/index](https://www.bvp.com/strategy/cloud-computing/index)

~~~
cjhanks
Yeah, btw I think I cited quarterly. Still I think the multiple is too high. I
understand 15x for a private company and 10x for a public. But in an inflated
market, higher than that? If I had internet other than my phone I would look
it up.

~~~
ksec
So $100M Profit per year? $2B is only 20PE, sounds fair to me, in todays stock
market where many are trading at 30 - 40+.

------
no1youknowz
For those that use email for marketing. Is there anyone cheaper/better than
Elasticemail?

1m emails/mo:

elasticemail.com - $90

sparkpost.com - $474

mailgun.com - $515

sendgrid.com - $534.95

smtp.com - $900

Or is there anyone between elasticemail / mailgun worth considering?

Thanks

* Please don't suggest Amazon SES.

~~~
maltalex
What about setting up your own SMTP server? I’m genuinely curious.

Just configure SPF and DKIM, and send email basically for free, no? Is there
some back magic that these services perform to avoid getting blacklisted?

What’s the benefit of using one of these services besides a nicer API and a
dashboard?

~~~
_pob
At a previous company I worked at we used to manage our own email
infrastructure before finally switching over to a dedicated service. There are
a few problems if you are sending over bulk email that is customized per user
when running your own SMTP service.

1\. IP address reputation - Keeping your IP addresses reputable is not a
simple task. It requires balancing your emails for popular destination domains
(gmail.com, aol.com, yahoo.com, etc.) across multiple external IP address. It
requires you to deal with many different conflict resolution departments, who
don't care about email, when a dispute comes up. It's practically a
requirement to use a service like ReturnPath to maintain your reputation.

2\. Throttling - When doing it yourself you need to throttle yourself. This is
problematic on "big" days, especially when your marketing department wants to
send many millions of emails for a big product push, promotion, or on days
like black friday/cyber monday.

3\. Hiring - A lot of people think sending email is easy. When you get up to
the multiple million per day mark things start to fall apart. Do you have
someone(s) on staff who really know sendmail/postfix/qmail inside and out?

4\. Monitoring - sendmail/postfix/qmail are often times hard to monitor. You
have to put together all of your stats. You have to put together all of your
alerts. If you aren't really experienced with bulk email, you won't know what
to look for and that can impact your reputation. Also consider your logging
infrastructure. sendmail/postfix/qmail are noisy.

5\. Cost - All of the points above play into the cost aspect of it. Is it
cheaper to run it yourself, pay for all of the services and salaries, etc. Or
is it actually cheaper to just use sendgrid/mailgun/etc. IP address reputation
services are not cheap. Infrastructure cost is also something to consider. AWS
IPs all have pretty terrible reputations so running this in AWS (and maybe
other cloud providers) is a non-starter since no one will accept your email.

If you've got the expertise and you are sending a massive amount of emails
then it might be worth it to run your own infrastructure, but at the end of
the day, a single developer consuming an API is often easier and less
problematic.

~~~
jcalabro
The other important one, at least in the US, is unsubscribe/CAN-SPAM
compliance [0]. You've got 10 days to comply or you'll be at risk of up to a
$41k fine per email!

[0] [https://www.ftc.gov/tips-advice/business-
center/guidance/can...](https://www.ftc.gov/tips-advice/business-
center/guidance/can-spam-act-compliance-guide-business)

------
1_800_UNICORN
Wow, this is a big deal! Great move by Twilio, bringing together the premier
SaaS SMS provider and the premier SaaS transactional email provider under one
roof.

It's only too bad that SendGrid has struggled to get its marketing email
solution off the ground in a meaningful way. If anyone was going to eat
MailChimp's lunch, SendGrid would be my choice as top contender. And yet
despite SendGrid releasing many iterations of their marketing email solution
over the past 5 years they've never seemed to get a lot of success outside of
their bread-and-butter transactional email vertical. Their marketing solution
brings in less than 20% of total revenue last I heard.

~~~
cheez
I don't know if MailChimp is on its way down or what. I recently reset my
phone before realizing that 2FA would be affected. Now, I was encouraged to
enable 2FA, but I can't get back into my account and MailChimp isn't getting
back to me about what I can do if I don't have any backup codes. I know it's a
tough situation, security-wise, but I can send my passport if they need it!

~~~
saana
I remember MailChimp/Mandrill removed their free tier, making me move to
Sendgrid.

Only because of that I hope they go under sooner than later.

~~~
blacksmith_tb
Ouch, that forced transition was certainly developer-hostile, but I don't want
to see Mailchimp go bankrupt just because they pulled the plug on me (and
switching to Sendgrid was basically an improvement for me, anyhow).

------
orliesaurus
The developer-evangelist approach from both companies has been top-notch:
Supporting a lot of smaller people/events/organizations.

Kind of shocked that SendGrid didn't IPO but still this is a great victory for
both teams!

~~~
zbruhnke
SendGrid did IPO, its traded under SEND on the NASDAQ

~~~
kernx16
NYSE not NASDAQ

------
ErikAugust
What are the benefits of using SendGrid over AWS SES? I take it the overall
API ease-of-use / UX is a real factor.

I ask, as I believe that SendGrid is now built on top of AWS:
[https://sendgrid.com/blog/sendgrid-joins-amazon-web-
services...](https://sendgrid.com/blog/sendgrid-joins-amazon-web-services-
partner-network/)

There are people who can confirm or deny this better than I can.

~~~
SargeZT
UX is huge. Sendgrid is absurdly easy to use, and at least 3 years ago, SES
was an impenetrable mass to me. I got my company up and running on Sendgrid in
like 20 minutes.

Maybe it's easier nowadays, but at least a few years ago it was a night and
day difference.

~~~
village-idiot
Using it today, still complete garbage UX wise.

My least favorite aspect is that the API always claims a success _even if that
address is in the global blocklist_ , the only way to learn about bounce backs
is to subscribe via SNS.

Also the UI is effectively useless.

------
nodesocket
It's interesting SendGrid is worth so much, while I believe they were one of
the first players in the outbound space, competitors such as Mailgun, Amazon
SES, and Postmark have very competitive products at lower prices. Seems like a
heavily commoditized business. I'm guessing SendGrid just has a lot of
"enterprise" clients and contracts that rake in revenue.

~~~
kornish
The word "just" implies that getting enterprise clients is easy. If they're
established (i.e. old) enough and their support is good enough to justify the
price point and support substantial enterprise revenue, that's a fine
differentiator.

~~~
tomasien
Exactly. We use them because they have a robust feature set that works for our
use case (highly regulated data, etc). That's not a trivial thing. It's not a
"moat" but it's wall.

~~~
twunde
I wish we could use them. Too bad they're not HIPAA-compliant (Mailgun is the
only big provider that is, last time I checked)

~~~
tomasien
That's a smart move by Mailgun, I'm sure Sendgrid will get there. That's the
kind of thing people don't think about with enterprise customers.

\- Compliance \- Support \- Security (not keeping things secure - offering
custom security options. SAML, user roles, permissions, IP whitelisting, etc)
\- Customization

Building to support big complex customers is hard and if you get it right from
a product and sales perspective, the inertia you can build is massive.

------
sergiotapia
I reach for these any time a client asks for SMS and transactional email.

Their UX is miles better than any AWS offering so I am very excited.

------
Ologn
Wasn't Sendgrid rejected by Y-Combinator? I guess it can be hard to tell at
the early stage.

~~~
nil_pointer
Is there a curated list anywhere of YC rejects that made it? That'd be neat.

~~~
mikeyouse
VCs often call this their "anti-portfolio", some publish their lists.
Bessemer's is super impressive:

[https://www.bvp.com/portfolio/anti-
portfolio](https://www.bvp.com/portfolio/anti-portfolio)

They were pitched & passed on: AirBnb, Apple, Ebay, Facebook, Google, Intel,
Intuit, Paypal, Snapchat, Tesla..

~~~
dhruvarora013
This is a phenomenal list, and quite inspiring if you look at it in the right
light. Hindsight is 20/20 and VCs make plenty of mistakes.

------
g8oz
Congratulations to the Sendgrid team. We've been very happy with the service.
Sending emails is not our core competency and with Sendgrid we don't have to
worry about deliver ability. If I ever get around to hosting my personal email
I would definitely use them for SMTP so that I can focus on having my inbox
under my control. The free tier is 100 outbound emails a day which is more
than enough for me.

------
rsync
Why is it so hard to email from twilio ?

Let me explain ...

The easiest way to do things with twilio is to use a 'twiml bin' because you
don't need any external hosting or any third party - you code the twiml bin
right in the twilio interface and it resides there. The end.

However, there is no email "verb" or any email functionality of any kind
available - not even in the new twilio functions.

Let's say you want to cc: an incoming SMS to an email address in addition to
its phone destination, you need to host code somewhere.

Why isn't there an email verb for twiml bins ?

I don't want a sendgrid account. cc'ing an SMS is a very, very simple and
obvious use-case and I should be able to do it right in a twiml bin (or, at
least, in a function ...)

------
buybackoff
Probably due to "send" in their name incoming email parsing was terrible for
years and my two very specific tickets was ignored. Some crazy mess with
encoding parsing, while MailGun does all the dirty job and gives clean UTF8.
After moving to MailGun cannot find any difference in sending simple emails
for apps (email confirmation /pass recovery)

------
lquist
Makes a lot of sense, and really smart to do it all-stock even if they're
paying a premium to do so. This late into a bull market it offers Twilio
significant downside protection on the deal.

------
andyfleming
What potential downsides should SendGrid customers brace themselves for?

~~~
kernx16
Nothing. So far the details of what SendGrid will look like with the
acquisition is yet to be determined, but it's pretty obvious that SendGrid
will be SendGrid. If anything, you'll probably be able to integrate with SMS
and voice send and receive at a discounted price.

------
objektif
Is this worrisome for the future of twilio? Now it sounds like they are
entering yet another low margin commoditized business. What could be the
synergies with the existing business areas?

~~~
vertex-four
Both sending SMSes and emails require relationship management with the other
companies involved - the mobile networks and the large email providers - and,
related, large-scale sender-side spam prevention.

Aside from that, Twilio can now act as almost a one-stop shop for your
outbound communication needs - all that’s left is physical letters.

~~~
mooreds
I bet twilio buys lob.com next :)

------
alliecat
Comment; I find myself using Nexmo and Mailgun a lot. Perhaps there's an
acquisition that needs to happen there, too?

------
dirtylowprofile
The site is not responsive. I can’t read on my mobile.

------
hiram112
$2 Billion for an emailer...

Anybody know the valuation pre GDPR?

------
soneca
Completely off-topic, but it is intriguing me: why is this post remaining #1
on HN for some time if the post about Paul Allen has 3x more votes and is one
hour younger. Both with an ordinary number of comments.

My assumptions about HN's algorithm seem to be way off

------
MichaelApproved
It’s wild that the announcement of a $2 billion deal isn’t mobile friendly.
The font is so small, I bet desktop customers also have trouble reading the
press release.

~~~
h1d
I just wonder what these people think in terms of designs when their fonts are
way too small for anyone but teens to figure without getting closer to the
screen.

------
ricokatayama
wow, it's great to see a player from the modern era acquiring the bahamut from
the past.

~~~
kevindqc
Is there a modern/past player here? Both companies were founded within a year
- 2008 and 2009


derivative of -18*g**3 + 405*g**2*z - 6*g*z + 2*z + 1525 wrt g?
-108*g + 810*z
Find the first derivative of -3380*c**3*w - 115*c**3 + 2*c**2*w - 3*c*w - w - 3924 wrt w.
-3380*c**3 + 2*c**2 - 3*c - 1
Find the second derivative of o**3*s**3 + o**3 + o + 18234*s**4 - 52*s wrt s.
6*o**3*s + 218808*s**2
What is the first derivative of -32456*v + 44670 wrt v?
-32456
Find the third derivative of -3799787*c**3*p + 2584980*c**2*p - 2*c*p wrt c.
-22798722*p
Find the second derivative of k**3 + 790474*k**2*s - 2379*k*s - 3*k + s - 54 wrt k.
6*k + 1580948*s
Find the second derivative of -b*m*t**2 - 5061*b*m*t + 85388*b*t**2 - 28*b - 2*m*t**2 + t**2 wrt t.
-2*b*m + 170776*b - 4*m + 2
Find the second derivative of 81018*o**2 - 56696*o wrt o.
162036
Find the first derivative of -1097*l**3 - 7*l**2 + 111811 wrt l.
-3291*l**2 - 14*l
What is the second derivative of -138*a*r**2 - 4*a - 601*r**2 + 4145*r + 2 wrt r?
-276*a - 1202
What is the third derivative of -3*t**4*x - 94850*t**4 + 41*t**2*x + 316*t**2 - 7*t*x wrt t?
-72*t*x - 2276400*t
Find the first derivative of 276789*w**2 + 336142.
553578*w
What is the derivative of 4920*k**3 - 24*k**2 + 2*k - 1956150?
14760*k**2 - 48*k + 2
What is the third derivative of 28986*q**3*z + 34*q**2*z - 2*q**2 - 2*q*z + 61*q wrt q?
173916*z
Find the second derivative of -351472*k*p**2 - 67*k*p - k + 5*p**2 - 30*p - 5 wrt p.
-702944*k + 10
Find the third derivative of -203281*x**3 - 4*x**2 + 3172*x + 4 wrt x.
-1219686
Find the third derivative of 233200*y**3 - 28*y**2 - 196*y - 10.
1399200
Find the third derivative of -6827*b**2*q**3*r**2*v + 2*b**2*q**3*v - 14*b**2*q*r**2 - b**2*q*r - 2*q**2*v + 11*r*v wrt q.
-40962*b**2*r**2*v + 12*b**2*v
What is the derivative of 15*w**3*z + 6*w**3 + 13497*w**2*z - 3357*w + 1 wrt z?
15*w**3 + 13497*w**2
Find the third derivative of -2*a**4*d**3 - 160366*a**4*d - 11*a**2*d**3 - 2151*a**2*d**2 wrt a.
-48*a*d**3 - 3848784*a*d
Find the first derivative of -f*l**2*v**2 - 358689*f*l**2*v - 46264*l**2*v - 24*v**2 wrt f.
-l**2*v**2 - 358689*l**2*v
Differentiate -55*i**4*w + 799*i**3*w**2 + 2*w**2 + 4*w - 952 with respect to i.
-220*i**3*w + 2397*i**2*w**2
Differentiate -2383*q**2 - 32*q + 27173 with respect to q.
-4766*q - 32
Find the third derivative of 19095*j**3*m*p + 4*j**3*p + 20*j**2 - 6*j*m*p - 8*m wrt j.
114570*m*p + 24*p
What is the second derivative of -2*q**2*w**3 - 94966*q**2*w**2 + 89209*q*w**3 + w**2 wrt q?
-4*w**3 - 189932*w**2
What is the second derivative of 2041*m**5 + 7*m**4 + 72153*m + 2 wrt m?
40820*m**3 + 84*m**2
Find the second derivative of 98303*l**2*r**5 - 33*l**2*r + 2*l**2 + 33*l*r wrt r.
1966060*l**2*r**3
Find the third derivative of 140*b**4 - 74*b**3 + 2*b**2 + 59766.
3360*b - 444
What is the second derivative of -1047463*o**5 + 317613*o?
-20949260*o**3
What is the first derivative of -216317*b - 271627 wrt b?
-216317
What is the second derivative of 15358*b**2*t + 76*b*t + 75*b - t wrt b?
30716*t
Find the third derivative of -78*f*h*u**3 - 2*f*h*u**2 + f*h*u - 4*f*u**3 + 424584*f*u**2 - 2*h*u**3 + 30*u**3 wrt u.
-468*f*h - 24*f - 12*h + 180
Find the third derivative of -s**6 - 1705*s**3 - 49475*s**2.
-120*s**3 - 10230
Find the third derivative of -2249422*l**3*t - 2*l**2*t + 6*l**2 + 1314*l*t + 2*t + 1 wrt l.
-13496532*t
Find the first derivative of 196491*h - 27253.
196491
Find the second derivative of 121*w*y**3 - 26*w*y**2 + 11*w + 426*y wrt y.
726*w*y - 52*w
What is the third derivative of -10107*c**3 + 2*c**2 - 24431*c wrt c?
-60642
What is the second derivative of -51502*f**2*k**2 + 5*f**2*k - 11*f - 22*k wrt k?
-103004*f**2
What is the second derivative of 113509*p**3*v**2 - 3*p**3*v + 13123*p**2*v - 2*v**2 - v wrt v?
227018*p**3 - 4
Differentiate 14*c**4 - 2*c**2 + 3*c*f**2 + 4591*c - 268622*f**2 wrt c.
56*c**3 - 4*c + 3*f**2 + 4591
What is the second derivative of 107*u**3*x + 45*u**2*x - u**2 + 13964*u*x wrt u?
642*u*x + 90*x - 2
What is the second derivative of 18*n**3*t**2 + 2*n**3*t - 13*n**3 + 5696*n**2*t**2 + 114*n**2*t - 45 wrt t?
36*n**3 + 11392*n**2
What is the second derivative of -28255*s**5 - 2*s + 7958?
-565100*s**3
What is the first derivative of 738175*g - 609472?
738175
What is the first derivative of -14320*a*i**3*o**3 - 9*i**3*o**3 - 4707*i*o**3 wrt a?
-14320*i**3*o**3
What is the third derivative of -21906*i**3 + 41059*i**2?
-131436
Find the second derivative of 3528632*t**2 + 2*t + 220564.
7057264
Find the second derivative of -195985*v**2 - 45087*v.
-391970
What is the second derivative of 781*l**3 + 229*l**2 + 1162991*l wrt l?
4686*l + 458
What is the third derivative of 103918*b**3*h**3 - 2800*b**2*h**2 - 23*h**3 wrt b?
623508*h**3
Differentiate -1171697*v + 930884 with respect to v.
-1171697
Find the second derivative of 51576*b**2*p**3 - b*p**2 - 3*b*p + 492*b - p**3 wrt b.
103152*p**3
Find the second derivative of -1156353*a**2 - 48069*a + 16.
-2312706
What is the third derivative of 50*f**2*x**3 + 57*f**2 + 2*f*x**2 + 38*f*x - 183*x**3 wrt x?
300*f**2 - 1098
Find the third derivative of -1229895*g**3*i + 2288*g**2*i - 2*g**2 + 61*i wrt g.
-7379370*i
What is the third derivative of -58292*i**2*j**3 + 1534*i**2*j**2 + 73*i**2 + 33*i*j**3 wrt j?
-349752*i**2 + 198*i
Find the third derivative of -47659*y**5 - 4379*y**2 + 4*y + 2 wrt y.
-2859540*y**2
Find the third derivative of -m*q**3*t**3 + 5*m*q**3*t + 359*m*q**3 + 5*m*q**2*t + 2*m*t**3 + 9*m*t - 71*q wrt q.
-6*m*t**3 + 30*m*t + 2154*m
What is the third derivative of -798*r**2*t**3 + r**2 - r*t**2 + 2168*r*t + 3*t**3 - 4*t**2 wrt t?
-4788*r**2 + 18
Find the third derivative of -b**5 - 544605*b**4 + 54194*b**2 + 4*b - 1.
-60*b**2 - 13070520*b
What is the derivative of 2*p**2*s + 387*p**2 - 108*p*s + p - 1265975*s - 2 wrt p?
4*p*s + 774*p - 108*s + 1
What is the third derivative of 39394*g**4 - 4*g**2 - 2*g + 442 wrt g?
945456*g
Find the third derivative of -11*d**6 - 326*d**3 - 1126*d**2 - 17.
-1320*d**3 - 1956
Find the first derivative of c**3 - 69561*c + 587168 wrt c.
3*c**2 - 69561
Find the second derivative of -19*d**3*t**5 - 13146*d**3*t**3 - 6*d**3*t + 13*d**3 + 1848*d**2*t wrt t.
-380*d**3*t**3 - 78876*d**3*t
Differentiate 30742*t**3*x**2 - 2*t**3*x + 10540*t**3 - t*x with respect to x.
61484*t**3*x - 2*t**3 - t
Differentiate -6089*f**3 - 48722.
-18267*f**2
Find the third derivative of -544524*v**5 + 5097*v**2 - 2*v - 4 wrt v.
-32671440*v**2
Differentiate 32*g**2*m**2 + g**2 + 186*g*m**2 + g - 17136 wrt m.
64*g**2*m + 372*g*m
Find the second derivative of -1336*x**5 + 7*x**4 + 87*x - 65 wrt x.
-26720*x**3 + 84*x**2
Find the third derivative of -71*c*k**4 + 117*c*k**3 - c*k**2 + 11*c*k - 11*c - k**4 - 2*k**3 - 38*k wrt k.
-1704*c*k + 702*c - 24*k - 12
What is the second derivative of 17955*r**4 - 35*r + 519?
215460*r**2
What is the second derivative of 18*a**2*t**3*w - 151*a**2*t*w + 2*a**2*w + 8*a*t**3 + a*w - 773*t**3*w wrt a?
36*t**3*w - 302*t*w + 4*w
What is the first derivative of -3*v**3 - v**2 - 1820*v + 2705 wrt v?
-9*v**2 - 2*v - 1820
What is the third derivative of -3979299*f**2*r**3 - 6*f**2*r**2 + 667*f**2 + 5*f*r - 4*r wrt r?
-23875794*f**2
What is the second derivative of -3*d**5 - 119566*d**3 + 6*d - 4175?
-60*d**3 - 717396*d
Differentiate -883653*p*z - 2750*p + 2*z - 59 wrt z.
-883653*p + 2
What is the second derivative of 42877*k**3 + k**2 + 365412*k - 1?
257262*k + 2
Find the second derivative of -56990*a**2 - 641994*a.
-113980
What is the second derivative of 370*s**4 - 40*s**3 + 7*s**2 + 4*s - 365 wrt s?
4440*s**2 - 240*s + 14
What is the first derivative of 64800*f**4*l - 2*l + 176258 wrt f?
259200*f**3*l
Differentiate -17402*n**2*r**3 - 1582*n**2 + n - 3 with respect to r.
-52206*n**2*r**2
Find the third derivative of -146583*c**3 + 7*c**2 - 9999*c.
-879498
Find the third derivative of -b**3*n**3 + 3256*b**3*n**2 - b**2*n - b*n**4 - b*n - 21*n**4 wrt n.
-6*b**3 - 24*b*n - 504*n
Find the second derivative of -2*w**2*y**2 - 2*w**2*y - 346*w**2 - 606*w*y**2 - y**2 + 4*y + 2 wrt y.
-4*w**2 - 1212*w - 2
Differentiate 2*g*m**3 - 29*g*m - 168830*g + 2*m**3 + 6*m with respect to m.
6*g*m**2 - 29*g + 6*m**2 + 6
What is the first derivative of 44746*r**4 - 21996?
178984*r**3
What is the second derivative of 15030*l**3*w**5 - 23*l**3*w - 7*l**3 - 2*w - 10 wrt w?


Latest

The digital economy contributed $79 billion to the Australian economy in 2013/14, representing 5.1% of Australia’s gross domestic product, while 22% of employees now work intensively with ICT, according to a new Deloitte Access Economics report.

The business buzzwords set to dominate 2013

Tuesday, 22 January 2013 | By Oliver Milman

YOLO. Swag. Totes. Although Generation Y has a great deal to answer for when it comes to questionable additions to the lexicon, it’s worth remembering that the business world also has its fair share of linguistic aberrations.

Terms such as ‘helicopter view’ and ‘eat your own dog food’ do little to help improve your business. Often, they describe quite obvious things, such as testing your products and having a proper strategy, that you should be doing anyway.

Each year seems to usher in new buzz terms, such as 2012’s obsession with ‘big data.’ While many are vapid, some actually describe significant trends that you should be across.

Here are five buzz phrases that you will probably be hearing a great deal about in 2013:

1. SoLoMo

An amalgamation of the words social, local and mobile, SoLoMo is a term gaining traction among marketing experts tracking consumer behaviour.

The concept looks to tap into the increasing use of mobile phones by adding local information to search engine results. Therefore, people searching for a product or service you provide will be attracted to you due to your location.

This can be taken a step further by pushing offers to mobile phone users based on their location. Either way, it’s increasingly important that your business is optimised for local search by giving clear information about your location and offering a ‘click to call’ option so customers can easily get in touch.

Interestingly, actual sales conversions via smartphones are still very low – around 1% on iPhones and a tad over that for Android-enabled devices.

People are far more likely to use their phones to find out location and product details before going in-store to fulfil the purchase. Therefore, SoLoMo.

2. Acqui-hire

An "acqui-hire" is when a company buys a start-up to obtain the start-up's team. It’s easier than owning or developing its products or technology.

It’s now becoming a trend. Acqui-hires in recent times include Facebook’s acquisition of Instagram and Twitter’s acquisition of blogging platform Posterous.

It’s a tough choice. There is the prospect of money and rewards for all that hard work and creativity.

On the other hand, you are losing control. The company’s founder is losing their baby. And when a company has been taken over, certain roles may no longer be tenable.

All in all, it’s not a terrible position to be in. Your skills and business savvy have been recognised by a bigger player and you have the chance to cash in your chips.

But not everyone takes the money and runs. Queensland games developer Halfbrick, creator of Fruit Ninja, has been approached many times by overseas and local companies.

It’s not interested in becoming part of a bigger company. It has knocked back every offer because it does not want to lose that creative drive.

Halfbrick executive producer Ben Vale says the company would be suspicious of any predator that told them they could keep their entrepreneurial drive. The money, he says, is less important than the creativity.

“I don’t think there would be anyone wanting to acquire without having some control over the creativity,” Vale says.

“We are trying to keep that creative control to make sure our products are as good as they can be.”

Story continues on page 2. Please click below.

3. Pain point

OK, so ‘pain point’ isn’t exactly a new term. You will probably find it in dusty old business manuals that implore you to find a consumer problem to solve, rather than start your business with a cool idea.

But the term is taking on a new meaning due to the more seamless nature of improving a business’ procedures. It’s now about how you do things, not just what you do.

“At the start of its semiotic life, a pain point was a thing – a point at which some problem or inefficiency caused a business to feel the pain,” explained Kevan Christmas, a marketing and advertising expert, to Behind the Buzzwords.

“Then it was a moment – when the customer became so exasperated with a situation that they actually acted in response.”

“Most recently, pain point has been used to describe a constraint – a key limiting factor. In some cases, solving a pain point doesn’t fix a problem, but creates a new market entirely.”

“Pain points used to be identified in order to solve a problem so that a business could take a specific action.”

“Now they are what makes a business take action – faster and faster. We’ve moved to a world of no friction, in which everything is streamlined.”

“It began with simplification of software and web interfaces, hiding less-used functions deep in menus.”

“Now, as a result of the propensity to reduce all processes to two clicks or less, we’re left wondering: ‘How exactly do I control my privacy settings?’”

4. Wantrepreneur

Much like ‘pain point’, ‘wantrepreneur’ isn’t exactly a bold new concept. It’s a familiar term that’s been given a slightly daft name.

The term in question? Procrastinator. Wantrepreneurs are wannabes who ‘want’ to be an entrepreneur.

They talk about it, dream about it and even act like they are running a business. But they don’t actually do anything. They sit and wait.

This is a major problem as entrepreneurship is all about action. Unless you are perpetual whir of motion in the early days of a start-up, the chances are the start-up isn’t happening.

“It is almost like an illness,” says physiologist Eve Ash.

“It can creep up on you; a moment's hesitation to do that important task, a feeling of having tried before, a sudden paralysis. What is going on in your mind? A battle of wills – but how can it be a battle when you are the only player?”

5. Twinternship

You know all of those unpaid work experience kids that are handed the keys of a business’ Twitter account? They now have a name for their situation – ‘twinternship.’

Many large firms have realised they can use this young, free labour in lieu of a proper social media strategy. Pizza Hut, for example, saw its Twitter followers rise from 3,000 to 13,000 in just a few weeks after plonking 22-year-old Alexa Robinson at the controls.

There are obvious dangers with giving unpaid interns free reign on your Twitter and Facebook pages, but for large corporates the benefits appear to be outweighing the risks.

As a start-up you may be tempted to indulge in a twinternship yourself, but beware. You should have a direct, authentic line to your customers yourself – don’t readily give up one of the best ways to do this to someone who doesn’t know or care that much about your business.

StartupSmart

A free and small business advice website with a variant online start-up business community, whether you are looking for a business mentor or business ideas, StartupSmart will help you in starting a business the smart way.


Q:

SQL Query in suspended state causing high CPU usage

Environment detail: SQL Server 2008 R2. I have applications running on JBoss that access the DB using JDBC driver.
Issue: My online DB server was experiencing high CPU usage.
Using the following query I was able to determine there are 2 queries (Select command) in suspended status (wait type - CXPACKET) for nearly 10 minutes and going on. I believe this is the cause of high CPU usage.
 USE MASTER GO

 SELECT scheduler_id ,
        runnable_tasks_count ,
        pending_disk_io_count
 FROM   sys.dm_os_schedulers
 WHERE  scheduler_id < 255

 SELECT qs.percent_complete ,
        qs.session_id ,
        scheduler_id ,
        blocking_session_id ,
        qs.status ,
        command ,
        wait_time ,
        wait_type ,
        last_wait_type ,
        wait_resource ,
        ST.text ,
        host_name ,
        program_name /*
 ,SUBSTRING(ST.text, (QS.statement_start_offset/2) + 1,
     (    (CASE statement_end_offset
           WHEN -1 THEN DATALENGTH(st.text)
           ELSE QS.statement_end_offset END - QS.statement_start_offset  )/2 ) + 1) AS statement_text   */   --, qp.*
 FROM   sys.dm_exec_requests qs
        LEFT JOIN sys.dm_exec_sessions es ON ( qs.session_id = es.session_id )
        CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS ST
 --     CROSS APPLY sys.dm_exec_query_plan(QS.sql_handle) as qp where qs.session_id = 50 and qs.session_id != @@SPID

 SELECT CASE WHEN Requests.sql_handle IS NULL THEN ' '
             ELSE SUBSTRING(Statements.text,
                            ( Requests.statement_start_offset + 2 ) / 2,
                            ( CASE WHEN Requests.statement_end_offset = -1
                                   THEN LEN(CONVERT(NVARCHAR(MAX), Statements.text))
                                        * 2
                                   ELSE Requests.statement_end_offset
                              END - Requests.statement_start_offset ) / 2)
        END AS StatementText ,
        QueryPlans.query_plan AS QueryPlan ,
        Statements.text AS Batch_Text ,
        Sessions.session_id ,
        Sessions.Login_Name ,
        Sessions.Host_Name ,
        Sessions.Program_Name ,
        Sessions.Client_Interface_Name ,
        Requests.wait_time ,
        Requests.cpu_time ,
        Requests.total_elapsed_time ,
        Requests.reads ,
        Requests.writes ,
        Requests.logical_reads ,
        Requests.row_count ,
        Requests.granted_query_memory * 8 / 1024 AS Granted_Query_Memory_MB ,
        LEN(Statements.text) AS Batch_Text_Length ,
        Requests.statement_start_offset / 2 AS Statement_Start_Offset ,
        CASE WHEN Requests.statement_end_offset = -1
             THEN LEN(CONVERT(NVARCHAR(MAX), Statements.text)) * 2
             ELSE Requests.statement_end_offset
        END / 2 AS Statement_End_Position ,
        ( CASE WHEN Requests.statement_end_offset = -1
               THEN LEN(CONVERT(NVARCHAR(MAX), Statements.text)) * 2
               ELSE Requests.statement_end_offset
          END - Requests.statement_start_offset ) / 2 AS Statement_Text_Length
 FROM   sys.dm_exec_session Sessions
        INNER JOIN sys.dm_exec_requests Requests ON Sessions.session_id = Requests.session_id
        CROSS APPLY sys.dm_exec_sql_text(sql_handle) Statements
        CROSS APPLY sys.dm_exec_query_plan(plan_handle) QueryPlans
 WHERE  Sessions.session_id != @@SPID

 SELECT *
 FROM   sys.dm_exec_requests
 WHERE  blocking_session_id != 0

Any suggestions on how I can kill these queries in suspended state?

A:

Although you've accepted an answer that informs you how to kill the session, this is a kind of problem that could repeat itself and so you should probably be aware that the CXPACKET wait type in itself is not a problem, but tends to indicate an issue with the execution of a parallel query.
Brent Ozar has posted a good explanation (with a video) of what a CXPACKET wait is and how you go about reducing them. As an example, if your parallel query runs across 5 CPUs and 4 of them have completed their allocated workload, the waiting on the 5th CPU to complete is what is identified as the CXPACKET wait.
You can start to alleviate CXPACKET waits by looking into setting the Maximum Degree of Parallelism (MAXDOP) on the individual query and/or the Cost Threshold for Parallelism on the instance, both of which are explained in the article.

A:

CXPACKET is not the cause of high CPU workload. CXPACKET simply means that the query has gone parallel and that the thread which is reporting CXPACKET is waiting for another thread of the query to run.
When I see queries waiting on CXPACKET this tells me that there's probably some index or query tuning which needs to happen. Once the indexes and query have been tuned then you need to look at the other wait types for the other threads for that query and see what the other threads are waiting on. One of them will be waiting on something other than CXPACKET. That's the problem that you need to address.

A:

Get the session_id returned from your queries above and use the KILL command to kill the queries that are hung.  For example if the session_id of the suspended query was 86, then you would run the following.
KILL 86;

IMPORTANT: if any of the queries run batches of insert, update, or delete statements and are not in a transaction so that all changes get rolled back, then you may run into data consistency problems if you kill the query in the middle of processing.