Showing posts with label standards. Show all posts
Showing posts with label standards. Show all posts

2012-07-25

Mac gets some optional Sandboxing

6.2: news.cyb/dev.mac/sandboxes
Apple brings sandboxing to the desktop:
. most PCs have not been into sandboxing
[because backward compatability was an issue;
smartphone platforms are more recent inventions,
so sandboxing is an obvious good .]
. to access resources within a sandbox,
apps must request “entitlements” [aka, capabilities.]
Android apps must ask the user for permissions
and then the OS constrains the app
to the allowed permissions .
[ but Android apps may be all-or-nothing:
either the user accepts all the requests,
or else the app fails to be usable at all .]
Apple’s iOS sandboxing doesn’t involve the user,
as all permissions are handled by
Apple's App Store evaluators .
[7.25:. in order to be accepted into the app store,
developers must divide their app into modules
so as to more easily explain why each part
needs a particular set of entitlements .][7.20:
Apple decides for the user,
what entitlements are appropriate,
not only for the whole app,
but more smartly, for each of its modules .]
. iOS users can still control certain entitlements:
(eg, opening a list of recent files
or saving documents elsewhere in the file system).

Concerns from Developers:

# no more AppleScript:
[7.20:
AppleScript is a programming language
meant to allow the user to reuse apps
by having scripts make calls to apps .
. if an app wants to reuse other apps,
then it too can use AppleScript
to make calls to other apps;
however, in sandboxing this can't be done,
because,
when an app is entitled to AppleScript
it's entitled to anything AppleScript can do
-- which is basically anything!
. if apps are instead designed to be
reused directly by other apps
then sandboxed apps can still be
entitled to use particular other apps
without having to give them access to
the wide world of AppleScript .]
# no more file system management: [7.20:
. Apple sandboxing asks the user
for each and every file access;
so, apps that need access to many files
or that need to work in the background
are not considered sandboxable;
nevertheless, sandboxing of the file system
could work like vmware's shared folders:
. vmware lets you run an OS in a sandbox
as a virtual machine (vm);
and then gives the vm {read, write} access
to just the folders the user requests
(Virtualbox has a similar feature).
. you can divide your file system by sensitivity levels;
eg, if the sandboxed app has access to the web,
then give it entitlements should be
read-only access to non-sensitives,
and write access to a downloads folder .
. letting sandboxes share folders
is important to generativity .]
. see Jonathan Zittrain's Chapter 7 of
The Future of the Internet and How to Stop It .

2012-07-19

Python with GUI on Mac

6.30: summary:
. after seeing David Mertz's
Text Processing in Python/SECTION 3
/Platform-Specific Operations,
I'm seeing Python has a Carbon API,
which you'll now see is deprecated,
so, I wondered if there's a Cocoa API now .

. other than extending and embedding C,
python is not really supporting cocoa:
. the latest python version does offer
platform-specific modules
but only for Windows and Unix
(unix does includes mac and any
Cocoa binaries that are runnable from the shell,
so our access core services
is by feeding text to a shell?! ).

. the best idea I found was ObjP:
-- much less complex than PyObjC --
it's a code generator that helps with both
embedding python into obj'c,
and extending python with C
from which you can use obj'c .
. if you'd still rather use PyObjC,
there is support for it in xcode 4 .
(see Xcode4CocoaPythonTemplates)

. a future idea I found from this search
was a python equivalent to Apple's MacRuby:
instead of being a bridge to cocoa,
it would have Python implemented in Cocoa
-- just like Jython is impl'd in Java . Mython ?

6.30: AppleScriptable or stay with Python?:
. mac's vision for scriptable app's
revolves around the use of AppleScriptObjC,
which expects you to write your tools in obj'c,
and then compose tools using AppleScript .
. obj'c can compile and run AppleScripts
by using NSAppleScript .
. Python can do the same with osascript
-- call AppleScripts from python --
or
NSAppleScript -- build & run it in Python .
. see Designing for Scriptability
about ensuring your interface language
fits in with AppleScript ...
and before you give up, consider this:
many of your users
might rather reuse your code with
Apple's Automater or Applescript Editor
than with python's tools .

2010-05-18

in's and out's of Ada programming

4.8: todo.co.addn/dev.ada/ask about c infiltration:
. from looking at the F35 project,
it seems like c has won the war with Ada;
and, that got me realizing that
much of what I like about Ada
could be transferred to c .
. the essential Ada features could be introduced
just like the enum types were;
and,
perhaps some version could try
the same route that c++ did:
"(this is a superset);
the industry really went wild for that .

