Introduction {#section6-1758835920925991}
============

Aromatase inhibitors (AIs) suppress aromatase activity, thereby reducing estrogen concentrations and leading to improved survival in patients with hormone receptor-positive breast cancer. However, this improved survival concomitantly increases the relative risks of age-associated diseases, including cardiovascular events, in patients with early breast cancer.^[@bibr1-1758835920925991]^ Altered lipid profiles are considered as the likely means through which the relative risks for cardiovascular events increase in these patients.^[@bibr2-1758835920925991]^

Third-generation AIs such as exemestane, letrozole, and anastrozole have proven to be more active than tamoxifen for postmenopausal women diagnosed with hormone receptor-positive breast cancer.^[@bibr3-1758835920925991]^ Consequently, AIs are frequently used as adjuvant therapy in patients with hormone receptor-positive breast cancer as per National Comprehensive Cancer Network (NCCN) and European Society for Medical Oncology (ESMO) guidelines. However, long-term estrogen deprivation by AI treatment also affects the physiological functions of estrogen and leads to changes in lipid profiles as well as bone loss.^[@bibr4-1758835920925991]^

Several studies involving patients with early breast cancer have recognized that cardiovascular disease, related to altered lipid profiles, is the leading cause of death among elderly survivors.^[@bibr5-1758835920925991],[@bibr6-1758835920925991]^ Studies estimating the effect of AIs in early breast cancer patients reported contradictory results in terms of net changes in the composition of specific lipid fractions. Furthermore, diverse endpoints and time points were used for analysis in these studies, further confounding the results.^[@bibr7-1758835920925991][@bibr8-1758835920925991][@bibr9-1758835920925991]--[@bibr10-1758835920925991]^

Although both steroidal and nonsteroidal AIs substantially decrease whole-body aromatization and inhibit the synthesis of estrogen in postmenopausal women, their chemical structure and mechanism of action differ which may lead to differential effects on blood lipids.^[@bibr11-1758835920925991]^ Nonsteroidal AIs such as letrozole (C~17~H~11~N~5~) and anastrozole (C~17~H~19~N~5~) interact noncovalently and reversibly with the heme moiety of aromatase. In contrast, the steroidal AI, exemestane (C~20~H~24~O~2~), forms an irreversible covalent bond with aromatase. The active site of aromatase recognizes exemestane as an alternative substrate as it is an analog of the natural aromatase substrate androstenedione.^[@bibr12-1758835920925991]^ However, to date, data comparing the effects of the two types of AIs on lipid profiles are scarce. The present prospective study was designed to compare changes in the lipid profiles of Chinese postmenopausal patients with hormone receptor-positive breast cancer receiving steroidal or nonsteroidal AIs as adjuvant endocrine therapy (ET). The results may provide evidence to aid in selecting the optimal strategy for ET.

Methods {#section7-1758835920925991}
=======

Study design and patients {#section8-1758835920925991}
-------------------------

A prospective, single-center, cohort study was conducted at the Cancer Hospital of the Chinese Academy of Medical Sciences.

Participants were eligible if they were postmenopausal women, diagnosed with hormone receptor-positive, ductal carcinoma *in situ* (DCIS; stage 0) or stages I to III invasive breast cancer, for whom AI therapy was considered for initial adjuvant ET. Patients were included irrespective of having received previous postoperative adjuvant chemotherapy and/or radiotherapy. Steroidal or nonsteroidal AIs were prescribed based on the patient's preference and the physician's clinical judgment. The patients in the steroidal AI group received exemestane at a dose of 25 mg orally once daily for 5 years, while those in the nonsteroidal AI group received letrozole at a dose of 2.5 mg or anastrozole at a dose of 1 mg orally once daily for 5 years.

Patients diagnosed with low-density lipoprotein cholesterol (LDL-C) levels ⩾4.14 mmol/L at baseline, those with a previous history of ET, those prescribed lipid-lowering medications, and those with severe cardiovascular/cerebrovascular disease or other malignant tumor diagnosed within 6 months were excluded from the study.

Endpoints {#section9-1758835920925991}
---------

The primary endpoint of the study was the cumulative incidence of lipid events and factors associated with lipid events during 24 months of follow-up. The lipid events included an LDL-C level ⩾4.14 mmol/L, which was determined according to the 2007 Chinese guidelines on the prevention and treatment of dyslipidemia in adults,^[@bibr13-1758835920925991]^ or initiation of lipid-lowering medication. The secondary endpoints were the changes in lipid profiles during 2 years of treatment and lipid event-free survival (LEFS), which was defined as the time from receiving adjuvant ET to occurrence of lipid events.

Sample collection, assessment time points, and measurement of lipid profiles {#section10-1758835920925991}
----------------------------------------------------------------------------

Physical examination and collection of laboratory samples were scheduled at baseline and 3, 6, 9, 12, 18, and 24 months after the initiation of ET. Fasting (at least 12 h) blood samples were collected for the estimation of serum lipid parameters, including total cholesterol (TC), LDL-C, high-density lipoprotein cholesterol (HDL-C), and triglyceride (TG) concentrations, in clinical laboratories at the Cancer Hospital of the Chinese Academy of Medical Sciences.

Statistical analysis {#section11-1758835920925991}
--------------------

The full analysis set consisted of patients with data from a minimum of two assessment time points (patients with no sequential time point assessment were also included in the analysis) who complied with the study protocol and were free of disease recurrence or metastasis. In the case of patient withdrawal, data collected prior to withdrawal were used for the analysis. Data for continuous variables were expressed as means ± standard deviation (SD) or medians (minimum, maximum), as appropriate, based on the Kolmogorov--Smirnov test. Normally distributed variables were analyzed using Student's *t*-test (intergroup comparisons) or paired *t*-test (intragroup comparisons over treatment), while the Mann--Whitney *U* test was used for non-normally distributed variables. Categorical variables were presented as frequencies (percentage) and were analyzed using the chi-square test or Fisher's exact test if \>20% of the cells had an expected frequency \<5. Time-to-event analysis was performed using the Kaplan--Meier method and the log-rank test. Cox analysis was used for univariate and multivariate regression analyses of the primary outcome. SPSS 22.0 (IBM, Armonk, NY, USA) and GraphPad Prism 6 (GraphPad Software Inc., San Diego, CA, USA) were used for analysis. All statistical tests were two-tailed, with *p*-values \< 0.05 suggesting statistical significance.

### Highlights {#section12-1758835920925991}

What is the current knowledge of the topic?

-   AIs are used as adjuvant therapy in hormone receptor-positive postmenopausal patients with early breast cancer.

-   To date, data comparing the effects of the two types of AIs on lipid profiles are scarce.

What question did this study address?

-   Head-to-head comparison of the effects of steroidal and nonsteroidal AIs on lipid profiles.

What does this study add to our knowledge?

-   A higher incidence of cumulative lipid events was observed with nonsteroidal AIs.

-   Patients on steroidal AIs showed favorable changes in lipid profiles.

How might this change clinical pharmacology or translational science?

-   The study will help physicians in developing treatment strategies for adjuvant therapy.

Results {#section13-1758835920925991}
=======

Study population {#section14-1758835920925991}
----------------

A total of 647 patients who had undergone surgery received postoperative ET with AIs from November 2014 to December 2016 at the Cancer Hospital of the Chinese Academy of Medical Sciences. The demographic characteristics of the patients are presented in [Table 1](#table1-1758835920925991){ref-type="table"}. Overall, 415 patients were included for lipid profile analysis. Of these, 192 were treated with steroidal AIs (exemestane) and 223 with nonsteroidal AIs (anastrozole or letrozole) ([Figure 1](#fig1-1758835920925991){ref-type="fig"}).

######

Characteristics of the patients.

![](10.1177_1758835920925991-table1)

  -------------------------------------------------------------------------------------------------
  Parameter             Total               Steroidal\          Nonsteroidal\             \
                                            (exemestane)        (anastrozole/letrozole)   p-value
  --------------------- ------------------- ------------------- ------------------------- ---------
  Age, years

  median (range)        60 (41--85)         60 (41--85)         60 (50--79)               0.398

  \>60 years, *n* (%)   218 (52.5%)         104 (54.2%)         114 (51.1%)               0.396

  BMI, kg/m^2^          25.6 (14.8--40.0)   25.5 (14.8--36.4)   25.7 (16.4--40.0)         0.057

  Hypertension          152 (36.6%)         70 (36.5%)          82 (36.8%)                0.947

  Diabetes              48 (11.6%)          23 (12.0%)          25 (11.2%)                0.807

  Chemotherapy          246 (59.3%)         100 (52.1%)         146 (65.5%)               0.006

  Radiotherapy          133 (32.1%)         60 (31.3%)          73 (32.7%)                0.834

  TG, mmol/L            1.40 (0.44--7.35)   1.35 (0.44--7.35)   1.44 (0.53--6.58)         0.840

  TC, mmol/L            4.82 (2.46--6.95)   4.83 (2.46--6.95)   4.82 (2.79--6.83)         0.955

  HDL-C, mmol/L         1.31 (0.62--2.99)   1.31 (0.63--2.99)   1.30 (0.62--2.65)         0.282

  LDL-C, mmol/L         3.12 (1.02--4.13)   3.14 (1.02--4.13)   3.10 (1.11--4.13)         0.737

  Stage (%)                                                                               0.160

   0                    4 (1.0%)            2 (1.0%)            2 (1.0%)

   I                    162 (39.0%)         82 (42.7%)          80 (35.9%)

   II                   177 (42.7%)         69 (35.9%)          108 (48.4%)

   III                  54 (13.0%)          26 (13.5%)          28 (12.6%)

  ER-positive (%)       405 (97.6%)         190 (99.0%)         215 (96.4%)               0.115

  PR-positive (%)       378 (91.1%)         177 (92.2%)         201 (90.1%)               0.464

  HER2-positive (%)     67 (16.1%)          29 (15.1%)          38 (17.0%)                0.702
  -------------------------------------------------------------------------------------------------

Continuous data are presented as median (range).

BMI, body mass index; ER, estrogen receptor; HDL-C, high-density lipoprotein cholesterol; HER2, human erbB-2 receptor; LDL-C, low-density lipoprotein cholesterol; PR, progesterone receptor; TC, total cholesterol; TG, triglyceride.

![Cohort flowchart.](10.1177_1758835920925991-fig1){#fig1-1758835920925991}

Primary endpoints {#section15-1758835920925991}
-----------------

### Lipid events {#section16-1758835920925991}

The cumulative incidence of serum lipid events at 24 months in the steroidal and nonsteroidal groups was 25.3% and 37.0%, respectively. Time-to-lipid event analysis revealed that steroidal AIs were associated with a 36% lower incidence of lipid events when compared with non-steroidal AIs, with a hazard ratio (HR) of 0.64 \[95% confidence interval (CI), 0.44--0.93; *p *= 0.018; [Figure 2](#fig2-1758835920925991){ref-type="fig"}\].

![Kaplan--Meier curve for cumulative lipid events in patients with breast cancer treated with exemestane or letrozole/anastrozole.\
CI, confidence interval; HR, hazard ratio.](10.1177_1758835920925991-fig2){#fig2-1758835920925991}

### Factors associated with lipid events {#section17-1758835920925991}

The factors associated with the occurrence of lipid events were analyzed by univariate and multivariate analyses. In univariate analysis (*p *\< 0.05), TGs, TC, LDL-C, and steroidal AIs were associated with blood lipid events, whereas in multivariate analysis TGs (HR = 1.26, 95% CI = 1.05--1.51; *p *= 0.013), LDL-C (HR = 2.73, 95% CI = 1.51--4.98; *p *= 0.001), and steroidal AIs (HR = 0.602, 95% CI = 0.42--0.87; *p *= 0.008) were independently associated with blood lipid events ([Table 2](#table2-1758835920925991){ref-type="table"}).

######

Multivariate analysis of factors associated with LEFS.

![](10.1177_1758835920925991-table2)

  Variables                                       Univariate             Multivariate
  ----------------------------------------------- ---------------------- -------------- ---------------------- -------
  Age                                             0.996 (0.969, 1.024)   0.767          --                     --
  BMI                                             0.989 (0.941, 1.038)   0.646          --                     --
  Hypertension (reference: no)                    0.903 (0.621, 1.311)   0.591          --                     --
  Diabetes (reference: no)                        0.567 (0.288, 1.118)   0.102          --                     --
  Chemotherapy (reference: no)                    1.093 (0.759, 1.574)   0.633          --                     --
  Radiotherapy (reference: no)                    1.071 (0.738, 1.557)   0.717          --                     --
  TG                                              1.279 (1.108, 1.477)   0.001          1.259 (1.049, 1.511)   0.013
  TC                                              2.748 (2.17, 3.481)    \<0.001        1.495 (0.941, 2.373)   0.088
  HDL-C                                           0.767 (0.459, 1.28)    0.31           --
  LDL-C                                           4.073 (2.833, 5.856)   \<0.001        2.737 (1.504, 4.981)   0.001
  ER (reference: negative)                        0.511 (0.209, 1.252)   0.142          --                     --
  PR (reference: negative)                        1.889 (0.881, 4.053)   0.102          --                     --
  HER2 (reference: negative)                      0.755 (0.446, 1.28)    0.297          --                     --
  Exemestane (reference: anastrozole/letrozole)   0.64 (0.443, 0.925)    0.018          0.602 (0.415, 0.874)   0.008
  Stage (reference: 0)
   1                                              0.516 (0.125, 2.137)   0.362          --                     --
   2                                              0.605 (0.147, 2.487)   0.486          --                     --
   3                                              0.859 (0.201, 3.666)   0.838          --                     --

BMI, body mass index; CI, confidence interval; ER, estrogen receptor; HDL-C, high-density lipoprotein cholesterol; HER2, human erbB-2 receptor; HR, hazard ratio; LDL-C, low-density lipoprotein cholesterol; LEFS, lipid event-free survival; PR, progesterone receptor; TC, total cholesterol; TG, triglyceride.

Secondary endpoints {#section18-1758835920925991}
-------------------

### Changes in lipid profiles {#section19-1758835920925991}

The median values of lipid parameters at each time point are presented in [Figure 3](#fig3-1758835920925991){ref-type="fig"}. Comparison of the lipid profiles of the two groups showed that TGs and TC levels were significantly higher in the nonsteroidal AI group over 24 months (*p *\< 0.05), whereas LDL-C was significantly higher only at 3 months (*p *= 0.017) and 6 months (*p *= 0.026). HDL-C was significantly lower in the steroidal AI group at all time points (*p *\< 0.05), except at 18 months (*p *= 0.085). [Figure 4](#fig4-1758835920925991){ref-type="fig"} depicts the changes in lipid profiles from baseline over the study period and the distribution of lipid values are provided in [Figure 5](#fig5-1758835920925991){ref-type="fig"}.

![(a) Triglyceride (TG), (b) total cholesterol (TC), (c) high-density lipoprotein cholesterol (HDL-C), and (d) low-density lipoprotein cholesterol (LDL-C) levels at different time points over the course of exemestane or anastrozole/letrozole treatment in women with breast cancer. Data are presented as median and range.\
^\*^*p* \< 0.05, ^\*\*^*p* \< 0.01, and ^\*\*\*^*p*\< 0.001.\
IQR, interquartile range.](10.1177_1758835920925991-fig3){#fig3-1758835920925991}

![Changes from baseline (%) of (a) triglyceride (TG), (b) total cholesterol (TC), (c) high-density lipoprotein cholesterol (HDL-C), and (d) low-density lipoprotein cholesterol (LDL-C) levels at different time points.\
^\*^*p* \< 0.05, ^\*\*^*p* \< 0.01, and ^\*\*\*^*p* \< 0.001.](10.1177_1758835920925991-fig4){#fig4-1758835920925991}

![Distribution of lipid values. (a) triglyceride (TG), (b) total cholesterol (TC), (c) high-density lipoprotein cholesterol (HDL-C), and (d) low-density lipoprotein cholesterol (LDL-C) levels at different time points.](10.1177_1758835920925991-fig5){#fig5-1758835920925991}

### Lipid event-free survival {#section20-1758835920925991}

The median LEFS could not be estimated for either group.

Discussion {#section21-1758835920925991}
==========

In the present study, we focused on changes in lipid profiles, which are considered to be surrogate markers for the risk of cardiovascular events in patients with early breast cancer. Steroidal AI treatment elicited better outcomes in terms of a lower incidence of increases in all the lipid parameters, including HDL-C levels. In multivariate analysis, steroidal AIs exerted a protective effect against blood lipid events, which is in accordance with a previous study.^[@bibr2-1758835920925991]^ Earlier studies on the effects of AIs on lipid profiles have reported contradictory and ambiguous results. Reduced TC and LDL-C levels were reported for exemestane treatment, whereas higher doses of anastrozole and letrozole led to increases in TC and LDL-C levels.^[@bibr14-1758835920925991][@bibr15-1758835920925991][@bibr16-1758835920925991]--[@bibr17-1758835920925991]^

Trials with exemestane and letrozole have previously compared their lipid-altering effects with placebo. The results of the MAP.2 trial and the MA.17 subgroup study reported no difference in blood lipid levels with exemestane and letrozole treatment when compared with placebo.^[@bibr18-1758835920925991],[@bibr19-1758835920925991]^ Similarly, Hozumi *et al* showed that exemestane and anastrozole treatment exerted no clinically significant effect on serum lipid levels.^[@bibr20-1758835920925991]^ In the MA.27 study, the incidence of hypertriglyceridemia and hypercholesterolemia in the anastrozole treatment group was higher than in the exemestane group.^[@bibr21-1758835920925991]^ This disparity was likely due to ethnicity-specific differences in AI metabolism.^[@bibr22-1758835920925991],[@bibr23-1758835920925991]^

A study by Ma *et al* on 60 Han Chinese American, African American, Caucasian, and Mexican American patients found that Thr364, Cys264, and double-variant Arg39Cys264 aromatase allozymes showed significantly decreased activity when compared with the wild-type enzyme. The Arg39Cys264 allozyme also exhibited a significantly increased inhibitor constant for letrozole. Compared with Caucasian Americans (2.5%) and Mexican Americans (5%), Cys264 was found at a higher frequency in Han Chinese Americans (11.7%) and African Americans (22.5%). In Han Chinese Americans, the Arg39 variant was present at a frequency of 6.7% but was rare in other ethnic groups. The results of this study suggest that patients with decreased aromatase activity may not receive the full benefit of AI treatment.^[@bibr24-1758835920925991]^

The lipid event we defined in this trial could, to a certain extent, predict the risk of cardiovascular events such as coronary heart disease. The differences in the cumulative incidence of lipid events between the two types of AI may have been due to their chemical structures and mechanisms of action. AIs reduce estrogen levels by suppressing the cytochrome P450-dependent enzyme, aromatase, which is responsible for the conversion of androgens to estrogens. In the case of exemestane, 17-hydroxy exemestane, a metabolite of exemestane, also possesses AI activity, which may contribute to its enhanced efficacy. This is a likely reason for the observed decrease in HDL-C levels in patients treated with exemestane.^[@bibr11-1758835920925991]^ The precise effect of this decrease in HDL-C concentrations will be difficult to ascertain as previous Mendelian randomization studies have reported an increased incidence of hormone receptor-positive breast cancer in patients with a genetic predisposition for increased levels of HDL-C.^[@bibr25-1758835920925991]^

In the current study, a substantial decrease in TG levels was observed in patients treated with steroidal AIs. TGs serve as an important source of oxidizable energy, which drives cellular and tumor growth.^[@bibr26-1758835920925991]^ Therefore, the TG lowering effect of steroidal AIs may indirectly contribute to tumor suppression. Other studies have reported similar results.^[@bibr2-1758835920925991]^

Heterogeneity in genes involved in estrogen signaling has been suggested to affect the lipid profiles of women undergoing AI treatment.^[@bibr27-1758835920925991]^ For example, in postmenopausal women on adjuvant AI therapy, specific polymorphisms in the estrogen receptor alpha (*ESR1*) gene were shown to be associated with increased LDL-C and TG concentrations,^[@bibr28-1758835920925991]^ while changes in *CYP19A1* were associated with a decrease in TG levels and changes in HDL-C concentrations.^[@bibr29-1758835920925991]^ Environmental causes, such as an unhealthy lifestyle, can also lead to elevated levels of blood lipids. As it was difficult to follow up on the eating habits of patients, the lifestyle such as eating habits was not considered in the final statistical analysis. In the multivariate analysis, body mass index, hypertension, and diabetes, which are commonly considered as potential risk factors for changes in blood lipid levels, had no effect on lipid events in our study.

Several studies have suggested that changes in lipid profiles induced by letrozole are reversible and manageable with drug-lowering therapy, while others have indicated that these changes are resistant to lipid-lowering medication.^[@bibr30-1758835920925991][@bibr31-1758835920925991]--[@bibr32-1758835920925991]^ A recent study on hormone receptor-positive early stage breast cancer patients on adjuvant ET reported that cholesterol-lowering medications may have a role in preventing breast cancer recurrence.^[@bibr33-1758835920925991]^ In the present study, patients taking a lipid-lowering medication at baseline were excluded. These factors should be taken into consideration in future studies.

The current study differed from earlier studies in terms of its strengths. To the best of our knowledge, this is the largest head-to-head prospective study comparing the effects of steroidal and nonsteroidal AI treatment as initial adjuvant therapy on lipid profiles in Asians. It was also the first study using cumulative incidence of lipid events as the primary endpoint, and the changes in lipid levels as the secondary endpoints, which provides a comprehensive overview of changes in lipid profile.

However, our study had several limitations. This was a prospective observational study and the patients were not randomized to receive the study drugs. Furthermore, all the patients were Chinese and from a single center, limiting the applicability of the results to patients worldwide. In addition, because of the relatively short follow-up period, the median LEFS in the two groups could not be estimated and the effect of the AIs on major cardiovascular outcomes was not evaluated. Additional studies are necessary to address these limitations and refine the results, as well as to verify whether lipid-lowering medications improve the prognosis of early breast cancer patients.

Conclusion {#section22-1758835920925991}
==========

In conclusion, patients with early breast cancer treated with steroidal AIs presented with favorable changes in lipid profiles when compared with those treated with nonsteroidal AIs. Because a large number of women with chronic adjuvant ET are vulnerable to cardiovascular disease, physicians are encouraged to develop treatment strategies after evaluating the risk factors for disorders of lipid metabolism. Both physicians and patients should give more consideration to the results of laboratory tests, lifestyle counseling, and appropriate drug therapy options when using AIs.

We wish to thank all the patients who took part in this research, their families, and the investigators. A special thanks to Jing Liu for trial monitoring and data management and Pfizer Oncology Medical Affairs for their support.

**Author's contribution:** PY designed the trial. XW collected the data. XW, AZ, JW, FM, JL, YF, YL, PZ, QL, BX, and PY analyzed the data. All the authors vouch for the accuracy and completeness of the analyses and data reported and also confirm adherence to the protocol. XW wrote the initial manuscript. All the authors contributed to subsequent drafts and gave their final approval for submission of the manuscript for publication.

**Conflict of interest statement:** The authors declared no potential conflicts of interest with respect to the research, authorship, and/or publication of this article.

**Consent for publication:** Not applicable.

**Ethics approval and consent to participate:** The trial was conducted in accordance with the principles of Good Clinical Practice as specified in the Declaration of Helsinki. The study protocol was approved by the Institutional Ethics Committee (ID: CH-BC-030), and all the participants provided written informed consent. It will be made clear that patients may withdraw from the study at any time without providing a reason and without affecting their current or future care. Physicians in our team will be kept informed on the study's progress.

**Funding:** The authors received no financial support for the research, authorship, and/or publication of this article.


Q:

How I can calculate sum of some number easily in matlab

I have following simple program, but I want to extent it to a larger size. How I can do it much easier in Matlab: here the size of x is 6 but in my real program it has size 500.
x=[1 2 4 7 8 9];
y1=x(1);
y2=x(1)+x(2);
y3=x(1)+x(2)+x(3);
y4=x(1)+x(2)+x(3)+x(4);
y5=x(1)+x(2)+x(3)+x(4)+x(5);
y6=x(1)+x(2)+x(3)+x(4)+x(5)+x(6);
m=[y1 y2 y3 y4 y5 y6];
plot(x,m)

Thank you very much

A:

plot(x,cumsum(x));

cumsum does exactly what you are looking for.


Change of P-selection expression(platelet activation-dependent granule membrane) at different time points.

Change of PAC-1 expression (platelet-associated complement) on the activated platelets at different time points.

Change of P2Y12 acceptor expression on platelets at different time points. (P2Y12 acceptor is a receptor for ADP(adenosine diphosphate) and ATP (adenosine triphosphate )coupled to G-proteins that inhibit the adenylyl cyclase second messenger system)


OTTAWA — The Ottawa REDBLACKS made a key special teams move on Tuesday, announcing a contract extension for veteran national kicker Chris Milo through 2017.

The 29-year old Milo was signed by the REDBLACKS on July 31, which proved to be a key signing for the Eastern Division Champions. The Montreal native was 32-for-36 on field goals (88.9 per cent), good for fourth in CFL with his longest kick coming from 48 yards.

Milo posted the league’s third-best extra point conversation rate going 34-for-39 (87.7 per cent) and tallied 131 points – the fourth most in the CFL.

“Chris was a great asset for us in the second half last season,” REDBLACKS General Manager Marcel Desjardins. “He brought stability to the position and leadership to the team and we’re glad that he will continue to be a REDBLACK through 2017.”

Milo enters his sixth CFL season in 2016 and has made two trips to the Grey Cup in the past three seasons. On Oct. 29, 2011, Milo tied the record for the longest punt ever kicked in professional football when he punted the football 108 yards. Prior to playing in the CFL, Milo captured a pair of Vanier Cup championships in four years with the Rouge et Or in Laval.

The REDBLACKS also announced the signing of international linebacker John Kanongata’a, who is no stranger to the team.

The Bellevue, Wash. native was part of training camp last season and certainly made an impression. The 23-year-old linebacker played four years at the University of Montana where he was among one of the top tackle and sack leaders in Grizzlies history.

“John was in training camp in 2015 and really impressed prior to being injured,” said Desjardins. “We feel he adds athleticism and versatility to our defence and we look forward to seeing him again this season.”


celebrity chef

My co-workers have labeled me a "foodie"; Okay, they really call me a "food snob", but I prefer the former versus the latter. I love to cook and yes, I can be particular about my likes and dislikes - especially when it comes to "celebrity chefs".

It's probably a trend that we could all see coming: Television host and cookbook author Alton Brown is pledging that his latest cookbook will be his last --- on paper, anyway.
"I want to go where nobody has gone before," Brown said Saturday during an interview at the New York City Wine and Food Festival

Welcome back to Kool 101.7 Radio

It appears that you already have an account created within our VIP network of sites on .
To keep your points and personal information safe, we need to verify that it's really you.
To activate your account, please confirm your password.
When you have confirmed your password, you will be able to log in through Facebook on both sites.

*Please note that your points, prizes and activities will not be shared between programs within our VIP network.

Welcome back to Kool 101.7 Radio

It appears that you already have an account on this site associated with . To connect your existing account just click on the account activation button below. You will maintain your existing VIP profile. After you do this, you will be able to always log in to http://kool1017.com using your original account information.


- Feature Name: `format_args_implicits`
- Start Date: 2019-10-27
- RFC PR: [rust-lang/rfcs#2795](https://github.com/rust-lang/rfcs/pull/2795)
- Rust Issue: [rust-lang/rust#67984](https://github.com/rust-lang/rust/issues/67984)

# Summary
[summary]: #summary

Add implicit named arguments to `std::format_args!`, inferred from the format string literal.

This would result in downstream macros based on `format_args!` to accept implicit named arguments, for example:

    let (person, species, name) = ("Charlie Brown", "dog", "Snoopy");

    // implicit named argument `person`
    print!("Hello {person}");

    // implicit named arguments `species` and `name`
    format!("The {species}'s name is {name}.");

Implicit named argument capture only occurs when a corresponding named argument is not provided to the macro invocation. So in the below example, no implicit lookup for `species` is performed:

    // explicit named argument `species`
    // implicit named argument `name`
    format!("The {species}'s name is {name}.", species="cat");

(Downstream macros based on `format_args!` include but are not limited to `format!`, `print!`, `write!`, `panic!`, and macros in the `log` crate.)

# Motivation
[motivation]: #motivation

The macros for formatting text are a core piece of the Rust standard library. They're often one of the first things users new to the language will be exposed to. Making small changes to improve the ergonomics of these macros will improve the language for all - whether new users writing their first lines of Rust, or seasoned developers scattering logging calls throughout their program.

This proposal to introduce implicit named arguments aims to improve ergonomics by reducing the amount of typing needed in typical invocations of these macros, as well as (subjectively) improving readability.

# Guide-level explanation
[guide-level-explanation]: #guide-level-explanation

If this proposal were captured, the following (currently invalid) macro invocation:

    format_args!("hello {person}")

would become a valid macro invocation, and would be equivalent to a shorthand for the already valid:

    format_args!("hello {person}", person=person)

This identifier `person` would be known as an **implicit named argument** to the macro. `format_args!` would be able to accept any number of such implicit named arguments in this fashion. Each implicit named argument would have to be an identifier which existed in the scope in which the macro is invoked.

Should `person` not exist in the scope, the usual error E0425 would be emitted by the compiler:

    error[E0425]: cannot find value `person` in this scope
     --> .\foo.rs:X:Y
      |
    X |     println!("hello {person}");
      |                     ^^^^^^^^ not found in this scope

As a result of this change, downstream macros based on `format_args!` would also be able to accept implicit named arguments in the same way. This would provide ergonomic benefit to many macros across the ecosystem, including:

 - `format!`
 - `print!` and `println!`
 - `eprint!` and `eprintln!`
 - `write!` and `writeln!`
 - `panic!`, `unreachable!` and `unimplemented!`
 - `assert!` and similar
 - macros in the `log` crate
 - macros in the `failure` crate

(This is not an exhaustive list of the many macros this would affect. In discussion of this RFC if any further commonly-used macros are noted, they may be added to this list.)

## Precedence

Implicit arguments would have lower precedence than the existing named arguments `format_args!` already accepts. For example, in the example below, the `person` named argument is explicit, and so the `person` variable in the same scope would not be captured:

    let person = "Charlie";

    // Person is an explicit named argument, so this
    // expands to "hello Snoopy".
    println!("hello {person}", person="Snoopy");

Indeed, in this example above the `person` variable would be unused, and so in this case the unused varible warning will apply, like the below:

    warning: unused variable: `person`
     --> src/foo.rs:X:Y
      |
    X |     let person = "Charlie";
      |         ^^^^^^ help: consider prefixing with an underscore: `_person`
      |
      = note: `#[warn(unused_variables)]` on by default

Because implicit named arguments would have lower precedence than explicit named arguments, it is anticipated that no breaking changes would occur to existing code by implementing this RFC.

## Generated Format Strings

`format_args!` can accept an expression instead of a string literal as its first argument. `format_args!` will attempt to expand any such expression to a string literal. If successful then the `format_args!` expansion will continue as if the user had passed that string literal verbatim.

No implicit named argument capture will be performed if the format string is generated from an expansion. See the [macro hygiene](#macro-hygiene) discussion for the motivation behind this decision.

# Reference-level explanation
[reference-level-explanation]: #reference-level-explanation

The implementation pathway is directly motivated by the guide level explanation given above:

1. The `format_args!` macro can continue to parse the format string and arguments provided to it in the existing fashion, categorising arguments as either positional or named.

2. In the current implementation of `format_args!`, after parsing has occurred, all the arguments referred to by the format string are validated against the actual arguments provided. If a named argument is referred to in the format string but no corresponding named argument was provided to the macro, then an error is emitted:

        error: there is no argument named `person`
        --> src/foo.rs:X:Y
         |
       X |     println!("hello {person}");
         |                     ^^^^^^^^

   If this RFC were implemented, instead of this resulting in an error, this named argument would be treated as an **implicit named argument** and the final result of the expansion of the `format_args!` macro would be the same as if a named argument, with name equivalent to the identifier, had been provided to the macro invocation.

   Because `person` is only treated as an implicit named argument if no exisiting named argument can be found, this ensures that implicit named arguments have lower precedence than explicit named arguments.

## Macro Hygiene
[macro-hygiene]: #macro-hygiene

Expanding the macro in this fashion will need to generate an identifier which corresponds to the implicit named argument. The hygiene of this generated identifier would be inherited from the format string, with location information reduced to the section of the format string which contains the implicit named argument.

An interesting case to consider is that `format_args!`-based macros can accept any expression in the format string position. The macro then attempts to expand this expression to a string literal.

This means the below examples of `format!` invocations could compile successfully in stable Rust today:

    format!(include_str!("README.md"), foo=1)
    format!(concat!("hello ", "{bar}")), bar=2)

This RFC argues that `format_args!` should not attempt to expand any implicit named arguments if the macro is provided with an expression instead of a verbatim string literal.

The following are motivations why this RFC argues this case:

* This RFC's motivation for implicit named arguments is to give users a concise syntax for string formatting. When the format string is generated from some other expression this motivation for concise syntax is irrelevant.

* The hygienic context of the string literal generated by the expansion is entirely dependent on the expression. For example, the string literal produced by the `concat!` macro resides in a separate hygienic context. In combination with implicit named arguments using hygiene inherited from the format string, this would lead to puzzling errors like the below:

      error[E0425]: cannot find value `person` in this scope
       --> scratch/test.rs:4:14
        |
        |     let person = "Charlie";
      4 |     println!(concat!("hello {person}"));
        |              ^^^^^^^^^^^^^^^^^^^^^^^^^ not found in this scope

* The expression may expand to a format string which contains new identifiers not written by the users, bypassing macro hygiene in suprising ways. For example, if the `concat!` macro did not have the hygiene issue described above, it could be to "splice together" an implicit named argument like so:

       let person = "Charlie";
       println!(concat!("hello {p", "er", "son", "}"));

   The RFC author argues that it appears highly undesirable that implicit capture of the `person` identifier should occur in this example given above.

* Using the hygienic context of the format string for implicit named arguments can have potentially suprising results even just with `macro_rules!` macros.

  For example, the RFC author found that with a proof-of-concept implementation of implicit named arguments the invocation below would print `"Snoopy"`:

      const PERSON: &'static str = "Charlie";

      fn main() {
          macro_rules! bar {
            () => { "{PERSON}" };
          }

          const PERSON: &'static str = "Snoopy";
          println!(bar!());
      }

  However, by merely changing to `let` bindings and moving the `"Charlie"` declaration three lines down to be inside the `main()` function, as below, the invocation would instead print `"Charlie"`:

      fn main() {
          let person = "Charlie";
          macro_rules! bar {
              () => { "{person}" };
          }

          let person = "Snoopy";
          println!(bar!());
      }

   While it can be argued that this example is very contrived, the RFC author believes that it is undesirable to add such subtle interactions to the `format_args!` family of macros.

These appear to give strong motivation to disable implicit argument capture when `format_args!` expands an expression instead of a verbatim string literal.

# Drawbacks
[drawbacks]: #drawbacks

As the syntax proposed does not currently compile, the author of this RFC does not foresee concerns about this addition creating breaking changes to Rust code already in production.

However, this proposal does increase the complexity of the macros in question, as there would now be three options for how users may provide arguments to the them (positional arguments, named arguments, and the new implicit named arguments).

It would also alter the learning pathway for users as they encounter these macros for the first time. If implicit named arguments prove convenient and popular in the Rust ecosystem, it may be that new users of the language learn how to use the macros in implicit named argument form before they encounter the other two options, and may even not learn about the other two options until some time into their Rust journey.

Furthermore, users familiar with implicit named arguments, but not the other options, may attempt to pass expressions as arguments to format macros. Expressions would not be valid implicit named arguments. For example:

    // get_person() is a function call expression, not an identifier,
    // so could not be accepted as an implicit named argument
    println!("hello {}", get_person());

This is not world-ending, as users who only know about implicit named arguments (and not positional or named arguments) might write something like the following:

    let person = get_person();
    println!("hello {person}");

While two lines rather than one, it is still perfectly readable code.

# Rationale and alternatives
[rationale-and-alternatives]: #rationale-and-alternatives

The core macro resonsible for all Rust's string formatting mechanism is `std::format_args!`. It requires a format string, as well as a corresponding number of additional arguments which will be substituted into appropriate locations in the format string.

There are two types of arguments `format_args!` can accept:

1. Positional arguments, which require less typing and so (in the RFC author's experience) are used more frequently:

       format_args!("The {}'s name is {}.", species, name)

2. Named arguments, which require more typing but (in the RFC author's experience) have the upside that the the format string itself is easier to read:

       format_args!(
           "The {species}'s name is {name}",
           species=species,
           name=name
       )

Neither positional or named arguments are restricted to identifiers. They can accept any valid Rust expression, for example:

    format_args!("Hello {}", get_person())
    format_args!("Hello {person}", person=get_person())

However, this RFC author's experience is that a significant majority of arguments to formatting macros are simple identifiers. (It is openly acknowledged that this is a subjective statement.)

Implicit named arguments seek to combine the brevity of positional arguments with the clarity that named arguments provide to the format string:

    format_args!("The {species}'s name is {name}")

## Alternative Implementations and Syntax

Users who wish to use implicit named arguments could make use of a third-party crate, for example the existing [fstrings crate](https://crates.io/crates/fstrings), which was built during early discussion about this proposal. This RFC accepts that deferring to a third-party crate is a reasonable option. It would however miss out on the opportunity to provide a small and straightforward ergnomic boost to many macros which are core to the rust language as well as the ecosytem which is derived from these standard library macros.

For similar reasons this RFC would argue that introducing a new alternative macro to `format_args!` in the standard library would not be a good outcome compared to adding to the existing macro.

An alternative syntax for implicit named arguments is welcomed by this RFC if it can be argued why it is preferable to the RFC's proposed form. The RFC author argues the chosen syntax is the most suitable, because it matches the existing syntax for named arguments.

## Alternative Solution - Interpolation
[interpolation]: #interpolation

Some may argue that if it becomes possible to write identifiers into format strings and have them passed as implicit named arguments to the macro, why not make it possible to do similar with expressions. For example, these macro invocations seem innocent enough, reasonably readable, and are supported in Python 3 and Javascript's string formatting mechanisms:

    println!("hello {get_person()}");  // function call
    println!("hello {self.person}");   // field access

The RFC author anticipates in particular that field access may be requested by many as part of this RFC. After careful consideration this RFC does not propose to go further than the single identifier special case, proposed above as implicit named arguments.

If any expressions beyond identifiers become accepted in format strings, then the RFC author expects that users will inevitably ask "why is *my* particular expression not accepted?". This could lead to feature creep, and before long perhaps the following might become valid Rust:

    println!("hello { if self.foo { &self.person } else { &self.other_person } }");

This no longer seems easily readable to the RFC author.

### Proposed Interpolation Syntax

Early review of this RFC raised an observation that the endpoint of such feature creep would be that eventually Rust would embrace interpolation of any expressions inside these macros.

To keep interpolation isolated from named and positional arguments, as well as for readability and (possibly) to reduce parsing complexity, curly-plus-bracket syntax was proposed for interpolation:

    println!("hello {(get_person())}");
    println!("hello {(self.person)}");

Indeed the RFC's perverse example reads slightly easier with this syntax:

    println!("hello {( if self.foo { &self.person } else { &self.other_person } )}");

Because the interpolation syntax `{(expr)}` is orthogonal to positional `{}` and named `{ident}` argument syntax, and is a superset of the functionality which would be offered by implict named arguments, the argument was made that we should make the leap directly to interpolation without introducing implicit named arguments so as to avoid complicating the existing cases.

### Argument Against Interpolation

It should first be noted that the interpolation in other languages is often a language feature; if they have string formatting functions they typically do not enjoy syntax-level support. Instead other language formatting functions often behave similarly to Rust's positional and/or named arguments to formatting macros.

For example, Python 3's `.format()` method is on the surface extremely similar to Rust's formatting macros:

    "hello {}".format(person)
    "hello {person}".format(person=person)

However, Python 3 cannot improve the ergonomics of these functions in the same way that this RFC proposes to use implicit named arguments. This is for technical reasons: Python simply does not have a language mechanism which could be used to add implicit named arguments to the `.format()` method. As a result, offering improved ergonomics in Python necessitated the introduction of a language-level interpolation syntax (f-strings, described in the [prior art](#prior-art) section).

(Note, the closest Python 3's `.format()` can get to implicit named arguments is this:

    "hello {person}".format(**locals())

but as noted in [PEP 498](https://www.python.org/dev/peps/pep-0498/#no-use-of-globals-or-locals), the Python language designers had reasons why they wanted to avoid this pattern becoming commonplace in Python code.)

Rust's macros are not constrained by the same technical limitations, being free to introduce syntax as long as it is supported by the macro system and hygiene. The macros can therefore enjoy carefully-designed ergonomic improvements without needing to reach for large extensions such as interpolation.

The RFC author would argue that if named arguments (implicit or regular) become popular as a result of implementation of this RFC, then the following interpolation-free invocations would be easy to read and good style:

    // Just use named arguments in simple cases
    println!("hello {person}", person=get_person());
    println!("hello {person}", person=self.person);

    // For longwinded expressions, create identifiers to pass implicitly
    // so as to keep the macro invocation concise.
    let person = if self.foo { &self.person } else { &self.other_person };
    println!("hello {person}");

Similar to how implicit named arguments can be offered by third-party crates, interpolation macros already exist in the [ifmt crate](https://crates.io/crates/ifmt).

### Interpolation Summary

The overall argument is not to deny that the standard library macros in question would not become more expressive if they were to gain fully interpolation.

However, the RFC author argues that adding interpolation to these macros is less neccessary to improve ergonomics when comparing against other languages which chose to introduce language-level interpolation support. Introduction of implicit named arguments will cater for many of the common instances where interpolation would have been desired. The existing positional and named arguments can accept arbitrary expressions, and are not so unergonomic that they feel overly cumbersome when the expression in question is also nontrivial.

# Prior art
[prior-art]: #prior-art

## Field Init Shorthand

Rust already has another case in the language where the single identifier case is special-cased:

    struct Foo { bar: u8 }
    let bar = 1u8;

    let foo = Foo { bar: bar };
    let foo = Foo { bar };        // This shorthand only accepts single identifiers

This syntax is widely used and clear to read. It's [introduced in the Rust Book as one of the first topics in the section on structs](https://doc.rust-lang.org/book/ch05-01-defining-structs.html#using-the-field-init-shorthand-when-variables-and-fields-have-the-same-name). This sets a precedent that the Rust language is prepared to accept special treatment for single identifiers when it keeps syntax concise and clear.

## Other languages

A number of languages support string-interpolation functionality with similar syntax to what Rust's formatting macros. The RFC author's influence comes primarily from Python 3's "f-strings" and Javscript's backticks.

The following code would be the equivalent way to produce a new string combining a `greeting` and a `person` in a variety of languages:

    // Rust
    format!("{} {}", greeting, person)                                // positional form,
    format!("{greeting} {person}", greeting=greeting, person=person)  // or named form

    # Python 3
    f"{greeting} {person}"

    // Javascript
    `${greeting} ${person}`

    // C# / VB
    $"{greeting} {person}"

    // Swift
    "\(greeting) \(person)"

    // Ruby
    "#{greeting} #{person}"

    // Scala
    s"$greeting $person"

    // Perl and PHP
    "$greeting $person"

It is the RFC author's experience that these interpolating mechanisms read easily from left-to-right and it is clear where each variable is being substituted into the format string.

In the Rust formatting macros as illustrated above, the positional form suffers the drawback of not reading strictly from left to right; the reader of the code must refer back-and-forth between the format string and the argument list to determine where each variable will be subsituted. The named form avoids this drawback at the cost of much longer code.

Implementing implicit named arguments in the fashion suggested in this RFC would eliminate the drawbacks of each of the Rust forms and permit new syntax much closer to the other languages:

    // Rust - implicit named arguments
    format!("{greeting} {person}")

It should be noted, however, that other languages' string interpolation mechanisms allow substitution of a wide variety of expressions beyond the simple identifier case that this RFC is focussed on.

Please see the discussion on [interpolation](#interpolation) as an alternative to this RFC.

# Unresolved questions
[unresolved-questions]: #unresolved-questions

## Interaction with `panic!`

The `panic!` macro forwards to `format_args!` for string formatting. For example, the below code compiles on stable Rust today:

    fn main() {
        panic!("Error code: {code}", code=1);
        // thread 'main' panicked at 'Error code: 1' ...
    }

However, in current stable Rust the `panic!` macro does not forward to `format_args!` if there is only a single argument. This would interact poorly with implicit named arguments. In the invocation below, for example, users familiar with implicit named argument capture would expect the panic message to be formatted. Instead, given `panic!`'s current semantics, the panic message would be the unformatted literal:

    fn main() {
        let code = 1;
        panic!("Error code: {code}");
        // thread 'main' panicked at 'Error code: {code}' ...
    }

This semantic of `panic!` has previously been acknowledged as a "papercut", for example in [this Rust issue](https://github.com/rust-lang/rust/issues/22932). However, it has so far been left as-is because changing the design was low priority, and changing it may break existing code.

If this RFC were to be implemented, users will very likely expect invoking `panic!` with only a string literal will capture any implicit named arguments. This semantic would quickly become percieved as a major bug rather than a papercut.

Implementing this RFC therefore would bring strong motivation for making a small breaking change to `panic!`: when a single argument passed to panic is a string literal, instead of the final panic message being that literal (the current behavior), the final panic message will be the formatted literal, substituting any implicit named arguments denoted in the literal.

That is, the desired behavior is as the example below:

    fn main() {
        let code = 1;
        panic!("Error code: {code}");
        // thread 'main' panicked at 'Error code: 1' ...
    }

This change to `panic!` would alter the behavior of existing code (such as the example above). It would also stop some code from being accepted, such as `panic!("{}")`, which is valid code today but would become a compile fail (because this would be a missing positional argument). Crates implementing macros with similar semantics to `panic!` (such as `failure`) may also wish to make changes to their crates in sync with the change to `panic!`. This suggests that this change to `panic!` would perhaps be ideal for release as part of a future Rust edition, say, 2021.

The details of this pathway to change panic are open to discussion. Some possible options:

* `panic!` itself could be made a builtin macro (which would allow its behavior to vary between editions)

* A `$expr:literal` match arm could be added to `panic!`. This arm could forward to a built-in macro which controlled behaviour appropriately.

* A new implementation of `panic!` could be written, and switching between them could be done with a new `std::prelude`.

Whichever route is chosen, it is agreed that this RFC should not be stabilised unless `format!("{foo}")` and `panic!("{foo}")` can be made consistent with respect to implicit named arguments.

## Should implicit named arguments be captured for formatting parameters?

Some of the formatting traits can accept additional formatting parameters to control how the argument is displayed. For example, the precision with which to display a floating-point number:

    println!("{:.5}", x);  // print x to 5 decimal places

It is also possible for the precision to refer to either positional or named arguments using "dollar syntax":

    println!("{:.1$}", x, 5);
    println!("{:.prec$}", x, prec=5);

As a result of this RFC, formatting parameters could potentially also make use implicit named argument capture:

    println!("{x:.precision$}");

The RFC author believes Rust users familiar with implicit named arguments may expect the above to compile (as long as `x` and `precision` were valid identifiers in the scope in question). However, feedback is requested during this RFC process as to whether the this should be indeed become acceptable as part of the RFC.

All such formatting parameters can refer to arguments using dollar syntax, and so this question also applies to them.

## Should we improve the error for invalid expressions in format strings?

Users familiar with implicit named arguments may attempt to write expressions inside format strings, for example a function call:

    println!("hello {get_person()}");

The current error message that would be emitted does not explain that arbitrary expressions are not possible inside format strings:

    error: invalid format string: expected `'}'`, found `'('`
    --> .\foo.rs:X:Y
      |
    3 |     println!("hello {get_person()}");
      |                     -          ^ expected `}` in format string
      |                     |
      |                     because of this opening brace
      |
      = note: if you intended to print `{`, you can escape it using `{{`

An new message which informs the users of alternative possibilities may be helpful:

    error: expressions may not be used inside format strings
    --> .\scratch\test.rs:3:37
      |
    3 |     println!("hello {get_person()}");
      |                     ^^^^^^^^^^^^^^ expression is here
      |
    = note: if you wanted to pass an expression as an argument to a formatting macro,
      try as a positional argument, e.g. println!("hello {}", get_person());
            or as a named argument, e.g. println!("hello {foo}", foo=get_person());

It is not clear how significant a change this might require to `format_args!`'s parsing machinery, or how this error message might scale with the complexity of the format string in question.

# Future possibilities
[future-possibilities]: #future-possibilities

The main alternative raised by this RFC is interpolation, which is a superset of the functionality offered by implicit named arguments. However, for reasons discussed above, interpolation is not the objective of this RFC.

Accepting the addition of implicit named arguments now is not incompatible with adding interpolation at a later date.

Future discussion on this topic may also focus on adding interpolation for just a subset of possible expressions, for example `dotted.paths`. We noted in debate for this RFC that particularly for formatting parameters the existing dollar syntax appears problematic for both parsing and reading, for example `{self.x:self.width$.self.precision$}`.

The conclusion we came to in the RFC discussion is that adding even just interpolations for `dotted.paths` will therefore want a new syntax, which we nominally chose as the `{(expr)}` syntax already suggested in the [interpolation](#interpolation) alternative section of this RFC.

Using this parentheses syntax, for example, we might one day accept `{(self.x):(self.width).(self.precision)}` to support `dotted.paths` and a few other simple expressions. The choice of whether to support an expanded subset, support interpolation of all expressions, or not to add any further complexity to this macro is deferred to the future.

A future proposal for extending interpolation support might wish to explore alternative syntaxes to `{(expr)}` parentheses which can also be parsed and read comfortably.


Whether time is discrete at the fundamental level is still unknown. But for computational purposes, it is very useful to have a form of mechanics in which time increases in finite steps. Each step ...
More

Whether time is discrete at the fundamental level is still unknown. But for computational purposes, it is very useful to have a form of mechanics in which time increases in finite steps. Each step must be a canonical transformation. Using the Poincare-Birkhoff-Witt lemma (also called the Baker-Campbell-Hausdorff formula) this chapter derives first and second order symplectic integrators that allow a discrete time formulation of mechanics. The example of the standard map of Chiriikov (discrete time form of the pendulum) gives the first example of chaos. Arnold's cat map is introduced in an exercise.Less

Discrete time

S. G. Rajeev

Published in print: 2013-07-25

Whether time is discrete at the fundamental level is still unknown. But for computational purposes, it is very useful to have a form of mechanics in which time increases in finite steps. Each step must be a canonical transformation. Using the Poincare-Birkhoff-Witt lemma (also called the Baker-Campbell-Hausdorff formula) this chapter derives first and second order symplectic integrators that allow a discrete time formulation of mechanics. The example of the standard map of Chiriikov (discrete time form of the pendulum) gives the first example of chaos. Arnold's cat map is introduced in an exercise.

This book begins with the ancient parts of classical mechanics: the variational principle, Lagrangian and Hamiltonian formalisms, and Poisson brackets. The simple pendulum provides a glimpse of the ...
More

This book begins with the ancient parts of classical mechanics: the variational principle, Lagrangian and Hamiltonian formalisms, and Poisson brackets. The simple pendulum provides a glimpse of the beauty of elliptic curves, which will also appear later in rigid body mechanics. Geodesics in Riemannian geometry are presented as an example of a Hamiltonian system. Conversely, the path of a non-relativistic particle is a geodesic in a metric that depends on the potential. Orbits around a black hole are found. Hamilton-Jacobi theory is discussed, showing a path towards quantum mechanics and a connection to the eikonal of optics. The three body problem is studied in detail, including small orbits around the Lagrange points. The dynamics of a charged particle in a magnetic field, especially a magnetic monopole, is studied in the Hamiltonian formalism. Spin is shown to be a classical phenomenon. Symplectic integrators that allow numerical solutions of mechanical systems are derived. A simplified version of Feigenbaum's theory of period doubling introduces chaos. Following a classification of Mobius transformations, this book studies chaos on the complex plane: Julia sets, Fatou sets, and the Mandelblot are explained. Newton's method for solution of non-linear equations is viewed as a dynamical system, allowing a novel approach to the reduction of matrices to canonical form. This is used as a stepping stone to the KAM theory of maps of a circle to itself, unravelling a connection to the Diophantine problem of number theory. KAM theory of the solution of the Hamilton-Jacobi equation using Newton's iteration concludes the book.Less

Advanced Mechanics : From Euler's Determinism to Arnold's Chaos

S. G. Rajeev

Published in print: 2013-07-25

This book begins with the ancient parts of classical mechanics: the variational principle, Lagrangian and Hamiltonian formalisms, and Poisson brackets. The simple pendulum provides a glimpse of the beauty of elliptic curves, which will also appear later in rigid body mechanics. Geodesics in Riemannian geometry are presented as an example of a Hamiltonian system. Conversely, the path of a non-relativistic particle is a geodesic in a metric that depends on the potential. Orbits around a black hole are found. Hamilton-Jacobi theory is discussed, showing a path towards quantum mechanics and a connection to the eikonal of optics. The three body problem is studied in detail, including small orbits around the Lagrange points. The dynamics of a charged particle in a magnetic field, especially a magnetic monopole, is studied in the Hamiltonian formalism. Spin is shown to be a classical phenomenon. Symplectic integrators that allow numerical solutions of mechanical systems are derived. A simplified version of Feigenbaum's theory of period doubling introduces chaos. Following a classification of Mobius transformations, this book studies chaos on the complex plane: Julia sets, Fatou sets, and the Mandelblot are explained. Newton's method for solution of non-linear equations is viewed as a dynamical system, allowing a novel approach to the reduction of matrices to canonical form. This is used as a stepping stone to the KAM theory of maps of a circle to itself, unravelling a connection to the Diophantine problem of number theory. KAM theory of the solution of the Hamilton-Jacobi equation using Newton's iteration concludes the book.


Carl Otto Løvenskiold (born 1953)

Carl Otto Løvenskiold (born 18 October 1953) is a Norwegian landowner and businessperson.

Personal life
He is a son of Harald Løvenskiold and Ingegjerd Løvenskiold, grandson of Carl Otto Løvenskiold, great-grandson of Harald Løvenskiold, great-great-grandson of Prime Minister Carl Otto Løvenskiold, great-great-great-grandson of Otto Joachim Løvenskiold and great-great-great-great-grandson of Severin Løvenskiold. He is the oldest of four siblings. He resides at Bærums Verk Manor, is married to Lise and has two children.

Career
He graduated as an economist from the Seattle University in 1978, and also took an MBA degree in France and leadership education at Stanford University. He worked in Nitro Nobel before being hired in the family corporation Løvenskiold-Vækerø in 1982. He advanced through the ranks to become chief executive of the industry and commercial branch of the company in 1993. At his father's passing in 1994 he became sole owner of the entire corporation. The estates owned by the corporation span large parts of Bærums Verk, Bærumsmarka and Nordmarka.

From 2003 to 2011 he was also the president of the Federation of Norwegian Enterprises.

References

Category:1953 births
Category:Living people
Category:Seattle University alumni
Category:Norwegian expatriates in the United States
Category:Norwegian businesspeople
Carl Otto


Q:

Accessing other program's memory

I have been experimented around accessing memory used by other programs and I've encountered a little bit strange (to me) results.
First I have created a variable in my first program and gave it the value of 10. Then I looked at the address of it and asigned it manualy to a pointer in my second program. After that i tried to derefrence the pointer and (to my surprise) the program didn't crash. Instead it printed derefrenced pointer's value as 0
Next I created a few other programs to experiment with this. In my first program I created a pointer and asigned 'new int' to it. Then I checked the address of the int and manually asigned it to another pointer in my second program. Now when i tried to derefrence the ptr of my second program it did crash.
Could someone explain why the difference happened? And why was the derefrenced pointer 0?
Sorry for a possibly stupid question :/

A:

This is because the addresses that your program prints for you to see are virtual addresses. Virtual addresses are relative to the memory space of each individual program. They get converted to physical memory addresses by the operating system during runtime.
So you didn't really access the real (physical) memory address of one of your programs from another one. This is also why the pointer value was set to 0.


According to the Arthritis Foundation, arthritis can affect people of all ages as well as dogs. In fact, the condition affects one in every five adult dogs in the U.S. and is one of the most common sources of chronic pain that veterinarians treat.

The Arthritis Foundation reports that signs your dog is suffering from arthritis include favoring a limb, difficulty sitting or standing, increased sleep, the appearance of stiff or sore joints and hesitancy to run, jump or climb stairs. Weight gain, decreased activity or disinterest in playing, attitude or behavior changes and decreased alertness may also signal that your pet has the condition.

Osteoarthritis, which is also known as degenerative joint disease is the most common type of arthritis in dogs. There are several factors that contribute to the condition, according to VCA Animal Hospitals. Hip dysplasia in dogs, obesity, joint injuries and other joint conditions are commonly associated with arthritic animals.

The condition can affect dogs of any age. However, it is more common as pets age and large-breed dogs are more likely to suffer from arthritis than smaller dogs.

Because your dog can't vocalize his discomfort, owners with dogs that show any of the clinical signs of arthritis for more than two weeks should make an appointment at their veterinary hospital. Diagnosis involves a physical exam by a vet as well as x-rays in many cases.

Even though arthritis can cause your pet a lot of physical pain, there are ways to treat it and ensure he continues to live a full and healthy life.

In fact, treating arthritis in dogs is similar to treating it in humans. Taking measures such as maintaining a proper weight through a healthy diet and adequate exercise as well as using medications including analgesics like non-steroidal anti-inflammatory drugs can reduce the arthritis pain.

However, analgesic medications can cause side effects such as decreased appetite, vomiting and diarrhea in dogs. Veterinarians must also perform blood tests on animals taking these drugs to ensure they can safely metabolize them.

Pet owners are reminded to never give over-the-counter medications to their animals without first checking with a pet health expert, as certain medications can be toxic and dosages may differ greatly in animals.

Nutritional supplements such as omega-3 fatty acids (DHA and EPA) as well as nutraceuticals such as glucosamine and/or chondroitin are also believed to offer some relief to animals suffering from arthritis.

Specialty Care

As part of the VCA family, we have over 83 specialty hospitals across the US and Canada which provide referral specialty care, so there may be one near you. Enter ZIP to find VCA specialty care hospitals near you.


Q:

Why do we need the HTTP CONNECT Tunnel in Fiddler?

I saw many Tunnel to host:443 in Fiddler traffic interception, when I click it I saw below info:
The selected session is a HTTP CONNECT Tunnel. This tunnel enables a client to send raw traffic (e.g. HTTPS-encrypted streams or WebSocket messages) through a HTTP Proxy Server (like Fiddler).
I also searched this -
Fiddler2: Decrypt HTTPS traffic and Tunnel to host:443
But these didn't answer my question, why do we need the HTTP CONNECT Tunnel? Why does a client need to send raw traffic?

A:

See https://textslashplain.com/2015/11/19/understanding-connect-tunnels/
tl;dr: Browsers need to send CONNECT tunnel requests to proxies in order for the proxy to know to what server the traffic should be sent.
The encryption provided by HTTPS prevents the proxy server from seeing the URLs or HOST headers of the requests, and these are how a proxy normally decides where to send the requests. So, for HTTPS traffic, a different approach is needed-- that approach is that the client tells the proxy: "Hey, give me a tunnel to example.com and let me know when it's ready." The proxy does so and tells the client HTTP/200 Connection established. At that point, the proxy becomes a blind byte-shuffler that takes bytes from the client and sends them to the server and returns the bytes the server replied with back to the client.


Gemini (May22/Jun21) Are you experiencing an identity crisis? Probably due to something in your social life?

While it’s fun being a jack of all trades, you’d like to specialise in a subject that really interests you. The problem is you’re not sure what your area of expertise should be.

There’s a good chance you’ll thrive in a creative field like fashion, film, or photography. Find a quiet place to consider what really makes you happy and don’t be afraid to experiment with new experiences.

Cancer (Jun22/Jul23) Spending more time on your own comes as a relief. Unfortunately, your nearest and dearest might not be quite so understanding. It’s not that your affections have changed. You just need a little peace and quiet, to figure out what you really want from life.

You’ve always been very impressionable. By letting others influence your decisions, you’ll go in a direction that is ultimately unsatisfying. Maintain those strong personal boundaries; you need them to grow.

Leo (Jul24/Aug23) Meeting lots of new people is entertaining and exciting. Unfortunately, your action packed social life is clouding your romantic decisions. There are those who want to embark on a physical relationship, and you’re flattered.

When it comes to making a decision you may hurt at last one person’s feelings. Suddenly, you’ll go from hero to zero. That’s the price you have to pay for being a sex symbol. Proceed with caution, and don’t play one admirer against another.

Virgo (Aug24/Sep23) The spotlight is about to shine upon you and about time too; but is a business or romantic partner jealous of your success? No matter how much you express your gratitude for their help, they seem sulky. Don’t let their bad attitude rain on your parade.

Steer clear of their sullen types and have fun with all the people who have come forward to celebrate your good fortune. Later on, you can decide whether it’s time to go your separate ways.

Libra (Sep24/Oct23) You have an exciting chance to expand your horizons. Unfortunately, you’ll have to wave farewell to some aspects of your life to embark on this new path. This makes you nervous. You’ve become used to having a regular income.

Ask yourself what is more important: Fulfilling your dreams or remaining financially comfortable? Luxuries are important, but intellectual stimulation is an even bigger priority for an intelligent person like you.

Scorpio (Oct24/Nov22) Sharing resources with a loved one can create problems. If you’re going to move in with your lover, it’s probably best to maintain three bank accounts: Yours, mine, and ours. It will be more important than you think to keep your money matters in good order.

It will make you feel more comfortable and avoid any unfortunate misunderstandings about cash that can so often undermine good relationships. It takes time to balance romance with finance.

Sagittarius (Nov23/Dec21) A new business or romantic partnership is causing trouble at home. Your relatives don’t approve of your new friend. You’re the type who can get along with people from all walks of life. Unfortunately, very few share this talent.

You’ll have to defend your partner, even at the risk of distancing yourself from your relatives. This won’t be permanent, but it will teach you an important lesson about loyalty. Cast your lot with those who want you to be happy.

Capricorn (Dec22/Jan20) Having a healthy lifestyle is important. Unfortunately, it might puzzle and perplex friends and relatives. They don’t seem to understand why you are trying to turn over a new leaf. It may be necessary to turn down invitations and avoid family functions that will put temptation your way.

At first, people will poke fun at your seemingly obsessive behaviour, but when they see the results they’ll sing a different tune. Stay strong, remain focused. Success will be yours.

Aquarius (Jan21/Feb19) Although you’ve got tremendous talent, you might not have the necessary resources to develop it properly. Going to art school or devoting hours to your favourite activity isn’t an option. You have to make money to pay your bills.

All is not lost. It is possible to create a way of living that will give you the element of freedom you need. You might not be able to live a lavish lifestyle but you will be able to grow your creative energy and that’s much more valuable.

Pisces (Feb20/Mar20) Home improvements will be delayed. You might run short of cash or lack the materials necessary to complete a job. If you’re waiting for an insurance payment, it may be a long time before you get your hands on this money. This could be a blessing in disguise.

Adapting to a new lifestyle will make you see that nothing is written in stone. You don’t have to tolerate an oppressive situation if it’s making you miserable. Do what makes you happy.

Aries (Mar21/Apr20) No matter how hard you try, you’re just not making the moves you need to succeed. Part of the problem are vague and unstructured people offering you their haphazard help and advice. You need someone who cuts right to the chase.

At the very least, you should find an ally who can present the information in an organised, comprehensible way. Patience, persistence and determination are the keys you need to unlock the doors of opportunity.

Taurus (Apr21/May21) A new job brings in good money, but you feel like something of an outcast. You’re an ultra practical employee who measures success by productivity. Your colleagues, on the other hand, seem content to sit around and waste time. Try not to pass judgement too quickly.

In time, you’ll realise why so many of them seem unmotivated. The good news is that you have the power to rally the troops and bring about fantastic results. Summon your leadership skills.


/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

#ifndef UNIVPLAN_SRC_UNIVPLAN_UNIVPLANBUILDER_UNIVPLANBUILDER_SORT_H_
#define UNIVPLAN_SRC_UNIVPLAN_UNIVPLANBUILDER_UNIVPLANBUILDER_SORT_H_

#include <vector>

#include "univplan/proto/universal-plan.pb.h"
#include "univplan/univplanbuilder/univplanbuilder-node.h"

namespace univplan {

class UnivPlanBuilderSort : public UnivPlanBuilderNode {
 public:
  UnivPlanBuilderSort();
  virtual ~UnivPlanBuilderSort() {}

  typedef std::unique_ptr<UnivPlanBuilderSort> uptr;

  UnivPlanBuilderPlanNodePoly::uptr ownPlanNode() override;

  void from(const UnivPlanPlanNodePoly &node) override;

  void setColIdx(const std::vector<int32_t> &nArray);
  void setSortFuncId(const std::vector<int32_t> &nArray);

  void setLimitOffset(UnivPlanBuilderExprTree::uptr limitOffset);
  void setLimitCount(UnivPlanBuilderExprTree::uptr limitCount);

 private:
  UnivPlanSort *ref;
  std::unique_ptr<UnivPlanSort> planNode;
};

}  // namespace univplan

#endif  // UNIVPLAN_SRC_UNIVPLAN_UNIVPLANBUILDER_UNIVPLANBUILDER_SORT_H_


Q:

Automating Facebook wall posts

I was wondering if you could help me - with PHP, I would like to have a system where after going through a like-gate, the customer uploads a file (I'm fine with doing this) and once they have done that the application will write a post on the users wall to tell them.
As a second stage to this, when in the admin tool for the app, the administrator puts a comment against the image that person has uploaded, we'd like the comment to go onto the customers wall - and this might be a week after.
Any help gratefully appreciated :)

A:

You will want to use the Graph API http://developers.facebook.com/docs/reference/api/
You will need permissions from the user: http://developers.facebook.com/docs/reference/api/permissions/ Specifically publish_stream.
Posting to someone's wall is easy.  From me/posts HTTP Post the correct parameters. See the post section of http://developers.facebook.com/docs/reference/api/user/
You can try it out here: http://developers.facebook.com/tools/explorer


If you have been charged with credit or debit card abuse you need to hire a criminal defense attorney with experience handling these cases. A Houston defense attorney explains the common charges related to credit card abuse

Criminal Defense Attorney: Defending the Rights of the Accused and the Incarcerated

In this article I will focus on the common ways that people are charged with credit card abuse. Credit card abuse is not about the amount of money spent on a credit or debit card. If a person uses the credit card to purchase five dollars of groceries or sixty dollars from an ATM machine they have committed a State Jail Felony and face a punishment range of six months to two years in state jail. Often, when we are first contacted by an accused they are confused because they believed it would be treated like theft and be a misdemeanor at worst and are surprised to learn the seriousness of the crime. If you have been charged with credit or debit card abuse you need to contact us at 713-651-1444.

The most common types of credit card abuse are:

Using someone else’s credit or debit card without permission

Using a credit card or debit card knowing that the card was expired, revoked or had been cancelled.

Using a fake debit or credit card

Steals a credit or debit card or uses a debit or credit they know to be stolen

Possess a debit or credit card without the consent of the cardholder with the intent to use it.

If you or someone you know has been accused of credit card abuse it is a serious matter and you need to contact an experienced criminal defense attorney. We will review the evidence of the case to determine a defensive strategy. At times in these cases people feel hopeless because of the types of evidence the state may have against them, but you should know that it always will work to your benefit to have a criminal defense attorney who will fight to defend your rights in order to obtain the best result possible. If you have been accused of credit card abuse in Harris County, Brazoria County, Galveston County, Montgomery County or any of the other surrounding counties please fill out our online contact form and an attorney will contact you shortly.


[Rearrangements of 11q in patients with hematologic malignancies].
The aim of this study was to investigate the rearrangement of MLL gene in bone marrow cells of patients with hematological malignancies with various types of 11q aberrations. These aberrations have been observed in acute lymphoblastic and acute myeloid leukemias as well as in myelodysplasias and lymphomas. Correlations of clinical characteristics, type of aberrations, diagnoses and survival of patients were evaluated. Using classical cytogenetic techniques we found 11q aberration in 17 patients with different hematological malignancies. FISH with dual color locus specific probe for MLL gene was used to confirm or exclude the rearrangement of this gene. Whole chromosome painting probes and multicolor FISH were performed for identification of chromosomes involved in complex translocations. Balanced rearrangements of 11q were found in 3 patients, in 14 patients unbalanced aberrations were found with rearrangement (4), deletion (4) and amplification (2) of MLL gene. In 7 patients no rearrangement of MLL gene was found. Correlation between clinical characteristics, type of aberrations, diagnoses and survival of patients was not significant, therefore further studies of larger cohort of patients are necessary to evaluate the prognostic value of 11q rearrangement.


Notice
how thick the down feathers are. They look more like fur than
feathers.

As the outer
feathers grow in, this down will be covered up by "contour
feathers"--the feathers that will give it that distinctive
eagle appearance. It will take 3 or 4 years for this bird to
grow white feathers on its head and tail.

Do you see
a little bulge on the bird's chest, on its right side?

That is
where the bird's "crop" is. The crop is like a little
sack that sticks out of the esophagus-the tube from the mouth
and throat down into the stomach.

An
eagle can swallow huge chunks of food, even bigger
than its
stomach can hold because the extra food goes into its crop.
Little by little, as the bird's stomach empties, more food
goes into it from the crop.

Looks like
this bird had a good breakfast!

Journaling
Questions

Baby
birds are hatched with almost no feathers. How do they keep warm
before they grow these downy feathers?

Why do
birds need crops? Do you think they eat 3 meals a day like humans
do?


Rotavirus cross-species pathogenicity: molecular characterization of a bovine rotavirus pathogenic for pigs.
Rotaviruses which cause disease in heterologous animal species have been reported but the molecular basis of cross-species infectivity and disease is not established. We report the molecular characterization of a cloned rotavirus, PP-1, which was originally obtained from cattle and which had been biologically characterized in vivo in two target animal species, gnotobiotic pigs and calves. In pigs, PP-1 caused severe clinical disease but in experimental calves it replicated subclinically. PP-1 was characterized as a G3 reassortant with a porcine VP4 and NSP4 but a bovine NSP1. The PP-1 VP4 had 96 to 97% deduced amino acid identity to P[7] porcine rotaviruses and P[7] specificity was confirmed with VP4-specific monoclonal antibodies. Sequence analysis of the PP-1 NSP1 showed 94 to 99.6% deduced amino acid identity to bovine rotaviruses but the NSP4 protein had 94 to 98% identity to the NSP4 genotype B porcine rotaviruses. G-typing PCR initially classified PP-1 as a G10 rotavirus but sequence analysis revealed 92 to 96% identity of the PP-1 VP7 with porcine, simian, and human G3 rotaviruses. These results, combined with the in vivo properties of PP-1 in the two target species, supported the concept that species-specific VP4 and NSP4, but not NSP1, are required to induce rotavirus disease, at least in calves and pigs. The results illustrate experimentally that rotaviruses circulating in one animal species can pose a risk to another by the emergence of a pathogenic reassortant rotavirus under appropriate conditions.


The hours before this year’s NBA trade deadline were expected to be nerve-racking, filled with news of the next high-profile player to crisscross the country for a new basketball home. In reality, the buildup on Thursday was far from tense and the trades were marginal.

Rumors outweighed teams' ability to complete deals during the final moments in which they were allowed to make trades. The names included in potential moves were endless. For one reason or another, those players weren't traded.

Five players in particular were deeply involved in rumors heading into Thursday’s 3 p.m. ET deadline, only to come out on the other side with the same team. We delve into the reasons teams showed interest and examine whether the players were better served by staying put.

Eric Bledsoe, G, Los Angeles Clippers: Playing behind Chris Paul has its perks. Bledsoe learned that in the days leading to the deadline. SN's Sean Deveney reported earlier this month that Bledsoe was mentioned as the key piece in a trade for the Boston Celtics’ Kevin Garnett. Bledsoe later was later linked to the Utah Jazz.

The rumors were not based on the Clippers’ willingness to part with their third-year guard. The interest begins with Bledsoe’s prodigious talent and freakish athletic ability, and doesn’t end there. In a role that limits him to 21.8 minutes, Bledsoe shows glimpses of what he could become. He is the engine of one of the NBA’s best benches and displays an ability to run a team that wasn’t evident when he entered the league in 2010. One of those perks of playing with Paul every day.

Bledsoe will be a starting point guard in the NBA. That's a certainty. The only questions are when and where. He'll be in the final year of his rookie deal next season; at this point, he essentially is Paul insurance. If Paul decides to leave as a free agent this offseason, the Clippers will have Bledsoe for the future. If Paul returns, the Clippers will have Bledsoe for at least one more season. Where he would go from there is yet to be seen, but he would be better for playing another season with Paul.

Tyreke Evans, G, Sacramento Kings: No player needs a do-over quite like Evans. He entered the NBA in 2009 as one of the elite members of John Calipari’s point guard factory. He lived up to every expectation in his first season, with averages of 20 points, five rebounds and five assists. Only two other players have done that as rookies: Michael Jordan and LeBron James.

Evans could use a change of scenery. Playing in a crowded backcourt with more scorers than point guards, his averages have dipped each of the past three seasons. He’s one of several players from the '09 draft class who can become free agents this offseason. Perhaps he can make good on that early promise in another uniform.

Kris Humphries, F, Brooklyn Nets: Because he recently signed a two-year, $24 million contract, Humphries is an interesting case. He earned that deal with a career-best 13.8 points and 11.0 rebounds in 2011-12. The Nets never intended to keep him, though. He was brought back as a future trade asset, according to The New York Times’ Howard Beck.

That leads one to wonder why he's still on the Nets' roster. Humphries was the subject of a rumored trade for Charlotte Bobcats guard Ben Gordon. The move could have helped bolster Brooklyn's 3-point shooting; the Nets currently shoot 44.1 percent from the field and 35.5 percent from 3, middle-of-the-pack numbers for a team with hopes of a deep playoff run.

When things ultimately fell through, the Bobcats moved on to acquire Orlando Magic big man Josh McRoberts for Hakim Warrick. For one more season at least, Humphries will play for a team that would rather ship him elsewhere.

Al Jefferson, C; Paul Millsap, F, Utah Jazz: The Jazz were expected to trade one of these big men. Each can become a free agent at the end of the season, and Utah could potentially lose both, the argument went. Which player should be moved was a source of debate; Millsap is considered the more efficient player, but Jefferson is the rare big man who can create his own shot.

As the trade deadline passed, the rebuilding Jazz hadn’t unloaded either of its 28-year-old stars. Millsap was mentioned in a possible deal for Bledsoe that would fill a void at point guard. Jefferson, who has been traded twice in his career, was reported to have drawn interest from the Phoenix Suns and San Antonio Spurs.

Jazz president Randy Rigby has Derrick Favors and Enes Kanter in waiting but said he is pleased with where the team is for now. Optimism aside, the Jazz aren't built to win as constructed. Millsap and Jefferson, who are in their prime years, could help contenders if they move on in the offseason.


Leonard Annebula

The Leonard Annebula is an American high-wing, single-seat FAI Standard Class  glider designed by Bob Leonard of Wichita, Kansas, based on the Hall Cherokee II.

Design and development
The Annebula design is derived from the Cherokee II, but while retaining the basic Cherokee structure, Leonard incorporated many changes and new features. The aircraft is built from wood and fiberglass, with aircraft fabric covering.

The Annebula uses a completely new single-spar  wing with Prue-type trailing edge dive brakes. The airfoil is a NACA laminar flow type of varying section over the span, starting at the wing root as a NACA 64(3)-618, becoming a NACA 64(3)-615 by mid-span and then a NACA 4412 at the tip. The wing is constructed from plywood and fiberglass and is responsible for the Annebula's performance increase from the Cherokee II's 23:1 glide ratio to 31.5:1. The Annebula also has more span, wing loading and a higher aspect ratio than the Cherokee II.

The fuselage was also extensively redesigned, with a new shaped nose, a new vertical fin with twice the area and a new fuselage shape aft of the wing. Landing gear is a monowheel.

Only one Annebula was built.

Operational history
Completed in 1967, the Annebula is registered as a US experimental amateur-built.

By 1983 the sole example had flown over 700 hours and had been used to complete Diamond badge distance and altitude flights. It also once held the Kansas state records for speed attained in ,  and  triangles, goal distance, altitude and altitude gain. Aside from the designer himself, Leonard's three sons have also flown the aircraft.

Specifications (Annebula)

See also

References

Category:1960s United States sailplanes