4.15: Atego’s Aonix ObjectAda:
Military Embedded Systems`Editor's Choice award:
Atego’s Aonix ObjectAda Real-Time®
for Windows
targeting Intel x86 architectures
running Wind River’s VxWorks RTOS
Atego is the recent merger between
Artisan Software Tools and Aonix.
mission-critical systems
safety-critical systems
software development tools;
allows all teams
-- architecture, systems, software
and hardware engineering --
to [Work as One]SM
- from concept through to
delivery, maintenance and support.

Artisan Software Tools
. the world’s largest independent supplier of
industrial-grade, collaborative modeling tools
for complex, mission and safety-critical systems and software
Artisan Studio®, supports OMG SysML™, UML®
and Architectural Frameworks.

Aonix ObjectAda Real-Time
consists of a fully compliant
ACATS 2.5 Ada 95 compiler .
. Aonix ObjectAda for VxWorks leverages
the Eclipse-based Wind River Workbench .
Aonix PERC® secure java vm for embedded systems .
4.30: web.addn/dev.ada/online studies:
. searched site:faculty.cs.wwu.edu/reedyc/CS141_Spring_2005
and site:faculty.cs.wwu.edu ada
for ada study materials .

2010-04-30

cross-platform means a deep binding

4.11: news.adda/cross-platform means a deep binding:

summary:
. Apple is disallowing the use of code
that uses an intermediary translation
or compatibility layer .
. the important thing is that when intelligently done,
intermediary translations are no different than
people translating pseudocode to the target language .
. you'll know when it's intelligent
because they won't be able to enforce it .

rationale:
. this rule is just being fair to
dev's that spend the extra time
to get their code designed for efficiency;
Apple is acknowledging how important it is
to be first to market with an idea,
and if people are creating virtual machines
this will make it easy to be first to market
but at the expense of keeping the app' efficient .
. the xcode system will generate code that follows certain rules,
and it would not be easy to quality-check the app'
unless the code is following those rules .

rationale @ daringfireball.net
. what Apple does not want
is for some other company to establish a
de facto standard software platform
on top of Cocoa Touch.
Consider a world where some other company’s
cross-platform toolkit proved wildly popular.
Then Apple releases major new features to iPhone OS,
and that other company’s toolkit is slow to adopt them.
At that point, it’s the other company
that controls when third-party apps
can make use of these features.

co.android alerts dev's to Apple's major change .

daringfireball.net 8 April 2010
. section 3.3.1 of the iPhone Developer Program License Agreement:
Applications may only use Documented APIs
in the manner prescribed by Apple
and must not use or call any private APIs.
. the 4.0 SDK beta now adds:
Applications must be originally written in
Objective-C, C, C++, or JavaScript (iPhone OS WebKit engine)
and only code written in C, C++, and Objective-C
may compile and directly link against the Documented APIs
(e.g., Applications that link to Documented APIs
through an intermediary translation
or compatibility layer or tool
are prohibited).
Steve Jobs explains:
“intermediate layers between platform and dev'
ultimately produces sub-standard app's
and hinders the progress of the platform.”
a response:
. it doesn’t make sense to limit
source-to-source conversion tools like Unity3D
--
unity3d creates a complete XCode project that just works!
. using iPhone Remote,
you can use an actual iPhone or iPod Touch device
to view and test your game live,
right from the Unity Editor. [using javascript on the web]
--
Unity3d's CEO:
. In the ancient days of the App Store (July 2008),
Apple very late changed the kernel to disallow
JIT (just-in-time) compilation.
What we did instead was spend several months
changing Mono to compile scripts
AOT (ahead of time) instead
(this is why some dynamic constructs in our JavaScript
doesn’t work on the iPhone).
my response:
. if Unity3D is disallowed,
at least they are ahead with a source-to-source tool;
now all they have to do is make it a deep binding:
convert their graphics library functions calls
directly into cocoa graphics calls .

4.29:
. the mac#iphone expects code to follow the idioms,
and this is achieved by very intelligent transforms:
adda code -> mac idioms .
. each platform needs its own adda backend;
adda's oop system should not be concerned with
having a shallow binding to various other oop systems .
. adda's front end should turn human ideas into
expression trees that can be analyzed by computer,
rather than using the idioms of a given platform;
and then,
adda's backend for the mac#iphone
should be able to translate human ideas to
iphone`particulars
-- the same way a programmer does
(this is the sort of work lisp was invented for).

4.30: my response after reviewing the issue:

Ludd·ite:
Pronunciation: \App'll\
Function: noun
Etymology: perhaps from Ned Ludd, 18th century Leicestershire workman
who destroyed a knitting frame
Date: 1811
. one of a group of early 19th century English workmen
destroying laborsaving machinery as a protest;
broadly : one who is opposed to especially technological change .
— Luddite adjective .

Air Vehicle c coding standards compete with Ada

4.8: news.adda/av c++ coding standards:

stn vol3#1 p36/c can be safe too!
. while Ada is the technically superior
and more robust language compared to C,
-- where anything can be type-cast into anything,
type-casting was a problem with
hiring college students for Ada coding:
it was seen as an unmarketable experience base .
. reliability issues with C
have been due only to
the way in which it was used;
however,
another possible problem with C
comes at the time of inspection,
when some code reviewers may find Ada
to be more self-documenting .

. the auto industry had a safe-subset standard for c;
and the F-22 used static code analyzer (SCA) tools
to enforce restriction to a safe-subset of Ada 83 .
. with the same idea in mind,
the F-35 Joint Strike Fighter found a safe subset
of both C and C++ for the safety critical systems
developed by the team of Lockheed Martin Aeronautics,
Northrop Grumman Aerospace, BAE Systems
and the F-35 supplier team.
. the F-16 had safety-critical software
that was all assembly coded,
and some of their team helped the F-35 team with
deploying a safe subset of c
-- both c and asm are similarly low-level lang's .

. an SCA tool's analyzer is like an observer
in a pair programming operation:
a much faster way of getting up to speed
than learning a new language like Ada .
--. after reading that,
I wondered how many C cowboys from college
were still banging their head on restricted C ?
(either the 216 new rules in the form of compiler spit,
or a 140 more pages of manual ...).

air vehicle c++ coding standards (doc) (google's cache)
. less-critical portions of Air Vehicle (AV) code
will be developed in C++
(safety-critical portions are to be in C);
the air vehicle c++ coding standards
provide safe, reliable, testable, and maintainable
C++ programming .
. these rules are required for all
Air Vehicle C++ development
and recommended for any
non-Air Vehicle C++ development.
Vehicle Systems Safety Critical Coding Standards for C,
is based on:
MISRA Guidelines (Motor Industry Software Reliability Assoc)
For The Use Of The C Language In Vehicle Based Software,
but is providing a more comprehensive set
of language restrictions
applied more uniformly across
all Vehicle Systems safety critical applications.
. AV Coding Standards build on the
Vehicle Systems Safety Critical Coding Standards for C,
by including:
C++ language-specific guidelines and standards.

. unit testing with full structural coverage
is typically done only at the source level
for non-critical code .
. but since compilation to object code
will result in some structural changes
as high-level control structures
are translated to a maze of goto's,
safety-critical code is also
unit-tested at the object level .
. that precaution has even found
some compiler bugs!

. it may seem more efficient to do Ada's practice
of validating one compiler per platform,
rather than unit-testing every translation;
in fact,
Ada compiler validation
has been for language enforcement only:
any safety-critical code for
military, aviation, [or medical?]
is routinely unit-tested at the object level
regardless of what language (Ada, C, ...)
the compiler was translating .

. from seeing how things went on the F-35 project,
the F-22 maint crew, when switching to new cpu's,
decided to convert their code base from Ada 83 to C .

soon-to-be-Dr. Robb at lockheedmartin.com
--. watch the F-35 do its first vertical landing(video) .

2010-02-28

software engineering officially defined

2.16: web.adds/sw.eng/official definitions:

. ABET (Accreditation Board for Engineering and Technology)
is the recognized U.S. accreditor of college and university programs
in applied science, computing, engineering, and technology.
. it is owned an operated by several pro' soc's;
most are amer'eng'ing, but some are internat':
INCOSE (internat' council on sys' eng')
started out as an amer'group:
National Council on Systems Engineering (NCOSE)
. The purpose of a Systems Engineering society
was to "(address the apparent shortage of
qualified engineers who could think in terms of
a total system — rather than just a specific discipline.)
. sys'eng'ing includes Software engineering

"(the application of computer sciences, project management,
and other techniques to create computer software.
While it started out as a mathematical discipline,
software engineering now has the characteristics of
an engineering discipline.)

Additionally, many online advanced degrees in SE have appeared
such as the MS in SE at California State University, Fullerton.

Software Engineering 2004 (SE2004) Curriculum std

"( The Software Engineering 2004 (SE2004)
is a document that provides recommendations for
undergraduate education in software engineering.
Its development was sponsored by the acm
and the IEEE Computer Society.

Important components of SE2004 include:

the SE Education Knowledge,
a list of topics that all graduates should know,
as well as a set of guidelines for implementing curricula
and a set of proposed courses.

SWEBOK (the SE BOdy of Knowledge)

. SWEBOK, which has become an ISO standard
describes the body of knowledge covered by a software engineer
The SWEBOK also defines disciplines related to software engineering
* Computer engineering
* Computer science
* Management
* Mathematics
* Quality management
* Software ergonomics (Cognitive ergonomics)
* Systems engineering
The difference from (SE2004, CCSE) is that
whereas SWEBOK defines
the software engineering knowledge that practitioners should have
after four years of practice,
the SE2004 (pdf) defines the knowledge that
an undergraduate SE grad should have
(including knowledge of mathematics, general engineering principles,
and other related areas).

swebok def of sw.eng:

The IEEE Computer Society defines SE as:
(1)
The application of a systematic, disciplined, quantifiable approach
to the development, operation, and maintenance of software;
that is, the application of engineering to software.
(2)
"The legitimization of professional authority
involves three distinctive claims:
first,
that the knowledge and competence of the professional
have been validated by a community of his or her peers;
second,
that this consensually validated knowledge rests on
rational, scientific grounds;
and third,
that the professional's judgment and advice
are oriented toward a set of substantive values,
such as [linguistically programmed automation]
These aspects of legitimacy correspond to the kinds of attributes
— collegial, cognitive, and moral —
usually embodied in the term "profession."

CHARACTERISTICS OF A PROFESSION?

Gary Ford and Norman Gibbs studied several recognized professions,
including medicine, law, engineering, and accounting.
They concluded that an engineering profession is characterized by
several components:
. an educational curriculum accreditation
. Registration of fitness to practice
via voluntary certification or mandatory licensing
. continuing education
things outside the swebok scope:
Communal support via a society [or union]
codes of ethics

Without such a consensus on a Body of Knowledge
no licensing examination can be validated,
no curriculum can prepare an individual for an examination,
and no criteria can be formulated for accrediting a curriculum.

OBJECTIVES OF THE SWEBOK PROJECT?
1. To promote a consistent view of software engineering worldwide
2. define how it differs from other disciplines
such as computer science, project management,
computer engineering, and mathematics
3. To characterize the contents of the discipline
4. To provide a topical access to it
5. To provide a foundation for curriculum development
and for individual certification and licensing material

2009-12-26

12pm, 12am


6.8: engl/1200am:
. 12:00 has really got 2names: {0pm, 1200am}, ...
but they are calling noon 12pm .
[11.29:
. the sequences for 2 versions are
am-pm: 11:59am, 12pm, 1pm ... 11:59pm, 12am, ...
24-hr: 11:59, 12, 13, ... 23:59, 0, ...
. it should start at 0,
so that when transitioning from am to pm, at noon,
the noon should either stay AM until the amount down-cycles;
ie, 11:59am, 12:59am, 1:00 pm;
or, if wanting to call noon pm,
then don't start the clock with 12, use 0 instead: 11:59am, 0:00pm
11.30:
. there is a confusion of sequence,
because am is preceded by pm,
but for each of those intervals,
they start with a high number, 12;
and then bump down to 1, before starting upward again .
. the way it makes sense for clock`high to have both {0, 12} values
is noticing that an hour after 11 is a 12th hour;
ie, you might want to have a 1, 2,.. number of hours gone by,
rather than know the time point in reals: 0, 0.01, ... .
web"how biz makes sense of time:
A.M.a.m. Ante Meridiem Latin = "before midday" before noon
PM p.m. Post Meridiem Latin = "after midday" after noon
* Terms 12 a.m. and 12 p.m. cause confusion
as neither the "12 am" nor the "12 pm" designation is technically correct.
* It advisable to use 12 noon and 12 midnight where clarity is required.
* To avoid ambiguity, airlines, railroads, and insurance companies use
12:01am for an event beginning the day,
11:59pm for ending it.
]